OGSR / OGSR-Engine

OGSR Project - Evolution of X-Ray Engine for S.T.A.L.K.E.R.: Shadow of Chernobyl
https://discord.gg/Q6QDxbNcfR
Other
471 stars 88 forks source link

Фишки UI #375

Open xrModder opened 2 years ago

xrModder commented 2 years ago

Список будет дополняться.

I-AmDead commented 2 years ago
  • добавить "серединный" цвет mid_color (middle color) для progress-баров (только min_color и max_color).

Это точно есть...

xrModder commented 2 years ago

Есть такой вопрос, возможно идиотский: зачем везде сунуть get_current_kx() если можно добавить его в самом начале, в ui_base.h? Типа один раз сразу исправляем ширину UI элементов в ui_base.h с помощью get_current_kx().

xrSimpodin commented 2 years ago

Так исторически сложилось как бы.

xrModder commented 2 years ago

Некоторые найденные мной проблемы:

  1. В оконном режиме невозможно двигать курсор на вверхний левый угол, застревает около него;
  2. В КПК при нажатии на "Центр на Меченом" на карте позиция актёра смещается из центра по x, причём чем дальше от центра локации, тем больше;
  3. Некорректно отображается статическая анимация lanim_xform если есть флаг heading (вращение);
  4. Стрелка цели на миникарте вращается по овалу (для просмотра спасти Шустрого, взять спецзадание у Сидоровича, подойти к переходу на Свалку и вращаться).
xrModder commented 2 years ago
  1. Некорректно отображается статическая анимация 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()));
  1. Стрелка цели на миникарте вращается по овалу (для просмотра спасти Шустрого, взять спецзадание у Сидоровича, подойти к переходу на Свалку и вращаться).

Решение: https://github.com/OGSR/OGSR-Engine/issues/352#issuecomment-957118517

xrModder commented 2 years ago

https://github.com/OGSR/OGSR-Engine/blob/7ab5bb7bb2caf2b6dcd1529a8d39c3191847b530/ogsr_engine/xrGame/ui_base.cpp#L269

Тут явно забыли добавить float перед (Device.dwWidth).

xrModder commented 2 years ago

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);
VovaMiller commented 2 years ago

Добавлю от себя замечание по теме. На версии 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() );
    }