# SuperHUD

Сделан на основе документации к [CPMA SuperHud](https://playmorepromode.com/guides/cpma-super-hud), но отличается от него.

Конфигурация худа сохранена в текстовых файлах, расположенных в каталоге `./osp/hud/`. Файлы должны иметь расширение `.cfg`.

Команды для управления: `cg_shud, ch_file, reloadHUD`, подробнее в `commands.md`.


## Синтаксис

Синтаксис аналогичен синтаксису CPMA:

```

ELEMENT
{
    ELEMENT_COMMAND VALUE #комментарий
    ELEMENT_COMMAND VALUE
}

# комментарий
ELEMENT { ELEMENT_COMMAND VALUE; ELEMENT_COMMAND VALUE; }

```

## Элементы

Элемент - базовая часть худа. Элементы отрисовываются в порядке указанном в таблице. 

| Элемент                       | Краткое описание                                             |
|-------------------------------|--------------------------------------------------------------|
| !DEFAULT                      | Дефолтные команды.                                           |
| exec / execute                | Выполнение консольных команд при загрузке конфига.           |
| grid                          | Вывод сетка для выравнивания                                 |
| PreDecorate                   | Отрисовка разделителей и т.п.                                |
| AmmoMessage                   | Сообщение Low ammo/Out of ammo.                              |
| AttackerIcon                  | Иконка последнего кто вас атаковал                           |
| AttackerName                  | Ник последнего кто вас атаковал                              |
| Chat1 - Chat16                | Строки чата. Сообщение появляется сначала в Chat1.           |
| FlagStatus_NME                | Статус флага вражеской команды.                              |
| FlagStatus_OWN                | Статус флага своей команды.                                  |
| FollowMessage                 | Сообщение "Following PlayerName".                            |
| FPS                           | Счетчик FPS.                                                 |
| FragMessage                   | Сообщение о полученном фраге.                                |
| GameTime                      | Игровое время.                                               |
| ItemPickup                    | Название подобранного итема и игровое время.                 |
| ItemPickupIcon                | Изображение подобранного итема.                              |
| LocalTime                     | Реальное время.                                              |
| LocalDate                     | Реальная дата.                                               |
| Name_NME                      | Имя врага или вражеской команды.                             |
| Name_OWN                      | Свое имя или имя команды.                                    |
| NetGraph                      | Лагометр.                                                    |
| NetGraphPing                  | Ping.                                                        |
| Obituary1 - Obituary8         | Некролог (сообщения о смертях)                               |
| PlayerSpeed                   | Скорость игрока.                                             |
| Powerup1_icon - Powerup8_icon | Иконка поверапа.                                             |
| Powerup1_time - Powerup8_time | Оставшееся время действия поверапа.                          |
| RankMessage                   | Ранг в таблице. Видно при получении фрага.                   |
| Score_Limit                   | Лимит очков.                                                 |
| Score_NME                     | Очки врага/команды или лидирующего игрока.                   |
| Score_OWN                     | Собственные очки или очки своей команды.                     |
| Specmessage                   | Сообщение SPECTATOR.                                         |
| StatusBar_ArmorBar            | Полоска брони.                                               |
| StatusBar_ArmorCount          | Счетчик брони.                                               |
| StatusBar_ArmorIcon           | Иконка брони.                                                |
| StatusBar_AmmoBar             | Полоска количество патронов.                                 |
| StatusBar_AmmoCount           | Счетчик патронов.                                            |
| StatusBar_AmmoIcon            | Иконка патронов.                                             |
| StatusBar_HealthBar           | Полоска здоровья.                                            |
| StatusBar_HealthCount         | Счетчик здоровья.                                            |
| StatusBar_HealthIcon          | Иконка здоровья.                                             |
| TargetName                    | Имя игрока в прицеле.                                        |
| TargetStatus                  | Здоровье/броня тиммейта.                                     |
| TeamCount_NME                 | Количество живых игроков во вражеской команде (только фриз). |
| TeamCount_OWN                 | Количество живых игроков в своей команде (только фриз).      |
| Team1-Team16                  | Тимоверлей.                                                  |
| TeamTask1 - TeamTask8         | Строки тимтасков (командных задач).                          |
| tempAcc_current               | Временная точность LG. Текущая                               |
| tempAcc_icon                  | Иконка для временной точности LG                             |
| VoteMessageWorld              | Строка голосования.                                          |
| WeaponList                    | Список доступного оружия.                                    |
| RewardIcons                   | Изображение полученной медали.                               |
| RewardNumbers                 | Счетчик полученных медалей.                                  |
| PostDecorate                  | Отрисовка разделителей и т.п.                                |
| WarmupInfo                    | Обратный отсчет/"waiting for players".                       |
| GameType                      | Режим игры(только во время warmup).                          |
| Location                      | Сообщение с названием локации при ее изменении.              |
| CurrentWeaponStats            | Точность для оружия (cg_shud_currentWeapons)                 |
| CurrentWeaponStats_icon       | Иконка для точности оружия                                   |
| weaponStats_##                | Точности для выбранного оружия (MG,SG,GL,RL,LG,PG,RG)        |
| weaponStats_##_icon           | Иконка для точности выбранного оружия                        |
| playerStats_DG                | Количество нанесённого урона                                 |
| playerStats_DR                | Количество полученного урона                                 |
| playerStats_DG_icon           | Иконка для количества нанесённого урона                      |
| playerStats_DR_icon           | Иконка для количества полученного урона                      |
| playerStats_damage_ratio      | Коэфициент урона                                             |
| player_name                   | Имя игрока                                                   |
| recordingdemo                 | Индикатор записи демо (REC).                                 |

## Команды


| Команда       | Значения       | Краткое описание                                          |
|---------------|----------------|-----------------------------------------------------------|
| AlignH        | L/C/R          | Выравнивание по горизонтали лево/центр/право              |
| AlignV        | T/C/B          | Выравнивание по вертикали верх/центр/низ                  |
| BgColor       | r g b a        | Цвет фона.                                                |
| BgColor2      | r g b a        | Второстепенный цвет фона.                                 |
| Border        | L T R B        | Толщина рамка. По порядку - Лево, верх, право, низ        |
| BorderColor   | R G B A        | Цвет рамки                                                |
| BorderColor2  | R G B A        | Второстепенный цвет рамки                                 |
| Color         | r g b a        | Базовый цвет.                                             |
| Color2        | r g b a        | Второстепенный цвет.                                      |
| Color         | T              | Цвет команды. Так же поддерживается bgcolor и bordercolor |
| Color         | E              | Цвет вражеской команды. Так же поддерживается             |
| Direction     | L/R/T/B        | Направление: лево->право/право->лево/верх->низ/низ->верх. |
| Doublebar     |                | Двойная полоска здоровья/брони/патронов.                  |
| Fade          | r g b a        | Затухание к этому цвету.                                  |
| Fadedelay     | milliseconds   | Скорость затухания.                                       |
| Fill          |                | Заливка цветом BgColor.                                   |
| Font          | name или число | Название шрифта или индекс шрифта (0-18).                 |
| FontSize      | w h            | Размер шрифта ширина и высота.                            |
| Image         | string         | Путь к шейдеру или картинке.                              |
| Image2        | string         | Путь к шейдеру или картинке для второго слоя.             |
| Monospace     |                | Использовать моноширинную печать.                         |
| Rect          | x y w h        | Координаты и размер элемента.                             |
| Text          | string         | Текстовая строка.                                         |
| Textalign     | L/C/R          | Выравнивание текста лево/центр/право.                     |
| Textstyle     | flags          | Флаги текста. 1 - без тени.                               |
| Time          | milliseconds   | Время отображения на экране.                              |
| Style         | flags          | Стиль элемента - цифра                                    |
| VisFlags      | string         | Изменить дефолтные настройки видимости                    |




## Пояснения к некоторым элементам

### !DEFAULT

- Используется для установки дефолтовых значений команд для последующих элементов. Для отмены используйте пустой элемент: `!DEFAULT {}`

### exec / execute

- Выполняет консольные команды при загрузке конфига худа.
- Команды указываются внутри фигурных скобок, разделяются пробелами или переносами строк.
- Можно использовать несколько команд, разделяя их пробелами или точкой с запятой.

**Синтаксис:**
```
exec {
    cg_fov 100
    exec myconfig.cfg
}

execute { cg_fov 100; exec myconfig.cfg }
```

**Примечание:** Элемент выполняется только при загрузке конфига, не отрисовывается на экране.

### Chat1 - Chat16

- Сообщение появляется сначала в Сhat1 и по мере поступления новых сообщений сдвигается в следующие элементы.
- Rect (3 аргумент) - устанавливает масимальную ширину строчки

### color

- При color "E" или "T" - `color2` регулирует прозрачность (color2 0 0 0 1) где 1 - прозрачность. 

### ItemPickup

- Style 2 - вывод времени подбора предмета (без названия предмета)
- Style 3 - вывод имени предмета (без времени)

### Font

Доступные шрифты:

- id
- idblock
- sansman
- cpma
- m1rage
- elite_emoji
- diablo
- eternal
- qlnumbers
- elite
- elitebigchars
- eliteeternal
- bigcharseliteeternal
- elitestoropia
- bigcharselitestoropia
- bigcharseliteorbitron
- eliteorbitron
- q4stroggnumbers
- q4marinenumbers

### WeaponList 

- Список оружия. Командой `Rect` указывается размер иконки одного оружия. Размер текстового поля определяется автоматически исходя из размера шрифта. 
- Для выбора типа списка (левый/правый/горизонтальный) используется команда `TextAlign`.
- Для изменения цвета выбранного оружия используйте `color2`

### StatusBar_HealthBar StatusBar_ArmorBar StatusBar_AmmoBar

- Doublebar - включить двойную полосу
- Direction - Направление полосы
- Image - Путь к изображению для полосы.
- Image2 - Путь к изображению для второго слоя полосы.

Только для здоровья и брони:
- Style 1 - цвет зависит от хп, 
- Style 2 - обе полосы в одном месте, цвет задаётся через `color` и `color2`.
- Style 3 - то же что и Style 2, но при достижении значения установленного в cg_healthLow - бары красятся в красный цвет.

Только для патронов:
- color2 - изменить цвет среднего значение боезапаса (дефолт - оранжевый)
- weaponMaxValue - задать максимальное значение для определенных оружий. Формат: номер оружия значение номер оружия значение. По умолчанию для всех оружий 200. Пример: `weaponMaxValue 1 50 2 100` (оружие 1 - максимум 50, оружие 2 - максимум 100). У пилы (WP_GAUNTLET) нет патронов.


### StatusBar_HealthCount StatusBar_ArmorCount 

- Style 1 - цвет значений задаётся через `color` для > healthMid и `color2` для < healthMid

### VisFlags 

Варианты: 
- im - видно в режиме intermission
- teamonly - видно в только в командных режимах
- spectator - видно в режиме спектатора
- dead - видно если игрок мертв
- demohide - скрывать в режиме просмотра демо
- scoreshide - скрывать в режиме просмотра счета
- key1show - скрывать если не нажата кнопка +shudkey1
- key2show - скрывать если не нажата кнопка +shudkey2
- key3show - скрывать если не нажата кнопка +shudkey3
- key4show - скрывать если не нажата кнопка +shudkey4
- key5show - скрывать если не нажата кнопка +shudkey5
- key6show - скрывать если не нажата кнопка +shudkey6
- key7show - скрывать если не нажата кнопка +shudkey7
- key8show - скрывать если не нажата кнопка +shudkey8
- showempty - показывать пустые значения `для  элементов: weapon/player stats, tempAcc, Score_NME, StatusBar_ArmorCount`
- gt_ffa - скрывать при режиме игры каждый сам за себя (Free for all)
- gt_tourney -  скрывать при турнирном режиме игры (дуэли)
- gt_tdm -  скрывать при командном режиме игры. Только team death match
- gt_ctf - скрывать при режиме игры "Захват флага"
- gt_freezetag - скрывать при режиме игры "Freezetag/Unfreeze"
- gt_clanarena - скрывать при режиме игры "Clan Arena"
- gauntlet - видно только когда активно оружие Gauntlet
- machinegun - видно только когда активно оружие Machinegun
- shotgun - видно только когда активно оружие Shotgun
- grenade - видно только когда активно оружие Grenade Launcher
- rocket - видно только когда активно оружие Rocket Launcher
- lightning - видно только когда активно оружие Lightning Gun
- railgun - видно только когда активно оружие Railgun
- plasma - видно только когда активно оружие Plasmagun
- bfg - видно только когда активно оружие BFG
- lowhp - показывать когда мало здоровья (cg_healthLow)

Можно указывать несколько вариантов через пробел:

    visflags teamonly key1show;
    visflags machinegun rocket lightning;

### Obituary1 - Obituary8

- Styles - битмаска (по умолчанию 4+8 включено)
- Style 1 - цвет команды на фоне ника, при этом можно задать прозрачность фона через `BgColor`.
- Style 2 - ники игроков окрашены в цвет команды.
- Style 4 - цвет меняется только у союзников
- Style 8 - цвет меняется только у врагов
- Выделение событий клиента через bgcolor, первые 3 аргумента, т.е. RGB. Например `BgColor 0.3 0.3 0.3 0.3` Будет выделять ваши события прозрачным белым 
- Так же выделить события можно и рамкой, `border 1 1 1 1` и `borderColor 1 1 1 1`

## tempAcc_current

- Битовая маска для `Style`:
    1 - Дробное число с одним знакоп после запятой
    2 - Цвет числа определяется по границам 

- Границы для цветов <30, <50, <60, >60

## WeaponStats_## и CurrentWeaponStats

- Style 1 — Дробное число с одним знаком после запятой

## PlayerStats_damage_ratio

- Битовая маска для `Style`
    1 - Выводит процент вместо коэфициента (Коэфициент * 100)
    2 - Цвет числа определяется по границам 

## StatusBar_AmmoCount  

- Цвет затенения значения при перезарядке можно установить через color2
- Отключить затенение через style (любое значение), или установить для color2 значение равное color 

## Grid

- Rect {x y w h} - Смещение сетки по x и y (начальная точка), w и h - размер ячейки (ширина и высота).
- Советую использовать смещение -0.5 -0.5
- Color - основной цвет линий сетки.
- Color2 (опционально) - второстепенный цвет. Если задан, линии сетки будут чередоваться между основным цветом (Color) и второстепенным (Color2).

## localtime

- Style 1 - 12-часовой формат времени

## localdate

- Style 1 - ММ.ДД.ГГГГ (MM.DD.YYYY)

## recordingdemo

- Style 1 - мигающий режим (элемент периодически скрывается/показывается).
- Можно задать своё изображение через `image "image/shader path"`.
- Можно задать текст через `text "text"`.

## FPS

- Style 1 -  число FPS без суффикса "fps"

## team1-16 (team overlay)
- Style 1 - компактный режим, выводится только ник и здоровье
- rect x y w h - аргумент w задаёт ширину области, в пределах которой отображается ник
