Перейти к содержимому

IMPORTANT

Статус: Поддерживается
Минимальная версия: 1.4
Последнее обновление: 2026-07-22

Горизонтальный компас, миникарта и новые возможности motion icon для мини-карты

Обзор

Фича задает навигационный блок HUD: миникарта или горизонтальный компас. Motion icon работает рядом с этим блоком и показывает состояние движения и заметности актора.

Compass bar является опциональным UI-элементом. Пока он не активирован через SetNavigationMode(true) или устаревший boot-hint UseCompassBar, он не создается, не грузит compass_bar.xml и не влияет на миникарту, motion icon и PDA online.

Переключение между миникартой и compass bar выполняется в runtime без перезагрузки уровня.

Режим по умолчанию и runtime-переключение

  1. Движковый дефолт: миникарта.
  2. UseCompassBar в configs/engine_external.ltx (deprecated) задает boot-time hint для модов без Lua. Рекомендуется использовать Lua API или IXR Options.
  3. hud_minimap управляет видимостью активного навигационного блока.
  4. Runtime-переключение: ActorMenu.get_maingame():SetNavigationMode(bool), где true - compass bar, false - миникарта.
  5. Сохранение выбора режима в save/user.ltx не реализовано.

Lua API

lua
local maingame = ActorMenu.get_maingame()
if maingame then
    maingame:SetNavigationMode(true)   -- compass bar (lazy init)
    maingame:SetNavigationMode(false)  -- minimap
    local isCompass = maingame:IsCompassBarMode()
end

Доступны readonly-поля UIZoneMap и UICompassBar на CUIMainIngameWnd. UICompassBar может быть nil, пока compass bar не активирован.

Поле UICompassBar.visible синхронизировано с Show(): скрытый компас не участвует в child-walk Update.

Контракт единиц compass_bar.xml

УзелАтрибутыЕдиницыПримечание
compass_barx y width heightдоли родителя (UI base)всегда relative, без эвристики <= 1
strip / cardinal_pointsx y width heightдоли родителяstrip хранит _stripRel*, cardinals - доли clip-окна
strip:texturedraw_scale_x/y или draw_scale; legacy width/heightscale относительно clip / nativeне atlas crop
strip:texturedraw_offset_x/y; legacy x/ypx offset отрисовки
striptex_widthpx логической окружностипри сильном расхождении с atlas width - warning в лог
marker кардиналаwidth/height<= 1 relative к host, иначе px; offset_y px
active_targetwindow width/height/xpx
active_targetactive_offset_y / offset_y / legacy ypx вертикальный offset контейнераприоритет: active_offset_y > offset_y > y
altitude_arrowaltitude_deadzoneметрыoverride значения контейнера active_target
distance_text / arrows / markerx y width heightpx

Пример HD HUD (без правок XML): strip width="0.88", texture width="0.9" height="0.22" y="9", tex_width="1024", cardinal tick width="4", active_target y="0" как offset.

Атлас и компоненты compass_bar.xml

Корневой узел compass_bar

АтрибутНазначениеDefault
fov_angleУгол обзора полосы в градусах45
fade_in_speedСкорость появления меток6
fade_out_speedСкорость исчезновения меток5
min_visible_alphaПорог видимости alpha0.01
fov_fade_innerВнутренняя граница fade по краям FOV0.30
fov_fade_outerВнешняя граница fade по краям FOV0.70
fov_fade_edge_loНижний край нормализованной зоны fade0.05
fov_fade_edge_hiВерхний край нормализованной зоны fade0.95

background

Цель: фон и рамка панели.

strip

Цель: лента направлений.
Логика: движок сдвигает UV в зависимости от поворота камеры.

strip:texture

Цель: scale и offset отрисовки dial (не crop атласа).

АтрибутНазначениеDefault
draw_scale / draw_scale_x / draw_scale_yявный scalelegacy width/height
draw_offset_x / draw_offset_yявный offset pxlegacy x/y
width / height / x / ylegacy aliases1 / 1 / 0 / 0

tex_width

Цель: логическая ширина шкалы в пикселях.
Если задано неверно, скорость движения меток не совпадает с углом обзора.

tex_loop

Цель: циклическая прокрутка.
1 бесшовный круг, 0 зажим по краям.

cardinal_points

Цель: текстовые подписи направлений.

АтрибутНазначениеDefault
fake_target_distanceДистанция для проекции N/E/S/W1000

spots

АтрибутНазначениеDefault
collect_intervalИнтервал сбора map spots в секундах0.1
showПоказывать spots на полосе1

active_target

Цель: маркер выбранной цели, дистанция, вертикальное отклонение.

АтрибутНазначениеDefault
active_offset_y / offset_y / yвертикальный offset контейнера, px0
altitude_deadzoneпорог высоты для стрелки1.8
paddingотступ от краев strip8

distance_text

АтрибутНазначениеDefault
format / text_formatФормат sprintf дистанции"%.0f m"
st_formatID строки из string table вместо format-

Motion icon

  1. state_normal, state_crouch, state_creep, state_climb, state_run, state_sprint показывают текущий тип движения.
  2. power_progress показывает выносливость.
  3. luminosity_overlay и noise_overlay накладывают визуальный шум и затемнение.
  4. Оверлеи luminosity/noise создаются для режима миникарты и скрываются в режиме compass bar. При возврате на миникарту оверлеи восстанавливаются без пересоздания HUD.

Примеры

Сценарий 1: Активация через Lua (рекомендуется)

lua
ActorMenu.get_maingame():SetNavigationMode(true)

Сценарий 2: Legacy boot-hint через DLTX (deprecated)

ini
[ui]
UseCompassBar = true

Смежный материал: обзор UI.

Опубликовано под лицензией MIT.