/* ================= UI_LoadGame_Callback ================= */ static void UI_LoadGame_Callback( void *self, int event ) { menuCommon_s *item = (menuCommon_s *)self; if( event == QM_CHANGED ) { if( uiLoadGame.saveName[uiLoadGame.savesList.curItem][0] == '\0' ) uiLoadGame.load.generic.flags |= QMF_GRAYED; else uiLoadGame.load.generic.flags &= ~QMF_GRAYED; if( uiLoadGame.delName[uiLoadGame.savesList.curItem][0] == '\0' ) uiLoadGame.remove.generic.flags |= QMF_GRAYED; else uiLoadGame.remove.generic.flags &= ~QMF_GRAYED; return; } if( event != QM_ACTIVATED ) return; switch( item->id ) { case ID_CANCEL: UI_PopMenu(); break; case ID_LOAD: if( uiLoadGame.saveName[uiLoadGame.savesList.curItem][0] ) { char cmd[128]; sprintf( cmd, "load \"%s\"\n", uiLoadGame.saveName[uiLoadGame.savesList.curItem] ); BACKGROUND_TRACK( NULL, NULL ); CLIENT_COMMAND( FALSE, cmd ); } break; case ID_NO: case ID_DELETE: UI_DeleteDialog(); break; case ID_YES: if( uiLoadGame.delName[uiLoadGame.savesList.curItem][0] ) { char cmd[128]; sprintf( cmd, "killsave \"%s\"\n", uiLoadGame.delName[uiLoadGame.savesList.curItem] ); CLIENT_COMMAND( TRUE, cmd ); sprintf( cmd, "save/%s.bmp", uiLoadGame.delName[uiLoadGame.savesList.curItem] ); PIC_Free( cmd ); // restarts the menu UI_PopMenu(); UI_LoadGame_Menu(); return; } UI_DeleteDialog(); break; } }
/* ================= UI_Main_Callback ================= */ static void UI_Main_Callback( void *self, int event ) { menuCommon_s *item = (menuCommon_s *)self; switch( item->id ) { case ID_QUIT_BUTTON: if( event == QM_PRESSED ) ((menuBitmap_s *)self)->focusPic = ART_CLOSEBTN_D; else ((menuBitmap_s *)self)->focusPic = ART_CLOSEBTN_F; break; case ID_MINIMIZE: if( event == QM_PRESSED ) ((menuBitmap_s *)self)->focusPic = ART_MINIMIZE_D; else ((menuBitmap_s *)self)->focusPic = ART_MINIMIZE_F; break; } if( event != QM_ACTIVATED ) return; switch( item->id ) { case ID_CONSOLE: UI_SetActiveMenu( FALSE ); KEY_SetDest( KEY_CONSOLE ); break; case ID_RESUME: UI_CloseMenu(); break; case ID_NEWGAME: if( CL_IsActive( )) UI_PromptDialog(); else UI_Main_NewGame(); break; case ID_MULTIPLAYER: UI_MultiPlayer_Menu(); break; case ID_CONFIGURATION: UI_Options_Menu(); break; case ID_SAVERESTORE: if( CL_IsActive( )) UI_SaveLoad_Menu(); else UI_LoadGame_Menu(); break; case ID_CUSTOMGAME: UI_CustomGame_Menu(); break; case ID_PREVIEWS: SHELL_EXECUTE( MenuStrings[HINT_PREVIEWS_CMD], NULL, false ); break; case ID_QUIT: case ID_QUIT_BUTTON: UI_QuitDialog(); break; case ID_MINIMIZE: CLIENT_COMMAND( FALSE, "minimize\n" ); break; case ID_YES: if( !( uiMain.quitMessage.generic.flags & QMF_HIDDEN )) CLIENT_COMMAND( FALSE, "quit\n" ); else UI_Main_NewGame(); break; case ID_NO: if( !( uiMain.quitMessage.generic.flags & QMF_HIDDEN )) UI_QuitDialog(); else UI_PromptDialog(); break; } }