Немного о главном меню
#1
Каждый кто распаковывал menus.res видел файл menus.reg дак вот сегодня разберёмся за что он отвечает.
.text:005ACEAC push offset aMenus_reg ; какой файл читать menus.reg
.text:005ACEB1 mov ecx, esi
.text:005ACEB3 mov [esp+4Ch+lprc], ebp
.text:005ACEB7 call dword ptr [eax+4Ch] ; читаем файл
.text:005ACEBA cmp eax, ebp
.text:005ACEBC jnz short loc_5ACEC5 ; если всё нормально то грузим дальше иначе
.text:005ACEBE push offset aCanTOpenFileMe ; не смогли прочитать выдаём ошибку
... в принципе не важно
.text:005ACED1 jnz short loc_5ACEFA ;если всё в порядке то переходим иначе
.text:005ACED3 push offset aCanTOpenMenus_ ; не смогли правильно открыть файл
... в принципе не важно
.text:005ACF20 push offset aNewgame ;выбираем в файле строку [NewGame]
.text:005ACF25 push offset aMainmenu ;выбираем раздел [MainMenu]
... в принципе не важно
.text:005ACF8F push edx ; yBottom высота кнопки
... в принципе не важно
.text:005ACF95 push ecx ; xRight длинна кнопки
.text:005ACF96 push edx ; yTop расстояние сверху до кнопки
.text:005ACF97 push eax ; xLeft расстояние до кнопки слева
.text:005ACF98 push esi ; lprc
.text:005ACF99 call edi ; SetRect ; добавляем прямоугольник (кнопка)
У mainMenu 6 кнопок и для каждого своя область, а для EscMenu 5 кнопок для которых тоже отдельные обработчики кнопок.
Координаты берутся в таком порядке из файла
[MainMenu]
NewGame=367 (Left)
NewGame=200 (Bottom)
NewGame=507 (Right)
NewGame=216 (Top)
аналогично и для других
LoadGame=364 (Left)
LoadGame=225 (Bottom)
LoadGame=484 (Right)
LoadGame=260 (Top)
А теперь для чего это всё нужно: Эта виртуальная кнопка, область и т.д как бы её не назвали служит для обработки событий от мыши если навести курсор на эту область то сработает анимация кнопки которой принадлежит область и сработает звук buttonsmenustone.wav, а при шелчке мышю вызовется определённая функция связанная с меню например начало игры или настройки и т.д.
Поклонник Baldurs gate, Neverwinter Nights, Проклятые земли.
Ответ
#2
я тебя зауважал
Ответ
#3
Красавчик! Разбомбил таки.... Smile
Ответ
#4
Хех. Молодец. Токо вот насчет обработчиков событий это кажись знают все, и что когда наводишь анимация и тд.. Это чем- то похоже на яваскрипт и на хтмл. Smile
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 2 Гость(ей)