Программирование стратегических игр с DirectX 9.0



Как определить подсвечиваемую активную зону - часть 2


{

// Активация подсветки

g_bMainMenu_NewGame_Highlight = 1;

}

else if(!stricmp(szZoneHit, "MAINMENU_LOADGAME_H"))

{

// Активация подсветки

g_bMainMenu_LoadGame_Highlight = 1;

}

else if(!stricmp(szZoneHit, "MAINMENU_SAVEGAME_H"))

{

// Активация подсветки

g_bMainMenu_SaveGame_Highlight = 1;

}

else if(!stricmp(szZoneHit, "MAINMENU_OPTIONS_H"))

{

// Активация подсветки

g_bMainMenu_Options_Highlight = 1;

}

} // ЛОГИКА ЭКРАНА ЗАВЕРШЕНИЯ else if(g_iCurrentScreen == 2) { // Выходим из программы, если пользователь нажал кнопку мыши if(!stricmp(szZoneHit, "EXIT_SCREEN")) { // Флаг, сообщающий WinMain() о завершении программы g_iCurrentScreen = 3; } } // ЛОГИКА МЕНЮ ПАРАМЕТРОВ else if(g_iCurrentScreen == 7) { // Переходим к завершающему экрану if(!stricmp(szZoneHit, "EXIT_BUTTON")) { // Делаем завершающий экран текущим g_iCurrentScreen = 2; // Устанавливаем активные зоны vSetupMouseZones(2); } // Возврат к главному меню else if(!stricmp(szZoneHit, "OPTIONS_BACK")) { // Делаем главное меню текущим g_iCurrentScreen = 1; // Устанавливаем активные зоны vSetupMouseZones(1); } } } }

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

Затем код проверяет не активна ли какая-либо из подсвечиваемых зон. Подсвечиваемые зоны активируются когда ни одна из кнопок мыши не нажата; поэтому достаточно только навести на зону указатель мыши. Если подсвечиваемая зона активна, код присваивает соответствующей логической переменной значение true. Это сообщает функции визуализации, что надо вывести подсвеченное изображение данной кнопки вместо обычного.




Содержание  Назад  Вперед