void M_QuickSaveResponse(int ch) { if (ch == 'y' || ch == KEY_JOY4) { M_DoSave (quickSaveSlot); S_Sound (CHAN_INTERFACE, "switches/exitbutn", 1, ATTN_NONE); } }
void M_QuickSaveResponse(int ch) { if (ch == KEY_ENTER) { M_DoSave(::g->quickSaveSlot); S_StartSound(NULL,sfx_swtchx); } }
void M_QuickSaveResponse(int ch) { if (ch == 'y') { M_DoSave (quickSaveSlot); S_Sound (CHAN_VOICE, "switches/exitbutn", 1, ATTN_NONE); } }
void M_SaveSelect(int choice) { const char* s; const ExpansionData* exp = DoomLib::GetCurrentExpansion(); switch ( ::g->gamemode ) { case shareware: case registered: case retail: s = (exp->mapNames[(::g->gameepisode-1)*9+::g->gamemap-1]); break; case commercial: default: s = (exp->mapNames[::g->gamemap-1]); break; } ::g->saveSlot = choice; strcpy(::g->savegamestrings[::g->saveSlot], s); M_DoSave(::g->saveSlot); }
// // M_Responder // qboolean M_Responder (event_t* ev) { int ch; int i; ch = -1; if (ev->type == ev_joystick && ::g->joywait < I_GetTime()) { if (ev->data3 == -1) { ch = KEY_UPARROW; ::g->joywait = I_GetTime() + 5; } else if (ev->data3 == 1) { ch = KEY_DOWNARROW; ::g->joywait = I_GetTime() + 5; } if (ev->data2 == -1) { ch = KEY_LEFTARROW; ::g->joywait = I_GetTime() + 2; } else if (ev->data2 == 1) { ch = KEY_RIGHTARROW; ::g->joywait = I_GetTime() + 2; } if (ev->data1&1) { ch = KEY_ENTER; ::g->joywait = I_GetTime() + 5; } if (ev->data1&2) { ch = KEY_BACKSPACE; ::g->joywait = I_GetTime() + 5; } } else { if (ev->type == ev_mouse && ::g->mousewait < I_GetTime()) { ::g->mmenu_mousey += ev->data3; if (::g->mmenu_mousey < ::g->lasty-30) { ch = KEY_DOWNARROW; ::g->mousewait = I_GetTime() + 5; ::g->mmenu_mousey = ::g->lasty -= 30; } else if (::g->mmenu_mousey > ::g->lasty+30) { ch = KEY_UPARROW; ::g->mousewait = I_GetTime() + 5; ::g->mmenu_mousey = ::g->lasty += 30; } ::g->mmenu_mousex += ev->data2; if (::g->mmenu_mousex < ::g->lastx-30) { ch = KEY_LEFTARROW; ::g->mousewait = I_GetTime() + 5; ::g->mmenu_mousex = ::g->lastx -= 30; } else if (::g->mmenu_mousex > ::g->lastx+30) { ch = KEY_RIGHTARROW; ::g->mousewait = I_GetTime() + 5; ::g->mmenu_mousex = ::g->lastx += 30; } if (ev->data1&1) { ch = KEY_ENTER; ::g->mousewait = I_GetTime() + 15; } if (ev->data1&2) { ch = KEY_BACKSPACE; ::g->mousewait = I_GetTime() + 15; } } else if (ev->type == ev_keydown) { ch = ev->data1; } } if (ch == -1) return false; // Save Game string input if (::g->saveStringEnter) { switch(ch) { case KEY_BACKSPACE: if (::g->saveCharIndex > 0) { ::g->saveCharIndex--; ::g->savegamestrings[::g->saveSlot][::g->saveCharIndex] = 0; } break; case KEY_ESCAPE: ::g->saveStringEnter = 0; strcpy(&::g->savegamestrings[::g->saveSlot][0],::g->saveOldString); break; case KEY_ENTER: ::g->saveStringEnter = 0; if (::g->savegamestrings[::g->saveSlot][0]) M_DoSave(::g->saveSlot); break; default: ch = toupper(ch); if (ch != 32) if (ch-HU_FONTSTART < 0 || ch-HU_FONTSTART >= HU_FONTSIZE) break; if (ch >= 32 && ch <= 127 && ::g->saveCharIndex < SAVESTRINGSIZE-1 && M_StringWidth(::g->savegamestrings[::g->saveSlot]) < (SAVESTRINGSIZE-2)*8) { ::g->savegamestrings[::g->saveSlot][::g->saveCharIndex++] = ch; ::g->savegamestrings[::g->saveSlot][::g->saveCharIndex] = 0; } break; } return true; } // Take care of any messages that need input if (::g->messageToPrint) { if (::g->messageNeedsInput == true && !(ch == KEY_ENTER || ch == KEY_BACKSPACE || ch == KEY_ESCAPE)) return false; ::g->menuactive = ::g->messageLastMenuActive; ::g->messageToPrint = 0; if (::g->messageRoutine) ::g->messageRoutine(ch); S_StartSound(NULL,sfx_swtchx); return true; } /* if (::g->devparm && ch == KEY_F1) { G_ScreenShot (); return true; } // F-Keys if (!::g->menuactive) switch(ch) { case KEY_MINUS: // Screen size down if (::g->automapactive || ::g->chat_on) return false; //M_SizeDisplay(0); S_StartSound(NULL,sfx_stnmov); return true; case KEY_EQUALS: // Screen size up if (::g->automapactive || ::g->chat_on) return false; //M_SizeDisplay(1); S_StartSound(NULL,sfx_stnmov); return true; case KEY_F1: // Help key M_StartControlPanel (); if ( ::g->gamemode == retail ) ::g->currentMenu = &::g->ReadDef2; else ::g->currentMenu = &::g->ReadDef1; ::g->itemOn = 0; S_StartSound(NULL,sfx_swtchn); return true; case KEY_F2: // Save M_StartControlPanel(); S_StartSound(NULL,sfx_swtchn); M_SaveGame(0); return true; case KEY_F3: // Load M_StartControlPanel(); S_StartSound(NULL,sfx_swtchn); M_LoadGame(0); return true; case KEY_F4: // Sound Volume M_StartControlPanel (); ::g->currentMenu = &::g->SoundDef; ::g->itemOn = sfx_vol; S_StartSound(NULL,sfx_swtchn); return true; case KEY_F5: // Detail toggle M_ChangeDetail(0); S_StartSound(NULL,sfx_swtchn); return true; case KEY_F6: // Quicksave S_StartSound(NULL,sfx_swtchn); M_QuickSave(); return true; case KEY_F7: // End game S_StartSound(NULL,sfx_swtchn); M_EndGame(0); return true; case KEY_F8: // Toggle messages M_ChangeMessages(0); S_StartSound(NULL,sfx_swtchn); return true; case KEY_F9: // Quickload S_StartSound(NULL,sfx_swtchn); M_QuickLoad(); return true; case KEY_F10: // Quit DOOM S_StartSound(NULL,sfx_swtchn); M_QuitDOOM(0); return true; case KEY_F11: // gamma toggle ::g->usegamma++; if (::g->usegamma > 4) ::g->usegamma = 0; ::g->players[::g->consoleplayer].message = gammamsg[::g->usegamma]; I_SetPalette ((byte*)W_CacheLumpName ("PLAYPAL",PU_CACHE_SHARED)); return true; } */ // Pop-up menu? if (!::g->menuactive) { if (ch == KEY_ESCAPE && ( ::g->gamestate == GS_LEVEL || ::g->gamestate == GS_INTERMISSION || ::g->gamestate == GS_FINALE ) ) { M_StartControlPanel (); S_StartSound(NULL,sfx_swtchn); return true; } return false; } // Keys usable within menu switch (ch) { case KEY_DOWNARROW: do { if (::g->itemOn+1 > ::g->currentMenu->numitems-1) ::g->itemOn = 0; else ::g->itemOn++; S_StartSound(NULL,sfx_pstop); } while(::g->currentMenu->menuitems[::g->itemOn].status==-1); return true; case KEY_UPARROW: do { if (!::g->itemOn) ::g->itemOn = ::g->currentMenu->numitems-1; else ::g->itemOn--; S_StartSound(NULL,sfx_pstop); } while(::g->currentMenu->menuitems[::g->itemOn].status==-1); return true; case KEY_LEFTARROW: if (::g->currentMenu->menuitems[::g->itemOn].routine && ::g->currentMenu->menuitems[::g->itemOn].status == 2) { S_StartSound(NULL,sfx_stnmov); ::g->currentMenu->menuitems[::g->itemOn].routine(0); } return true; case KEY_RIGHTARROW: if (::g->currentMenu->menuitems[::g->itemOn].routine && ::g->currentMenu->menuitems[::g->itemOn].status == 2) { S_StartSound(NULL,sfx_stnmov); ::g->currentMenu->menuitems[::g->itemOn].routine(1); } return true; case KEY_ENTER: if (::g->currentMenu->menuitems[::g->itemOn].routine && ::g->currentMenu->menuitems[::g->itemOn].status) { ::g->currentMenu->lastOn = ::g->itemOn; if (::g->currentMenu->menuitems[::g->itemOn].status == 2) { ::g->currentMenu->menuitems[::g->itemOn].routine(1); // right arrow S_StartSound(NULL,sfx_stnmov); } else { ::g->currentMenu->menuitems[::g->itemOn].routine(::g->itemOn); S_StartSound(NULL,sfx_pistol); } } return true; case KEY_ESCAPE: case KEY_BACKSPACE: ::g->currentMenu->lastOn = ::g->itemOn; if (::g->currentMenu->prevMenu) { ::g->currentMenu = ::g->currentMenu->prevMenu; ::g->itemOn = ::g->currentMenu->lastOn; S_StartSound(NULL,sfx_swtchn); } else if ( ::g->currentMenu == &::g->MainDef && ( !::g->demoplayback && ::g->gamestate != GS_DEMOSCREEN ) ) { M_ClearMenus(); ::g->paused = false; } return true; default: for (i = ::g->itemOn+1;i < ::g->currentMenu->numitems;i++) if (::g->currentMenu->menuitems[i].alphaKey == ch) { ::g->itemOn = i; S_StartSound(NULL,sfx_pstop); return true; } for (i = 0;i <= ::g->itemOn;i++) if (::g->currentMenu->menuitems[i].alphaKey == ch) { ::g->itemOn = i; S_StartSound(NULL,sfx_pstop); return true; } break; } return false; }