/* ================= 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_LoadGame_KeyFunc ================= */ static const char *UI_LoadGame_KeyFunc( int key, int down ) { if( down && key == K_ESCAPE && uiLoadGame.load.generic.flags & QMF_INACTIVE ) { UI_DeleteDialog(); return uiSoundNull; } return UI_DefaultKey( &uiLoadGame.menu, key, down ); }
/* ================= UI_PlayDemo_KeyFunc ================= */ static const char *UI_PlayDemo_KeyFunc( int key, int down ) { if( down && key == K_ESCAPE && uiPlayDemo.play.generic.flags & QMF_INACTIVE ) { UI_DeleteDialog(); return uiSoundNull; } return UI_DefaultKey( &uiPlayDemo.menu, key, down ); }
/* ================= UI_PlayDemo_Callback ================= */ static void UI_PlayDemo_Callback( void *self, int event ) { menuCommon_s *item = (menuCommon_s *)self; if( event == QM_CHANGED ) { if( strlen( uiPlayDemo.demoName[uiPlayDemo.demosList.curItem] ) == 0 ) uiPlayDemo.play.generic.flags |= QMF_GRAYED; else uiPlayDemo.play.generic.flags &= ~QMF_GRAYED; if( strlen( uiPlayDemo.delName[uiPlayDemo.demosList.curItem] ) == 0 || !stricmp( gpGlobals->demoname, uiPlayDemo.delName[uiPlayDemo.demosList.curItem] )) uiPlayDemo.remove.generic.flags |= QMF_GRAYED; else uiPlayDemo.remove.generic.flags &= ~QMF_GRAYED; return; } if( event != QM_ACTIVATED ) return; switch( item->id ) { case ID_CANCEL: UI_PopMenu(); break; case ID_PLAY: if( gpGlobals->demoplayback || gpGlobals->demorecording ) { CLIENT_COMMAND( FALSE, "stop" ); uiPlayDemo.play.generic.name = "Play"; uiPlayDemo.play.generic.statusText = "Play a demo"; uiPlayDemo.remove.generic.flags &= ~QMF_GRAYED; } else if( strlen( uiPlayDemo.demoName[uiPlayDemo.demosList.curItem] )) { char cmd[128]; sprintf( cmd, "playdemo \"%s\"\n", uiPlayDemo.demoName[uiPlayDemo.demosList.curItem] ); CLIENT_COMMAND( FALSE, cmd ); } break; case ID_NO: case ID_DELETE: UI_DeleteDialog(); break; case ID_YES: if( strlen( uiPlayDemo.delName[uiPlayDemo.demosList.curItem] )) { char cmd[128]; sprintf( cmd, "killdemo \"%s\"\n", uiPlayDemo.delName[uiPlayDemo.demosList.curItem] ); CLIENT_COMMAND( TRUE, cmd ); sprintf( cmd, "demos/%s.bmp", uiPlayDemo.delName[uiPlayDemo.demosList.curItem] ); PIC_Free( cmd ); // restarts the menu UI_PopMenu(); UI_PlayDemo_Menu(); return; } UI_DeleteDialog(); break; } }
/* ================= UI_SaveGame_Callback ================= */ static void UI_SaveGame_Callback( void *self, int event ) { menuCommon_s *item = (menuCommon_s *)self; if( event == QM_CHANGED ) { // never overwrite existing saves, because their names was never get collision if ( strlen( uiSaveGame.saveName[uiSaveGame.savesList.curItem] ) == 0 || CL_IsActive() == FALSE ) uiSaveGame.save.generic.flags |= QMF_GRAYED; else uiSaveGame.save.generic.flags &= ~QMF_GRAYED; if ( strlen( uiSaveGame.delName[uiSaveGame.savesList.curItem] ) == 0 ) uiSaveGame.remove.generic.flags |= QMF_GRAYED; else uiSaveGame.remove.generic.flags &= ~QMF_GRAYED; return; } if( event != QM_ACTIVATED ) return; switch( item->id ) { case ID_CANCEL: UI_PopMenu(); break; case ID_SAVE: if( strlen( uiSaveGame.saveName[uiSaveGame.savesList.curItem] )) { char cmd[128]; sprintf( cmd, "save/%s.bmp", uiSaveGame.saveName[uiSaveGame.savesList.curItem] ); PIC_Free( cmd ); sprintf( cmd, "save \"%s\"\n", uiSaveGame.saveName[uiSaveGame.savesList.curItem] ); CLIENT_COMMAND( FALSE, cmd ); UI_CloseMenu(); } break; case ID_NO: case ID_DELETE: UI_DeleteDialog(); break; case ID_YES: if( strlen( uiSaveGame.delName[uiSaveGame.savesList.curItem] )) { char cmd[128]; sprintf( cmd, "killsave \"%s\"\n", uiSaveGame.delName[uiSaveGame.savesList.curItem] ); CLIENT_COMMAND( TRUE, cmd ); sprintf( cmd, "save/%s.bmp", uiSaveGame.delName[uiSaveGame.savesList.curItem] ); PIC_Free( cmd ); // restarts the menu UI_PopMenu(); UI_SaveGame_Menu(); return; } UI_DeleteDialog(); break; } }
/* ================= UI_RecDemo_Callback ================= */ static void UI_RecDemo_Callback( void *self, int event ) { menuCommon_s *item = (menuCommon_s *)self; if( event == QM_CHANGED ) { // never overwrite existing saves, because their names was never get collision if( strlen( uiRecDemo.demoName[uiRecDemo.demosList.curItem] ) == 0 || !CL_IsActive() || gpGlobals->demoplayback ) uiRecDemo.record.generic.flags |= QMF_GRAYED; else uiRecDemo.record.generic.flags &= ~QMF_GRAYED; if( strlen( uiRecDemo.delName[uiRecDemo.demosList.curItem] ) == 0 || !stricmp( gpGlobals->demoname, uiRecDemo.delName[uiRecDemo.demosList.curItem] )) uiRecDemo.remove.generic.flags |= QMF_GRAYED; else uiRecDemo.remove.generic.flags &= ~QMF_GRAYED; return; } if( event != QM_ACTIVATED ) return; switch( item->id ) { case ID_CANCEL: UI_PopMenu(); break; case ID_RECORD: if( gpGlobals->demorecording ) { CLIENT_COMMAND( FALSE, "stop" ); uiRecDemo.record.generic.name = "Record"; uiRecDemo.record.generic.statusText = "Record a new demo"; uiRecDemo.remove.generic.flags &= ~QMF_GRAYED; } else if( strlen( uiRecDemo.demoName[uiRecDemo.demosList.curItem] )) { char cmd[128]; sprintf( cmd, "demos/%s.bmp", uiRecDemo.demoName[uiRecDemo.demosList.curItem] ); PIC_Free( cmd ); sprintf( cmd, "record \"%s\"\n", uiRecDemo.demoName[uiRecDemo.demosList.curItem] ); CLIENT_COMMAND( FALSE, cmd ); UI_CloseMenu(); } break; case ID_NO: case ID_DELETE: UI_DeleteDialog(); break; case ID_YES: if( strlen( uiRecDemo.delName[uiRecDemo.demosList.curItem] )) { char cmd[128]; sprintf( cmd, "killdemo \"%s\"\n", uiRecDemo.delName[uiRecDemo.demosList.curItem] ); CLIENT_COMMAND( TRUE, cmd ); sprintf( cmd, "demos/%s.bmp", uiRecDemo.delName[uiRecDemo.demosList.curItem] ); PIC_Free( cmd ); // restarts the menu UI_PopMenu(); UI_RecDemo_Menu(); return; } UI_DeleteDialog(); break; } }