int SetRearView (int bOn) { if (gameStates.render.bRearView == bOn) return 0; if ((gameStates.render.bRearView = bOn)) { SetFreeCam (0); SetChaseCam (0); if (gameStates.render.cockpit.nType == CM_FULL_COCKPIT) { CGenericCockpit::Save (); cockpit->Activate (CM_REAR_VIEW); } if (gameData.demo.nState == ND_STATE_RECORDING) NDRecordRearView (); } else { if (gameStates.render.cockpit.nType == CM_REAR_VIEW) CGenericCockpit::Restore (); if (gameData.demo.nState == ND_STATE_RECORDING) NDRecordRestoreRearView (); } return 1; }
//------------------------------------------------------------------------------ //this is for system-level keys, such as help, etc. //returns 1 if screen changed int HandleSystemKey (int key) { int bScreenChanged = 0; int bStopPlayerMovement = 1; //if (gameStates.gameplay.bSpeedBoost) // return 0; if (!gameStates.app.bPlayerIsDead) switch (key) { case KEY_ESC: if (gameData.app.bGamePaused) gameData.app.bGamePaused = 0; else { gameStates.app.bGameAborted = 1; SetFunctionMode (FMODE_MENU); } break; case KEY_SHIFTED + KEY_F1: bScreenChanged = SelectNextWindowFunction (0); break; case KEY_SHIFTED + KEY_F2: bScreenChanged = SelectNextWindowFunction (1); break; case KEY_SHIFTED + KEY_F3: gameOpts->render.cockpit.nWindowSize = (gameOpts->render.cockpit.nWindowSize + 1) % 4; bScreenChanged = 1; //SelectNextWindowFunction(1); break; case KEY_CTRLED + KEY_F3: gameOpts->render.cockpit.nWindowPos = (gameOpts->render.cockpit.nWindowPos + 1) % 6; bScreenChanged = 1; //SelectNextWindowFunction(1); break; case KEY_SHIFTED + KEY_CTRLED + KEY_F3: gameOpts->render.cockpit.nWindowZoom = (gameOpts->render.cockpit.nWindowZoom + 1) % 4; bScreenChanged = 1; //SelectNextWindowFunction(1); break; } if (!gameStates.app.bPlayerIsDead || (LOCALPLAYER.lives > 1)) { switch (key) { /* case KEY_SHIFTED + KEY_ESC: console.Show (); break; */ case KEY_COMMAND + KEY_P: case KEY_CTRLED + KEY_P: case KEY_PAUSE: DoGamePause (); break; case KEY_CTRLED + KEY_ALTED + KEY_S: if (!ToggleFreeCam ()) return 0; break; case KEY_COMMAND + KEY_SHIFTED + KEY_P: case KEY_PRINT_SCREEN: gameStates.app.bSaveScreenshot = 1; SaveScreenShot (NULL, 0); break; case KEY_F1: ShowHelp (); break; case KEY_F2: //gameStates.app.bConfigMenu = 1; break; if (!IsMultiGame) { paletteManager.SaveEffect (); paletteManager.ResetEffect (); paletteManager.LoadEffect (); } ConfigMenu (); if (!IsMultiGame) paletteManager.LoadEffect (); break; case KEY_F3: if (!GuidedInMainView ()) { SetFreeCam (0); SetChaseCam (0); cockpit->Toggle (); bScreenChanged = 1; } break; case KEY_F7 + KEY_SHIFTED: paletteManager.SaveEffect (); JoyDefsCalibrate (); paletteManager.LoadEffect (); break; case KEY_SHIFTED + KEY_MINUS: case KEY_MINUS: ShrinkWindow (); bScreenChanged = 1; break; case KEY_SHIFTED + KEY_EQUALS: case KEY_EQUALS: GrowWindow (); bScreenChanged = 1; break; case KEY_CTRLED + KEY_F5: saveGameManager.Save (0, 0, 1, 0); break; case KEY_CTRLED + KEY_F9: saveGameManager.Load (0, 0, 1, 0); break; case KEY_F5: if (gameData.demo.nState == ND_STATE_RECORDING) { NDStopRecording (); } else if (gameData.demo.nState == ND_STATE_NORMAL) if (!gameData.app.bGamePaused) //can't start demo while paused NDStartRecording (); break; case KEY_ALTED + KEY_F4: gameData.multigame.bShowReticleName = (gameData.multigame.bShowReticleName + 1) % 2; case KEY_F7: gameData.multigame.kills.bShowList = (gameData.multigame.kills.bShowList + 1) % (IsTeamGame ? 4 : 3); if (IsMultiGame) MultiSortKillList (); bStopPlayerMovement = 0; break; case KEY_CTRLED + KEY_F7: if ((gameStates.render.cockpit.bShowPingStats = !gameStates.render.cockpit.bShowPingStats)) ResetPingStats (); break; case KEY_CTRLED + KEY_F8: gameData.stats.nDisplayMode = (gameData.stats.nDisplayMode + 1) % 5; gameOpts->render.cockpit.bPlayerStats = gameData.stats.nDisplayMode != 0; break; case KEY_F8: MultiSendMsgStart (-1); bStopPlayerMovement = 0; break; case KEY_F9: case KEY_F10: case KEY_F11: case KEY_F12: MultiSendMacro (key); bStopPlayerMovement = 0; break; // send taunt macros case KEY_CTRLED + KEY_F12: gameData.trackIR.x = gameData.trackIR.y = 0; break; case KEY_ALTED + KEY_F12: if (!ToggleChaseCam ()) return 0; break; case KEY_SHIFTED + KEY_F9: case KEY_SHIFTED + KEY_F10: case KEY_SHIFTED + KEY_F11: case KEY_SHIFTED + KEY_F12: MultiDefineMacro (key); bStopPlayerMovement = 0; break; // redefine taunt macros case KEY_ALTED + KEY_F2: if (!gameStates.app.bPlayerIsDead && !(IsMultiGame && !IsCoopGame)) { paletteManager.SaveEffectAndReset (); paletteManager.SetEffect (); // get only the effect color back saveGameManager.Save (0, 0, 0, NULL); paletteManager.LoadEffect (); } break; // 0 means not between levels. case KEY_ALTED + KEY_F3: if (!gameStates.app.bPlayerIsDead && (!IsMultiGame || IsCoopGame)) { paletteManager.SaveEffectAndReset (); saveGameManager.Load (1, 0, 0, NULL); if (gameData.app.bGamePaused) DoGamePause (); } break; case KEY_F4 + KEY_SHIFTED: if (!gameStates.app.bD1Mission) DoEscortMenu (); break; case KEY_F4 + KEY_SHIFTED + KEY_ALTED: if (!gameStates.app.bD1Mission) ChangeGuidebotName (); break; case KEY_MINUS + KEY_ALTED: songManager.Prev (); break; case KEY_EQUALS + KEY_ALTED: songManager.Next (); break; //added 8/23/99 by Matt Mueller for hot key res/fullscreen changing, and menu access case KEY_CTRLED + KEY_SHIFTED + KEY_PADDIVIDE: case KEY_ALTED + KEY_CTRLED + KEY_PADDIVIDE: case KEY_ALTED + KEY_SHIFTED + KEY_PADDIVIDE: RenderOptionsMenu (); break; case KEY_CTRLED + KEY_F1: SwitchDisplayMode (-1); break; case KEY_CTRLED + KEY_F2: SwitchDisplayMode (1); break; case KEY_ALTED + KEY_ENTER: case KEY_ALTED + KEY_PADENTER: GrToggleFullScreenGame (); break; default: return bScreenChanged; } //switch (key) } if (bStopPlayerMovement) { StopPlayerMovement (); gameStates.app.bEnterGame = 2; } return bScreenChanged; }