Многие из вас знают что в Half-Life 2 для отображения цифр в hud используются шрифты, но что делать если захотелось использовать текстуры?
Тогда этот туториал для вас!
Что нам потребуется?Знать как работает Source Engine (скрипты, материалы и тд)
Содержание серого вещества в черепной коробке!
Шаг первый!Для начала нужно понять как работает оригинальны hud в Half-Life 2!
Для примера откроем
hud_health.cpp, немного пролистав вниз мы увидим что для отображения надписей (HEALTH, ARMOR, AMMO) используется
SetLabelText.
Чуть ниже можно встретить
StartAnimationSequence (используется для создания анимаций, смены цвета и других няшек) и настраивается он естественно в
HudAnimations.txt в папке scripts вашего мода.
Тут всё понятно, но подождите как !@#$ работают цифры? Всё просто!
Поднимаемся в начало файла и видим что базовым классом для hud_health является
CHudNumericDisplay (hud_numericdisplay.cpp)
Кто ещё не понял... Сейчас мы должны открыть hud_numericdisplay
Из файлы мы видим что для отображения цифр используются следующие параметры:
[/b]
И так!
SetDisplayValue и
SetShouldDisplayValue нам не интересны, там и так всё понятно, но вот
PaintNumbers и
Paint нам очень нужны!
В
PaintNumbers настраивается позиция цифры, т.е. к какой стороне они присоединены (поверьте это вам очень пригодится в будующем).
В
Paint настраивается уже сам цвет цифр, шрифт и позиция в самом HUD (к примеру
digit_xpos,
digit_ypos которые вы в дальнейшем сможете найтраивать через
HudLayout.res).
Вроде бы с оригинальным hud мы разабрались и теперь можно приступить к чтому чего вы ждали!
Для создания цифр из текстур Valve подготовила вам альтернативную версию
hud_numericdisplay,
CHudBitmapNumericDisplay (hud_bitmapnumericdisplay.cpp)
Открываем
hud_bitmapnumericdisplay.cpp и спускаемся к
PaintNumbers, где вы и увидите самое главное!
В первом же блоке кода видно что числа ~трансформируются~ в иконки которые используют текстуры, то есть
number_%d это название иконки, где
% это число.
Сам же внешний вид иконок настраивается очень легко! Для этого нужно открыть
mod_textures.txt находящийся в папке scripts и добавить следующее:
http://privatepaste.com/7c1eecd438(пример)
Всё с этим более менее всё понятно, но как же теперь сделать что бы
hud_health использовал эту систему? Идём обратоно в
hud_health.cpp, потом заменяем include
hud_numericdisplay на
hud_bitmapnumericdisplay и вместо базового класса
CHudNumericDisplay мы вписываем
CHudBitmapNumericDisplay!
Вот и всё. Теперь наш
hud_health будет использовать текстуры для цифр!
P.S. Если есть какие нибудь замечания по туториалу то пишите