📄 mainmenu.c
字号:
}//***************************************************************************// Function : MAINMENU_Game_Menu_Exit// Abstract : Each UI needs to offer the exit function. When user presses KEY_OPEN_CLOSE or KEY_POWER, // : the main menu will call the UI's exit function to exit the control.// : Each sub-menu can reset your control or clear some flags here.// Arguments : none.// Return : none.// Side Effect : none.// Notes : //***************************************************************************void MAINMENU_Game_Menu_Exit(BYTE bClearBackground){ //Clear UI background.#ifdef SUPPORT_POWERON_MENU GDI_ClearRegion(0);#else if (bClearBackground) { MAINMENU_ClearMainBackground(); }#endif //SUPPORT_POWERON_MENU _bDMAINMENUGameMenu = FALSE;}//***************************************************************************// Function : MAINMENU_Game_Menu_ProcessKey// Abstract : When the menu is active, IR key will be sent to this menu's processing key function.// Arguments : none.// Return : MENU_ACTION_DONE: The key has been processed OK. If the key is invalid, it will be skipped by this function.// MENU_ACTION_EXIT: The menu (sub-UI) exists.// Side Effect : none.// Notes : //***************************************************************************BYTE MAINMENU_Game_Menu_ProcessKey(BYTE bKey){ if (!_bDMAINMENUGameMenu) { return MENU_ACTION_DONE; } #ifdef SUPPORT_POWERON_MENU switch (__bMenuState) {#ifdef SUPPORT_GAME_MINER case MS_GAME_MINE: return GAME_MINE_ProcessKey(__bKey);#endif //SUPPORT_GAME_MINER #ifdef SUPPORT_GAME_TETRIS case MS_GAME_TETRIS: return GAME_TETRIS_ProcessKey(__bKey);#endif //SUPPORT_GAME_TETRIS #ifdef SUPPORT_GAME_GOMOKU case MS_GAME_GOMOKU: return GAME_GOMOKU_ProcessKey(__bKey);#endif#ifdef SUPPORT_GAME_SOKOBAN case MS_GAME_SOKOBAN: return GAME_SOKOBAN_ProcessKey(__bKey);#endif#ifdef SUPPORT_GAME_RUSHHOUR case MS_GAME_RUSHHOUR: return GAME_RUSHHOUR_ProcessKey(__bKey);#endif default: break; }#endif //SUPPORT_POWERON_MENU switch (bKey) { case KEY_UP: if (_bMAINMENUGameCursorIndex != 0) { _MAINMENU_DrawButton(_bMAINMENUGameCursorIndex, MAINMENU_BUTTON_NORMAL, _bMAINMENUGameButton); _bMAINMENUGameCursorIndex--; _MAINMENU_DrawButton(_bMAINMENUGameCursorIndex, MAINMENU_BUTTON_HIGHLIGHT, _bMAINMENUGameButton); } break; case KEY_DOWN: if (_bMAINMENUGameCursorIndex != (MAINMENU_GAME_BUTTON_NUM-1)) { _MAINMENU_DrawButton(_bMAINMENUGameCursorIndex, MAINMENU_BUTTON_NORMAL, _bMAINMENUGameButton); _bMAINMENUGameCursorIndex++; _MAINMENU_DrawButton(_bMAINMENUGameCursorIndex, MAINMENU_BUTTON_HIGHLIGHT, _bMAINMENUGameButton); } break; case KEY_PLAY: case KEY_ENTER: _MAINMENU_Game_Menu_ProcessButton(); if(_bDMAINMENUGameMenu == FALSE) //xuli.osdgame return MENU_ACTION_EXIT; default: break; } return MENU_ACTION_DONE;}void MAINMENU_Game_Menu_Trigger(void){#ifdef SUPPORT_POWERON_MENU switch (__bMenuState) {#ifdef SUPPORT_GAME_MINER case MS_GAME_MINE: GAME_MINE_Trigger(); break;#endif //SUPPORT_GAME_MINER #ifdef SUPPORT_GAME_TETRIS case MS_GAME_TETRIS: GAME_TETRIS_Trigger(); break;#endif //SUPPORT_GAME_TETRIS #ifdef SUPPORT_GAME_GOMOKU case MS_GAME_GOMOKU: break;#endif#ifdef SUPPORT_GAME_SOKOBAN case MS_GAME_SOKOBAN: GAME_SOKOBAN_Trigger(); break;#endif#ifdef SUPPORT_GAME_RUSHHOUR case MS_GAME_RUSHHOUR: break;#endif default: break; }#endif //SUPPORT_POWERON_MENU}void _MAINMENU_Game_Menu_ProcessButton(void){ switch (_bMAINMENUGameCursorIndex) {#ifdef SUPPORT_GAME_MINER case MAINMENU_GAME_BUTTON_MINE: __bMenuState = MS_GAME_MINE; //xuli.osdgame break;#endif #ifdef SUPPORT_GAME_TETRIS case MAINMENU_GAME_BUTTON_TETRIS: __bMenuState = MS_GAME_TETRIS; //xuli.osdgame break;#endif #ifdef SUPPORT_GAME_GOMOKU case MAINMENU_GAME_BUTTON_GOMOKU: __bMenuState = MS_GAME_GOMOKU; //xuli.osdgame break;#endif#ifdef SUPPORT_GAME_SOKOBAN case MAINMENU_GAME_BUTTON_SOKOBAN: __bMenuState = MS_GAME_SOKOBAN; //xuli.osdgame break;#endif#ifdef SUPPORT_GAME_RUSHHOUR case MAINMENU_GAME_BUTTON_RUSHHOUR: __bMenuState = MS_GAME_RUSHHOUR; //xuli.osdgame break;#endif#ifndef SUPPORT_POWERON_MENU#ifdef SUPPORT_CALENDAR case MAINMENU_GAME_BUTTON_CALENDAR: __bMenuState = MS_CALENDAR; //xuli.osdgame break;#endif //SUPPORT_CALENDAR#endif //SUPPORT_POWERON_MENU case MAINMENU_GAME_BUTTON_EXIT: MAINMENU_Game_Menu_Exit(TRUE);#ifdef SUPPORT_POWERON_MENU //__bMenuState = MS_GAME; POWERONMENU_BackToMainMenu();#endif //SUPPORT_POWERON_MENU return; default: break; } MAINMENU_SubUIInitial();}void MAINMENU_Game_Menu_BackToPowerOnMenu(void){#ifdef SUPPORT_POWERON_MENU MAINMENU_Game_Menu_Exit(TRUE); __bMenuState = MS_GAME; POWERONMENU_BackToMainMenu(); #endif //SUPPORT_POWERON_MENU}void MAINMENU_JumpToState(BYTE bState){ //Initialize the variables. _bMAINMENUMode = TRUE; __bMenuState = bState; _bMAINMENUCursorIndex = 0; MAINMENU_InitializeGDI(__SetupInfo.bUIStyle - MENU_SYS_PREFERENCE_UI_STYLE_BEGIN); MAINMENU_SubUIInitial();}#endif //SUPPORT_STBvoid MAINMENU_LoadGroupPalette(BYTE bPaletteStartIndex, DWORD *dwPalette, BYTE bMixEnable){ BYTE i; for (i = 0; i < dwPalette[0]; i++) { GDI_ChangePALEntry(bPaletteStartIndex+i, dwPalette[i+1], bMixEnable); }}void MAINMENU_InitializeGDI(BYTE bUIStyle){ switch (bUIStyle) { case 1: MAINMENU_LoadGroupPalette(MAINMENU_TITLE_BACKGROUND_PALETTE_ENTRY_BERIN, _dwMAINMENUTitleRegionPalette2, FALSE); MAINMENU_LoadGroupPalette(MAINMENU_HELP_BACKGROUND_PALETTE_ENTRY_BEGIN, _dwMAINMENUHelpRegionPalette2, FALSE);#ifdef SUPPORT_STB MAINMENU_LoadGroupPalette(MAINMENU_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_BEGIN, _dwMAINMENUNormalButtonPalette2, FALSE); MAINMENU_LoadGroupPalette(MAINMENU_PALETTE_ENTRY_HIGHLIGHT_BUTTON_PALETTE_BEGIN, _dwMAINMENUHighlightButtonPalette2, FALSE);#endif //#ifdef SUPPORT_STB GDI_ChangePALEntry(MAINMENU_PALETTE_ENTRY_CONTENT_REGION, MAINMENU_PALETTE_COLOR_CONTENT_REGION_2, TRUE); GDI_ChangePALEntry(MAINMENU_PALETTE_ENTRY_TITLE_STRING_1ST, MAINMENU_PALETTE_COLOR_TITLE_STRING_1ST_2, FALSE); GDI_ChangePALEntry(MAINMENU_PALETTE_ENTRY_TITLE_STRING_2ND, MAINMENU_PALETTE_COLOR_TITLE_STRING_2ND_2, FALSE); GDI_ChangePALEntry(MAINMENU_PALETTE_ENTRY_TITLE_STRING_3RD, MAINMENU_PALETTE_COLOR_TITLE_STRING_3RD_2, FALSE); break; case 2: MAINMENU_LoadGroupPalette(MAINMENU_TITLE_BACKGROUND_PALETTE_ENTRY_BERIN,_dwMAINMENUTitleRegionPalette3, FALSE); MAINMENU_LoadGroupPalette(MAINMENU_HELP_BACKGROUND_PALETTE_ENTRY_BEGIN, _dwMAINMENUHelpRegionPalette3, FALSE);#ifdef SUPPORT_STB MAINMENU_LoadGroupPalette(MAINMENU_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_BEGIN, _dwMAINMENUNormalButtonPalette3, FALSE); MAINMENU_LoadGroupPalette(MAINMENU_PALETTE_ENTRY_HIGHLIGHT_BUTTON_PALETTE_BEGIN, _dwMAINMENUHighlightButtonPalette3, FALSE);#endif //#ifdef SUPPORT_STB GDI_ChangePALEntry(MAINMENU_PALETTE_ENTRY_CONTENT_REGION, MAINMENU_PALETTE_COLOR_CONTENT_REGION_3, TRUE); GDI_ChangePALEntry(MAINMENU_PALETTE_ENTRY_TITLE_STRING_1ST, MAINMENU_PALETTE_COLOR_TITLE_STRING_1ST_3, FALSE); GDI_ChangePALEntry(MAINMENU_PALETTE_ENTRY_TITLE_STRING_2ND, MAINMENU_PALETTE_COLOR_TITLE_STRING_2ND_3, FALSE); GDI_ChangePALEntry(MAINMENU_PALETTE_ENTRY_TITLE_STRING_3RD, MAINMENU_PALETTE_COLOR_TITLE_STRING_3RD_3, FALSE); break; case 3: MAINMENU_LoadGroupPalette(MAINMENU_TITLE_BACKGROUND_PALETTE_ENTRY_BERIN,_dwMAINMENUTitleRegionPalette4, FALSE); MAINMENU_LoadGroupPalette(MAINMENU_HELP_BACKGROUND_PALETTE_ENTRY_BEGIN, _dwMAINMENUHelpRegionPalette4, FALSE);#ifdef SUPPORT_STB MAINMENU_LoadGroupPalette(MAINMENU_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_BEGIN, _dwMAINMENUNormalButtonPalette4, FALSE); MAINMENU_LoadGroupPalette(MAINMENU_PALETTE_ENTRY_HIGHLIGHT_BUTTON_PALETTE_BEGIN, _dwMAINMENUHighlightButtonPalette4, FALSE);#endif //#ifdef SUPPORT_STB GDI_ChangePALEntry(MAINMENU_PALETTE_ENTRY_CONTENT_REGION, MAINMENU_PALETTE_COLOR_CONTENT_REGION_4, TRUE); GDI_ChangePALEntry(MAINMENU_PALETTE_ENTRY_TITLE_STRING_1ST, MAINMENU_PALETTE_COLOR_TITLE_STRING_1ST_4, FALSE); GDI_ChangePALEntry(MAINMENU_PALETTE_ENTRY_TITLE_STRING_2ND, MAINMENU_PALETTE_COLOR_TITLE_STRING_2ND_4, FALSE); GDI_ChangePALEntry(MAINMENU_PALETTE_ENTRY_TITLE_STRING_3RD, MAINMENU_PALETTE_COLOR_TITLE_STRING_3RD_4, FALSE); break; case 0: default: MAINMENU_LoadGroupPalette(MAINMENU_TITLE_BACKGROUND_PALETTE_ENTRY_BERIN,_dwMAINMENUTitleRegionPalette1, FALSE); MAINMENU_LoadGroupPalette(MAINMENU_HELP_BACKGROUND_PALETTE_ENTRY_BEGIN, _dwMAINMENUHelpRegionPalette1, FALSE);#ifdef SUPPORT_STB MAINMENU_LoadGroupPalette(MAINMENU_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_BEGIN, _dwMAINMENUNormalButtonPalette1, FALSE); MAINMENU_LoadGroupPalette(MAINMENU_PALETTE_ENTRY_HIGHLIGHT_BUTTON_PALETTE_BEGIN, _dwMAINMENUHighlightButtonPalette1, FALSE);#endif //#ifdef SUPPORT_STB GDI_ChangePALEntry(MAINMENU_PALETTE_ENTRY_CONTENT_REGION, MAINMENU_PALETTE_COLOR_CONTENT_REGION_1, TRUE); GDI_ChangePALEntry(MAINMENU_PALETTE_ENTRY_TITLE_STRING_1ST, MAINMENU_PALETTE_COLOR_TITLE_STRING_1ST_1, FALSE); GDI_ChangePALEntry(MAINMENU_PALETTE_ENTRY_TITLE_STRING_2ND, MAINMENU_PALETTE_COLOR_TITLE_STRING_2ND_1, FALSE); GDI_ChangePALEntry(MAINMENU_PALETTE_ENTRY_TITLE_STRING_3RD, MAINMENU_PALETTE_COLOR_TITLE_STRING_3RD_1, FALSE); break; } #ifdef SUPPORT_STB MAINMENU_LoadGroupPalette(MAINMENU_PALETTE_ENTRY_DISABLE_BUTTON_PALETTE_BEGIN, _dwMAINMENUDisableButtonPalette, FALSE); GDI_ChangePALEntry(MAINMENU_PALETTE_ENTRY_BUTTON_STRING, MAINMENU_PALETTE_COLOR_BUTTON_STRING, FALSE);#endif //#ifdef SUPPORT_STB GDI_ChangePALEntry(MAINMENU_PALETTE_ENTRY_HELP_STRING, MAINMENU_PALETTE_COLOR_HELP_STRING, FALSE); GDI_ChangePALEntry(MAINMENU_PALETTE_ENTRY_BACKDOOR_STRING, MAINMENU_PALETTE_COLOR_BACKDOOR_STRING, FALSE); GDI_WaitPaletteComplete();}void _MAINMENU_DrawAllUI(void){#ifdef SUPPORT_STB BYTE bButtonIndex;#endif //SUPPORT_STB MAINMENU_InitializeGDI(__SetupInfo.bUIStyle-SETUP_CUSTOM_UI_STYLE_BEGIN); GDI_ClearRegion(0); //Draw background MAINMENU_DrawMainBackground();#ifdef SUPPORT_STB //Draw the title MAINMENU_DrawTitleString(aMENUMainMenu, NULL, NULL); //Draw the buttons. for (bButtonIndex = 0; bButtonIndex < MAINMENU_BUTTON_NUM; bButtonIndex++) { if (bButtonIndex == _bMAINMENUCursorIndex) { _MAINMENU_DrawButton(bButtonIndex, MAINMENU_BUTTON_HIGHLIGHT, _bMAINMENUButton); } else { if (((__bChooseMedia != MEDIA_SELECT_STB) && (bButtonIndex == MAINMENU_BUTTON_DVB_MENU)) || ((__bChooseMedia == MEDIA_SELECT_STB) && (bButtonIndex == MAINMENU_BUTTON_DVD_SETUP))) { _MAINMENU_DrawButton(bButtonIndex, MAINMENU_BUTTON_DISABLE, _bMAINMENUButton); } else { _MAINMENU_DrawButton(bButtonIndex, MAINMENU_BUTTON_NORMAL, _bMAINMENUButton); } } }#endif //SUPPORT_STB MAINMENU_DrawSelectionHelp(FALSE, FALSE);}void MAINMENU_DrawMainTitleBackground(BYTE bUIStyle){ PARM_RECT TitleRect; TitleRect.bColor = MAINMENU_TITLE_REGION_HEIGHT; TitleRect.rect.wLeft = MAINMENU_TITLE_REGION_START_X; TitleRect.rect.wTop = MAINMENU_TITLE_REGION_START_Y; TitleRect.rect.wRight = TitleRect.rect.wLeft+MAINMENU_TITLE_REGION_WIDTH-1; TitleRect.rect.wBottom = TitleRect.rect.wTop+MAINMENU_TITLE_REGION_HEIGHT-1; switch (bUIStyle) { case 1: TitleRect.bShadePtr = _bMAINMENUTitlePalette2; break; case 2: TitleRect.bShadePtr = _bMAINMENUTitlePalette3; break; case 3: TitleRect.bShadePtr = _bMAINMENUTitlePalette4; break; case 0: default: TitleRect.bShadePtr = _bMAINMENUTitlePalette1; GDI_FillRect(0|GDI_SHADING_OPERATION, &TitleRect); return; } GDI_FillRoundRectTop(0|GDI_SHADING_OPERATION, MAINMENU_TITLE_REGION_ARC, &TitleRect);}void MAINMENU_DrawMainContentBackground(void){ PARM_RECT ContentRect; ContentRect.bColor = MAINMENU_PALETTE_ENTRY_CONTENT_REGION; ContentRect.rect.wLeft = MAINMENU_CONTENT_REGION_START_X; ContentRect.rect.wTop = MAINMENU_CONTENT_REGION_START_Y; ContentRect.rect.wRight = ContentRect.rect.wLeft+MAINMENU_CONTENT_REGION_WIDTH-1; ContentRect.rect.wBottom = ContentRect.rect.wTop+MAINMENU_CONTENT_REGION_HEIGHT-1; GDI_FillRect(0, &ContentRect);}void MAINMENU_DrawMainHelpBackground(BYTE bUIStyle){ PARM_RECT HelpRect; HelpRect.bColor = MAINMENU_HELP_REGION_HEIGHT; HelpRect.rect.wLeft = MAINMENU_HELP_REGION_START_X; HelpRect.rect.wTop = MAINMENU_HELP_REGION_START_Y; HelpRect.rect.wRight = HelpRect.rect.wLeft+MAINMENU_HELP_REGION_WIDTH-1; HelpRect.rect.wBottom = HelpRect.rect.wTop+MAINMENU_HELP_REGION_HEIGHT-1; switch (bUIStyle) { case 1:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -