Добавлен , опубликован

Основы Интерфейса

Содержание:
Highlight - выделение фрейма, по-другому можно перевести как цветовой эффект фрейма. Короче, эта штука во время игры заставляет проигрывать эффекты, световые блики. Текстура светится, становится прозрачной, и прочее. Возьмем пример кнопки, когда курсор мыши наводим на кнопку, она тут же подсвечивается.
На Highlight вешают Control
Highlight - это проще говоря обычная прозрачная текстура, которая накладывается поверх какого либо фрейма. Пример, когда вы наводите на кнопку, у вас она подсвечивается. А по факту, на нее сверху положили полупрозрачную текстуру.
Highlight используется только как функциональный дочерний фрейм. В Warcraft 3 V1.31 и 1.32 нет возможности изменить используемую текстуру во время игры.

fdf функции HighLight

HighlightAlphaFile
HighlightAlphaFile FilePath,
FilePath - указываем путь картинки.
Пример
HighlightAlphaFile "UI\Glues\ScoreScreen\scorescreen-tab-hilight.blp"
посмотрел все highlights-texturex во всех fdf-files
Я вызвал весь список highlight-files, чтобы потом не рыться в импорте (извлечение, мучиться с открытием редактора иконок, потом двести лет открывает просмотрщик и пр). Просто удобнее знать заранее какие это файлы, нетрудно будет догадаться, что они делают.

Вот список highlight-files (не уверен, что тут все highlight. Но это все которые найдены в fdf, и используются в игре):
"UI\Widgets\BattleNet\bnet-button01-highlight-mouse.blp" Blue glow
"UI\Widgets\Glues\GlueScreen-Button-KeyboardHighlight.blp" bluesurronding
"UI\Widgets\Glues\GlueScreen-CampaignButton-KeyboardHighlight.blp" bluesqure
"UI\Widgets\Glues\GlueScreen-RadioButton-Button.blp" Blue point
"UI\Widgets\Glues\GlueScreen-RadioButton-ButtonDisabled.blp" gray point
"UI\Glues\ScoreScreen\scorescreen-tab-hilight.blp" yellow glow
"UI\Widgets\Glues\GlueScreen-Checkbox-Check.blp" golden checked
"UI\Widgets\Glues\GlueScreen-Checkbox-CheckDisabled.blp" gray checked
сейчас некоторые файлы blp заменены на dds
Некоторые не указывают путь, а переменные, пример:
HighlightAlphaFile "QuestDialogCompletedMouseOverHighlight",
нашел весь список переменных, вызываемые функцией HighlightAlphaFile
QuestDialogCompletedMouseOverHighlight
QuestDialogFailedMouseOverHighlight
QuestDialogButtonMouseOverHighlight
EscMenuRadioButtonSelectedHighlight
EscMenuDisabledCheckHighlight
EscMenuCheckBoxCheckHighlight
EscMenuButtonMouseOverHighlight
Найти путь и файл к этим Highlight можно посмотрев файл ui/war3skins.txt
QuestDialogCompletedMouseOverHighlight=UI\Widgets\EscMenu\Human\blank-background.blp
QuestDialogFailedMouseOverHighlight=UI\Widgets\EscMenu\Human\blank-background.blp
иконка blank-background.blp - полностью прозрачная, задана альфа-каналом
QuestDialogButtonMouseOverHighlight=UI\Widgets\EscMenu\Orc\orc-options-button-highlight.blp
QuestDialogButtonMouseOverHighlight=UI\Widgets\EscMenu\NightElf\nightelf-options-button-highlight.blp
QuestDialogButtonMouseOverHighlight=UI\Widgets\EscMenu\Undead\undead-options-button-highlight.blp
QuestDialogButtonMouseOverHighlight=UI\Widgets\EscMenu\Human\human-options-button-highlight.blp
EscMenuButtonMouseOverHighlight=UI\Widgets\EscMenu\Orc\orc-options-button-highlight.blp
EscMenuButtonMouseOverHighlight=UI\Widgets\EscMenu\NightElf\nightelf-options-button-highlight.blp
EscMenuButtonMouseOverHighlight=UI\Widgets\EscMenu\Undead\undead-options-button-highlight.blp
EscMenuButtonMouseOverHighlight=UI\Widgets\EscMenu\Human\human-options-button-highlight.blp
это для кнопок, когда мышью наводите на кнопку и она подсвечивается
эти полоски очень похожи на
"UI\Glues\ScoreScreen\scorescreen-tab-hilight.blp" yellow glow (см. выше)
EscMenuRadioButtonSelectedHighlight=UI\Widgets\EscMenu\Human\radiobutton-button.blp
EscMenuDisabledCheckHighlight=UI\Widgets\EscMenu\Human\checkbox-check.blp
EscMenuCheckBoxCheckHighlight=UI\Widgets\EscMenu\Human\checkbox-check.blp
эти button и check очень похожи на
"UI\Widgets\Glues\GlueScreen-RadioButton-Button.blp" Blue point
"UI\Widgets\Glues\GlueScreen-RadioButton-ButtonDisabled.blp" gray point
"UI\Widgets\Glues\GlueScreen-Checkbox-Check.blp" golden checked
"UI\Widgets\Glues\GlueScreen-Checkbox-CheckDisabled.blp" gray checked
HighlightAlphaMode
Добавляет различные модификации прозрачности картинке. В fdf-files нашел пока 2 модификации ADD и BLEND. Возможно есть и другие (fdf-file у Texture побольше AlphaMode, но применимы ли - не проверял)
HighlightAlphaMode "ADD",
или
HighlightAlphaMode "BLEND",
В интернете в хайве выдернул эту инфу, но лучше в понимании не стало. статья из вики поэтому тестил лично, сначала долгое время было вообще не понять, пока в один прекрасный момент не дошло.
ADD - добавляет специфическую прозрачность изображению. Чаще всего добавляет эту прозрачность черному цвету. Короче, насколько у вас картинка темнее, настолько у вас будет прозрачнее. Многие blp изображения иконок варкрафта не имеют альфа-канала. Сделано специально для иконок-спецэффектов интерфейса, чтобы в фотошопе по 1000 раз не добавлять альфа канал для каждой иконки. Разработчики игры упростили нам работу с иконками, иначе бы пришлось еще и обводить прозрачность альфа-каналом.
Черный цвет в режиме ADD - абсолютная прозрачность, если хотите изображению задать черные цвета и темные тона, то вы можете забыть это использовать в моде ADD, Если нужно черный цвет и темные тона - рекомендую мод BLEND.
пример ниже картинка - рамка активной кнопки, у нас кнопка подсвечивается зеленой рамкой, а по факту текстура зеленой рамки расположена выше над кнопкой. Смотрел изображение в фотошопе, вся сама иконка внутри не имеет альфа-канала. Значит, альфа-канал каким-то образом добавлен игрой, а именно нашим модом ADD.
Это не значит, что нельзя добавить альфа-канал посредством фотошопа или другого графического редактора, и что он не будет работать. Нет, вы не правы. Мод ADD никак не выключает альфа-канал. Если в фотошопе задать альфа-канал, то тут тоже будет работать, никак не конфликтует с нашим модом ADD. черные и темные оттенки становятся либо полностью прозрачными или слегка прозрачными, а если там была еще задана прозрачность фотошопом посредством альфа-канала, то усилена.
BLEND - этот мод не добавляет никакой специфической прозрачности как в моде ADD, короче это обычная картинка. Но прозрачность можно задать в фотошопе.
При работе с картинкой в обоих случаях нужно не забывать обводить рамкой альфа-канал, а в режиме ADD необходимо обработать краям черным цветом как тут
ADD - чаще работает с кнопками (всякие эффекты на кнопках).
BLEND - чаще используется в Backdrop (обычные изображения фона. Если нужна прозрачность, могут в фотошопе задать прозрачность фона), CheckBox (обычные изображения. Чаще всего у checkbox - изображение флага - галочка или круг вокруг обведен прозрачным слоем). В триггерах у текстуры фрейма можно выключить blend, но некоторые прозрачные участки из-за отключения blend становятся черными.
HighlightType
HighlightType "FILETEXTURE",
или
HighlightType "SHADE",
больше типов HighlightType в fdf-files я не находил. Существует либо FILETEXTURE или SHADE, у каждого свое назначение.
FILETEXTURE - с этим вы сможете работать с HighlightAlphaFile. По примерам с fdf видно, что HighlightAlphaFile и HighlightType "FILETEXTURE" часто работают вместе. Никогда не видел раздельно.
"SHADE" - часто работает вместе с HighlightColor. По примерам видно, что эта shade (оттенок) почему-то в большинстве случаев меняет цвет и делает прозрачным.
HighlightColor
HighlightColor red green blue alpha,
Пример:
HighlightColor 1.0 0.0 0.0 0.2,
эта функция работает вместе с HighlightType "SHADE",
пример fdf-кода
Frame "HIGHLIGHT" "EscMenuCheckHighlightTemplate" {
    DecorateFileNames,
    HighlightType "FILETEXTURE",
    HighlightAlphaFile "EscMenuCheckBoxCheckHighlight",
    HighlightAlphaMode "BLEND",
}

Образцы fdf-кода для HighLight

Вы сможете посмотреть образцы фреймов и подобрать нужные вам понравившиеся эффекты. Зачем эта ссылка нужна? чтобы не терять время и сразу посмотреть на эти HighLight. Есть конечно вот это, но вы убьете слишком много времени. Я именно так и поступал. Запомните не все fdf файлы загружаются в игру, поэтому вам придется загружать самим

Как создать HighLight как отдельный фрейм?

Как создать HighLight как отдельный фрейм?
создаем fdf-file
Frame "HIGHLIGHT" "CommandButtonActiveHighlight" {
    DecorateFileNames,
    HighlightType "FILETEXTURE",
    HighlightAlphaFile "CommandButtonActiveHighlight",
    HighlightAlphaMode "ADD",
}
и создаем фрейм триггерами
lua code
do
    local real = MarkGameStarted
 function MarkGameStarted()
        real()
		
	--загружаем toc.file
	BlzLoadTOCFile("templates.toc")
	--родитель gameUI
	local gameUI = BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0)
	--создаем frame типа highlight
	local frame = BlzCreateFrameByType("HIGHLIGHT","frame", gameUI, "CommandButtonActiveHighlight", 0)
	--задаем координаты экрана
	BlzFrameSetAbsPoint(frame, FRAMEPOINT_BOTTOM, 0.4,0.0)
	--если нужно прозрачность
	--BlzFrameSetAlpha(frame, 50)
	--размеры
	BlzFrameSetSize(frame,0.4,0.3)
 end
end

Содержание
`
ОЖИДАНИЕ РЕКЛАМЫ...