OGSR-Engine
OGSR-Engine copied to clipboard
Фишки UI
- [x] добавить возможность переносить текст по ширине (как justify в css);
- [ ] добавить круглую миникарту (как в ЗП);
- [ ] добавить "туман войны" для карты;
- [x] восстановить альфа-канал для видеороликов;
- [ ] добавить "серединный" цвет mid_color (middle color) для progress-баров (только min_color и max_color).
Список будет дополняться.
- добавить "серединный" цвет mid_color (middle color) для progress-баров (только min_color и max_color).
Это точно есть...
Есть такой вопрос, возможно идиотский: зачем везде сунуть get_current_kx() если можно добавить его в самом начале, в ui_base.h
? Типа один раз сразу исправляем ширину UI элементов в ui_base.h
с помощью get_current_kx().
Так исторически сложилось как бы.
Некоторые найденные мной проблемы:
- В оконном режиме невозможно двигать курсор на вверхний левый угол, застревает около него;
- В КПК при нажатии на "Центр на Меченом" на карте позиция актёра смещается из центра по
x
, причём чем дальше от центра локации, тем больше; - Некорректно отображается статическая анимация
lanim_xform
если есть флагheading
(вращение); - Стрелка цели на миникарте вращается по овалу (для просмотра спасти Шустрого, взять спецзадание у Сидоровича, подойти к переходу на Свалку и вращаться).
- Некорректно отображается статическая анимация
lanim_xform
если есть флагheading
(вращение);
Решение: откатить все правки к lanim_xform
и в void CUIStatic::Update()
изменить код:
SetWndSize (Fvector2().set(m_xxxRect.width(),m_xxxRect.height()));
На:
SetWndSize (Fvector2().set(m_xxxRect.width()*UI()->get_current_kx(),m_xxxRect.height()));
- Стрелка цели на миникарте вращается по овалу (для просмотра спасти Шустрого, взять спецзадание у Сидоровича, подойти к переходу на Свалку и вращаться).
Решение: https://github.com/OGSR/OGSR-Engine/issues/352#issuecomment-957118517
https://github.com/OGSR/OGSR-Engine/blob/7ab5bb7bb2caf2b6dcd1529a8d39c3191847b530/ogsr_engine/xrGame/ui_base.cpp#L269
Тут явно забыли добавить float
перед (Device.dwWidth)
.
2. В КПК при нажатии на "Центр на Меченом" на карте позиция актёра смещается из центра по
x
, причём чем дальше от центра локации, тем больше;
Не знаю зачем тут два ConvertRealToLocalNoTransform
:
https://github.com/OGSR/OGSR-Engine/blob/4c6a8bcc24319ecd08d1208c9af6e52657872a2d/ogsr_engine/xrGame/ui/UIMap.h#L25-L26
Но для исправление вышеописанной проблемы удалить первый ConvertRealToLocalNoTransform
, потом добавить (как в ЗП) BoundRect()
в двух местах:
https://github.com/OGSR/OGSR-Engine/blob/4c6a8bcc24319ecd08d1208c9af6e52657872a2d/ogsr_engine/xrGame/ui/UIMap.cpp#L92 https://github.com/OGSR/OGSR-Engine/blob/4c6a8bcc24319ecd08d1208c9af6e52657872a2d/ogsr_engine/xrGame/ui/UIMap.cpp#L193
Потом вместо: https://github.com/OGSR/OGSR-Engine/blob/4c6a8bcc24319ecd08d1208c9af6e52657872a2d/ogsr_engine/xrGame/ui/UIMapWnd.cpp#L323 Написать:
m_tgtCenter = m->ConvertRealToLocal(pos, true);
Добавлю от себя замечание по теме. На версии 2.1.386 (не знаю, было ли такое раньше) метки на карте и мини-карте с heading="1" (в оригинальном ТЧ это стрелка на метку активного задания и красный сектор, показывающий направление недавнего хита) были приплюснутыми на широкоформатном разрешении.
https://github.com/OGSR/OGSR-Engine/blob/bcae676c66960da0f71310ed8c18942e136a2d6e/ogsr_engine/xrGame/map_spot.cpp#L29 Если эту строчку обернуть в условие, то проблемы не будет.
if (!Heading()) {
SetWidth(GetWidth() * UI()->get_current_kx() );
}