//------------------------------------------------------------------------------ // Returns how long this button has been down since last call. fix MouseButtonDownTime (int button) { fix timeDown, time; #ifndef FAST_EVENTPOLL if (!bFastPoll) event_poll(SDL_MOUSEEVENTMASK); //polled in main/KConfig.c:read_bm_all() #endif if (!mouseData.buttons [button].pressed) { timeDown = mouseData.buttons [button].xTimeHeldDown; if (!timeDown && mouseData.buttons [button].rotated) timeDown = (fix) (MouseButtonDownCount (button) * gameStates.input.kcPollTime); mouseData.buttons [button].xTimeHeldDown = 0; } else { time = TimerGetFixedSeconds(); timeDown = time - mouseData.buttons [button].xTimeHeldDown; mouseData.buttons [button].xTimeHeldDown = time; } return timeDown; }
void ScoreTableView (int bNetwork) { int i, k, done, choice, nInMenu; uint entryTime = SDL_GetTicks (); int key; int oldstates [MAX_PLAYERS]; int previousSeconds_left = -1; int nReady,nEscaped; int bRedraw = 0; gameStates.menus.nInMenu++; gameStates.app.bGameRunning = 0; bNetwork = gameData.app.nGameMode & GM_NETWORK; for (i = 0; i < MAX_NUM_NET_PLAYERS; i++) audio.DestroyObjectSound (gameData.multiplayer.players [i].nObject); SetScreenMode (SCREEN_MENU); gameData.score.bWaitingForOthers = 0; //@@GrPaletteFadeIn (grPalette,32, 0); GameFlushInputs (); done = 0; for (i = 0; i < gameData.multiplayer.nPlayers; i++) oldstates [i] = gameData.multiplayer.players [i].connected; if (bNetwork) NetworkEndLevel (&key); backgroundManager.LoadStars (true); while (!done) { if (!bRedraw || (ogl.m_states.nDrawBuffer == GL_BACK)) { backgroundManager.Redraw (); ScoreTableRedraw (); bRedraw = 1; } gameData.score.nKillsChanged = 0; for (i = 0; i < 4; i++) if (JoyGetButtonDownCnt (i)) { if (LAST_OEM_LEVEL) { ScoreTableQuit (1, bNetwork); return; } LOCALPLAYER.connected = 7; if (bNetwork) NetworkSendEndLevelPacket (); break; } for (i = 0; i < 3; i++) if (MouseButtonDownCount (i)) { if (LAST_OEM_LEVEL) { ScoreTableQuit (1, bNetwork); return; } LOCALPLAYER.connected=7; if (bNetwork) NetworkSendEndLevelPacket (); break; } //see if redbook song needs to be restarted redbook.CheckRepeat (); k = KeyInKey (); switch (k) { case KEY_ENTER: case KEY_SPACEBAR: if ((gameData.app.nGameMode & GM_SERIAL) || (gameData.app.nGameMode & GM_MODEM)) { done=1; break; } if (LAST_OEM_LEVEL) { ScoreTableQuit (1, bNetwork); return; } gameData.multiplayer.players [gameData.multiplayer.nLocalPlayer].connected = 7; if (bNetwork) NetworkSendEndLevelPacket (); break; case KEY_ESC: if (gameData.app.nGameMode & GM_NETWORK) { gameData.multiplayer.xStartAbortMenuTime = TimerGetApproxSeconds (); nInMenu = gameStates.menus.nInMenu; gameStates.menus.nInMenu = 0; choice = MsgBox (NULL, NetworkEndLevelPoll3, NULL, 2, TXT_YES, TXT_NO, TXT_ABORT_GAME); gameStates.menus.nInMenu = nInMenu; } else nInMenu = gameStates.menus.nInMenu; gameStates.menus.nInMenu = 0; choice = MsgBox (NULL, NULL, 2, TXT_YES, TXT_NO, TXT_ABORT_GAME); gameStates.menus.nInMenu = nInMenu; if (choice == 0) { ScoreTableQuit (1, bNetwork); return; } gameData.score.nKillsChanged = 1; break; case KEY_PRINT_SCREEN: SaveScreenShot (NULL, 0); break; case KEY_BACKSPACE: Int3 (); break; default: break; } if ((SDL_GetTicks () >= entryTime + MAX_VIEW_TIME) && (LOCALPLAYER.connected != 7)) { if (LAST_OEM_LEVEL) { ScoreTableQuit (1, bNetwork); return; } if ((gameData.app.nGameMode & GM_SERIAL) || (gameData.app.nGameMode & GM_MODEM)) { done = 1; break; } LOCALPLAYER.connected = 7; if (bNetwork) NetworkSendEndLevelPacket (); } if (bNetwork && (gameData.app.nGameMode & GM_NETWORK)) { CMenu m (1); m.AddGauge ("", -1, 1000); //dummy for NetworkEndLevelPoll2() NetworkEndLevelPoll2 (m, key, 0, 0); for (nEscaped = 0, nReady = 0, i = 0; i < gameData.multiplayer.nPlayers; i++) { if (gameData.multiplayer.players [i].connected && (i != gameData.multiplayer.nLocalPlayer)) { // Check timeout for idle players if (SDL_GetTicks () > (uint) networkData.nLastPacketTime [i] + ENDLEVEL_IDLE_TIME) { #if TRACE console.printf (CON_DBG, "idle timeout for CPlayerData %d.\n", i); #endif gameData.multiplayer.players [i].connected = 0; NetworkSendEndLevelSub (i); } } if (gameData.multiplayer.players [i].connected != oldstates [i]) { if (szConditionLetters [gameData.multiplayer.players [i].connected] != szConditionLetters [oldstates [i]]) gameData.score.nKillsChanged = 1; oldstates [i] = gameData.multiplayer.players [i].connected; NetworkSendEndLevelPacket (); } if ((gameData.multiplayer.players [i].connected == 0) || (gameData.multiplayer.players [i].connected == 7)) nReady++; if (gameData.multiplayer.players [i].connected != 1) nEscaped++; } if (nReady >= gameData.multiplayer.nPlayers) done = 1; if (nEscaped >= gameData.multiplayer.nPlayers) gameData.reactor.countdown.nSecsLeft = -1; if (previousSeconds_left != gameData.reactor.countdown.nSecsLeft) { previousSeconds_left = gameData.reactor.countdown.nSecsLeft; gameData.score.nKillsChanged=1; } if (gameData.score.nKillsChanged) { ScoreTableRedraw (); gameData.score.nKillsChanged = 0; } } } LOCALPLAYER.connected = 7; // Restore background and exit paletteManager.DisableEffect (); GameFlushInputs (); ScoreTableQuit (0, bNetwork); }
void ScoreTableView (int bNetwork) { int i, k, done,choice; fix entryTime = TimerGetApproxSeconds (); int key; int oldstates [MAX_PLAYERS]; int previousSeconds_left=-1; int nReady,nEscaped; int bRedraw = 0; bkg bg; gameStates.menus.nInMenu++; gameStates.app.bGameRunning = 0; memset (&bg, 0, sizeof (bg)); bNetwork = gameData.app.nGameMode & GM_NETWORK; for (i = 0; i < MAX_NUM_NET_PLAYERS; i++) DigiKillSoundLinkedToObject (gameData.multiplayer.players [i].nObject); SetScreenMode (SCREEN_MENU); gameData.score.bWaitingForOthers = 0; //@@GrPaletteFadeIn (grPalette,32, 0); GameFlushInputs (); done = 0; for (i = 0; i < gameData.multiplayer.nPlayers; i++) oldstates [i] = gameData.multiplayer.players [i].connected; if (bNetwork) NetworkEndLevel (&key); while (!done) { if (!bRedraw || (curDrawBuffer == GL_BACK)) { LoadStars (&bg, bRedraw); ScoreTableRedraw (); bRedraw = 1; } gameData.score.nKillsChanged = 0; for (i = 0; i < 4; i++) if (JoyGetButtonDownCnt (i)) { if (LAST_OEM_LEVEL) { ScoreTableQuit (&bg, 1, bNetwork); return; } LOCALPLAYER.connected = 7; if (bNetwork) NetworkSendEndLevelPacket (); break; } for (i = 0; i < 3; i++) if (MouseButtonDownCount (i)) { if (LAST_OEM_LEVEL) { ScoreTableQuit (&bg, 1, bNetwork); return; } LOCALPLAYER.connected=7; if (bNetwork) NetworkSendEndLevelPacket (); break; } //see if redbook song needs to be restarted SongsCheckRedbookRepeat (); k = KeyInKey (); switch (k) { case KEY_ENTER: case KEY_SPACEBAR: if ((gameData.app.nGameMode & GM_SERIAL) || (gameData.app.nGameMode & GM_MODEM)) { done=1; break; } if (LAST_OEM_LEVEL) { ScoreTableQuit (&bg, 1, bNetwork); return; } gameData.multiplayer.players [gameData.multiplayer.nLocalPlayer].connected = 7; if (bNetwork) NetworkSendEndLevelPacket (); break; case KEY_ESC: if (gameData.app.nGameMode & GM_NETWORK) { gameData.multiplayer.xStartAbortMenuTime = TimerGetApproxSeconds (); choice=ExecMessageBox1 (NULL, NetworkEndLevelPoll3, NULL, 2, TXT_YES, TXT_NO, TXT_ABORT_GAME); } else choice=ExecMessageBox (NULL, NULL, 2, TXT_YES, TXT_NO, TXT_ABORT_GAME); if (choice == 0) { ScoreTableQuit (&bg, 1, bNetwork); return; } gameData.score.nKillsChanged=1; break; case KEY_PRINT_SCREEN: SaveScreenShot (NULL, 0); break; case KEY_BACKSP: Int3 (); break; default: break; } if ((TimerGetApproxSeconds () >= entryTime + MAX_VIEW_TIME) && (LOCALPLAYER.connected != 7)) { if (LAST_OEM_LEVEL) { ScoreTableQuit (&bg, 1, bNetwork); return; } if ((gameData.app.nGameMode & GM_SERIAL) || (gameData.app.nGameMode & GM_MODEM)) { done=1; break; } LOCALPLAYER.connected = 7; if (bNetwork) NetworkSendEndLevelPacket (); } if (bNetwork && (gameData.app.nGameMode & GM_NETWORK)) { NetworkEndLevelPoll2 (0, NULL, &key, 0); for (nEscaped = 0, nReady = 0, i = 0; i < gameData.multiplayer.nPlayers; i++) { if (gameData.multiplayer.players [i].connected && i!=gameData.multiplayer.nLocalPlayer) { // Check timeout for idle players if (TimerGetApproxSeconds () > networkData.nLastPacketTime [i]+ENDLEVEL_IDLE_TIME) { #if TRACE con_printf (CONDBG, "idle timeout for tPlayer %d.\n", i); #endif gameData.multiplayer.players [i].connected = 0; NetworkSendEndLevelSub (i); } } if (gameData.multiplayer.players [i].connected!=oldstates [i]) { if (szConditionLetters [gameData.multiplayer.players [i].connected] != szConditionLetters [oldstates [i]]) gameData.score.nKillsChanged = 1; oldstates [i] = gameData.multiplayer.players [i].connected; NetworkSendEndLevelPacket (); } if (gameData.multiplayer.players [i].connected==0 || gameData.multiplayer.players [i].connected==7) nReady++; if (gameData.multiplayer.players [i].connected!=1) nEscaped++; } if (nReady >= gameData.multiplayer.nPlayers) done = 1; if (nEscaped >= gameData.multiplayer.nPlayers) gameData.reactor.countdown.nSecsLeft = -1; if (previousSeconds_left != gameData.reactor.countdown.nSecsLeft) { previousSeconds_left = gameData.reactor.countdown.nSecsLeft; gameData.score.nKillsChanged=1; } if (gameData.score.nKillsChanged) { ScoreTableRedraw (); gameData.score.nKillsChanged = 0; } } } LOCALPLAYER.connected = 7; // Restore background and exit GrPaletteFadeOut (NULL, 32, 0); GameFlushInputs (); ScoreTableQuit (&bg, 0, bNetwork); }
int ReadControls (void) { int key, skipControls = 0; fix keyTime; static ubyte explodingFlag=0; gameStates.app.bPlayerFiredLaserThisFrame=-1; if (!gameStates.app.bEndLevelSequence && !gameStates.app.bPlayerIsDead) { if ((gameData.demo.nState == ND_STATE_PLAYBACK) || (gameData.marker.nDefiningMsg) || gameData.multigame.msg.bSending || gameData.multigame.msg.bDefining ) // WATCH OUT!!! WEIRD CODE ABOVE!!! memset(&Controls, 0, sizeof(tControlInfo)); else skipControls = ControlsReadAll (); //NOTE LINK TO ABOVE!!! CheckRearView (); // If automap key pressed, enable automap unless you are in network mode, control center destroyed and < 10 seconds left if (Controls [0].automapDownCount && !gameData.objs.speedBoost [OBJ_IDX (gameData.objs.consoleP)].bBoosted && !(IsMultiGame && gameData.reactor.bDestroyed && (gameData.reactor.countdown.nSecsLeft < 10))) automap.m_bDisplay = -1; DoWeaponStuff (); } if (gameStates.app.bPlayerExploded) { //gameStates.app.bPlayerIsDead && (gameData.objs.consoleP->flags & OF_EXPLODING)) { if (!explodingFlag) { explodingFlag = 1; // When CPlayerData starts exploding, clear all input devices... GameFlushInputs (); } else { int i; for (i = 0; i < 4; i++) if (JoyGetButtonDownCnt (i) > 0) gameStates.app.bDeathSequenceAborted = 1; for (i = 0; i < 3; i++) if (MouseButtonDownCount (i) > 0) gameStates.app.bDeathSequenceAborted = 1; if (gameStates.app.bDeathSequenceAborted) GameFlushInputs (); } } else { explodingFlag = 0; } if (gameData.demo.nState == ND_STATE_PLAYBACK) UpdateVCRState (); while ((key = KeyInKeyTime (&keyTime)) != 0) { if (gameData.marker.nDefiningMsg) { MarkerInputMessage (key); continue; } if (IsMultiGame && (gameData.multigame.msg.bSending || gameData.multigame.msg.bDefining)) { MultiMsgInputSub (key); continue; //get next key } #if DBG if ((key&KEYDBGGED) && IsMultiGame) { gameData.multigame.msg.nReceiver = 100; // Send to everyone... sprintf(gameData.multigame.msg.szMsg, "%s %s", TXT_I_AM_A, TXT_CHEATER); } #endif #ifdef CONSOLE if(!console.Events (key)) continue; #endif if (gameStates.app.bPlayerIsDead) HandleDeathKey (key); if (gameStates.app.bEndLevelSequence) HandleEndlevelKey (key); else if (gameData.demo.nState == ND_STATE_PLAYBACK) { HandleDemoKey (key); #if DBG HandleTestKey (key); #endif } else { FinalCheats (key); HandleSystemKey (key); HandleVRKey (key); HandleGameKey (key); #if DBG HandleTestKey (key); #endif } } return skipControls; }
void scores_view(int citem) { fix t0 = 0, t1; int c,i,done,looper; int k, bRedraw = 0; sbyte fades[64] = { 1,1,1,2,2,3,4,4,5,6,8,9,10,12,13,15,16,17,19,20,22,23,24,26,27,28,28,29,30,30,31,31,31,31,31,30,30,29,28,28,27,26,24,23,22,20,19,17,16,15,13,12,10,9,8,6,5,4,4,3,2,2,1,1 }; bkg bg; memset (&bg, 0, sizeof (bg)); ReshowScores: scores_read(); SetScreenMode(SCREEN_MENU); WINDOS( DDGrSetCurrentCanvas(NULL), GrSetCurrentCanvas(NULL) ); xOffs = (grdCurCanv->cv_bitmap.bm_props.w - 640) / 2; yOffs = (grdCurCanv->cv_bitmap.bm_props.h - 480) / 2; if (xOffs < 0) xOffs = 0; if (yOffs < 0) yOffs = 0; GameFlushInputs(); done = 0; looper = 0; while(!done) { if (!bRedraw || gameOpts->menus.nStyle) { NMDrawBackground(&bg,xOffs, yOffs, xOffs + 640, xOffs + 480, bRedraw); grdCurCanv->cv_font = MEDIUM3_FONT; WIN(DDGRLOCK(dd_grd_curcanv)); GrString( 0x8000, yOffs + LHY(15), TXT_HIGH_SCORES ); grdCurCanv->cv_font = SMALL_FONT; GrSetFontColorRGBi (RGBA_PAL (31,26,5), 1, 0, 0); GrString( xOffs + LHX(31+33+XX), yOffs + LHY(46+7+YY), TXT_NAME ); GrString( xOffs + LHX(82+33+XX), yOffs + LHY(46+7+YY), TXT_SCORE ); GrString( xOffs + LHX(127+33+XX), yOffs + LHY(46+7+YY), TXT_SKILL ); GrString( xOffs + LHX(170+33+XX), yOffs + LHY(46+7+YY), TXT_LEVELS ); // GrString( 202, 46, "Kills" ); // GrString( 234, 46, "Rescues" ); GrString( xOffs + LHX(288-42+XX), yOffs + LHY(46+7+YY), TXT_TIME ); if ( citem < 0 ) GrString( 0x8000, yOffs + LHY(175), TXT_PRESS_CTRL_R ); GrSetFontColorRGBi (RGBA_PAL (28,28,28), 1, 0, 0); //GrPrintF( 0x8000, yOffs + LHY(31), "%c%s%c - %s", 34, Scores.cool_saying, 34, Scores.stats[0].name ); WIN(DDGRUNLOCK(dd_grd_curcanv)); for (i=0; i<MAX_HIGH_SCORES; i++ ) { //@@if (i==0) { //@@ GrSetFontColorRGBi (RGBA_PAL (28,28,28), 1, 0, 0); //@@} else { //@@ GrSetFontColor( grFadeTable[BM_XRGB(28,28,28)+((28-i*2)*256)], 1, 0, 0); //@@} c = 28 - i * 2; GrSetFontColorRGBi (RGBA_PAL (c, c, c), 1, 0, 0); scores_draw_item( i, Scores.stats + i); } GrPaletteFadeIn( NULL,32, 0); #ifdef OGL if (citem < 0) GrUpdate (0); #endif bRedraw = 1; } if ( citem > -1 ) { t1 = TimerGetFixedSeconds(); //if (t1 - t0 >= F1_0/128 ) { t0 = t1; //@@GrSetFontColor( grFadeTable[fades[looper]*256+BM_XRGB(28,28,28)], -1 ); c = 7 + fades [looper]; GrSetFontColorRGBi (RGBA_PAL (c, c, c), 1, 0, 0); if (++looper > 63) looper=0; if ( citem == MAX_HIGH_SCORES ) scores_draw_item( MAX_HIGH_SCORES, &Last_game ); else scores_draw_item( citem, Scores.stats + citem ); } GrUpdate (0); } for (i=0; i<4; i++ ) if (joy_get_button_down_cnt(i)>0) done=1; for (i=0; i<3; i++ ) if (MouseButtonDownCount(i)>0) done=1; //see if redbook song needs to be restarted songs_check_redbook_repeat(); #ifdef WINDOWS { MSG msg; DoMessageStuff(&msg); if (_RedrawScreen) { _RedrawScreen = FALSE; goto ReshowScores; } DDGRRESTORE; } #endif k = KeyInKey(); switch( k ) { case KEY_CTRLED+KEY_R: if ( citem < 0 ) { // Reset scores... if ( ExecMessageBox( NULL, NULL, 2, TXT_NO, TXT_YES, TXT_RESET_HIGH_SCORES )==1 ) { CFDelete(get_scores_filename(), gameFolders.szDataDir); GrPaletteFadeOut (NULL, 32, 0 ); goto ReshowScores; } } break; case KEY_BACKSP: Int3(); k = 0; break; case KEY_PRINT_SCREEN: SaveScreenShot (NULL, 0); k = 0; break; case KEY_ENTER: case KEY_SPACEBAR: case KEY_ESC: done=1; break; } } // Restore background and exit GrPaletteFadeOut (NULL, 32, 0 ); #ifdef WINDOWS DDGRRESTORE; #endif WINDOS( DDGrSetCurrentCanvas(NULL), GrSetCurrentCanvas(NULL) ); GameFlushInputs(); NMRemoveBackground (&bg); }
void ControlsDoMouse (int *mouseAxis, int nMouseButtons, int *bSlideOn, int *bBankOn, fix *pitchTimeP, fix *headingTimeP, int *nCruiseSpeed, int bGetSlideBank) { int v, nMouseSensMod = 8; if (bGetSlideBank == 0) { if ((v = kcMouse [5].value) < 255) *bSlideOn |= nMouseButtons & (1 << v); if ((v = kcMouse [10].value) < 255) *bBankOn |= nMouseButtons & (1 << v); return; } // Buttons if (bGetSlideBank == 2) { if ((v = kcMouse [0].value) < 255) { Controls [0].firePrimaryState |= MouseButtonState (v); Controls [0].firePrimaryDownCount += MouseButtonDownCount (v); } if ((v = kcMouse [1].value) < 255) { Controls [0].fireSecondaryState |= MouseButtonState (v); Controls [0].fireSecondaryDownCount += MouseButtonDownCount (v); } if ((v = kcMouse [2].value) < 255) Controls [0].forwardThrustTime += MouseButtonDownTime (v); if ((v = kcMouse [3].value) < 255) Controls [0].forwardThrustTime -= MouseButtonDownTime (v); if ((v = kcMouse [4].value) < 255) Controls [0].fireFlareDownCount += MouseButtonDownCount (v); if ((v = kcMouse [6].value) < 255) Controls [0].sidewaysThrustTime -= MouseButtonDownTime (v); if ((v = kcMouse [7].value) < 255) Controls [0].sidewaysThrustTime += MouseButtonDownTime (v); if ((v = kcMouse [8].value) < 255) Controls [0].verticalThrustTime += MouseButtonDownTime (v); if ((v = kcMouse [9].value) < 255) Controls [0].verticalThrustTime -= MouseButtonDownTime (v); if ((v = kcMouse [11].value) < 255) Controls [3].bankTime += MouseButtonDownTime (v); if ((v = kcMouse [12].value) < 255) Controls [3].bankTime -= MouseButtonDownTime (v); if ((v = kcMouse [25].value) < 255) { Controls [0].rearViewDownCount += MouseButtonDownCount (v); Controls [0].rearViewDownState |= MouseButtonState (v); } if ((v = kcMouse [26].value) < 255) Controls [0].dropBombDownCount += MouseButtonDownCount (v); if ((v = kcMouse [27].value) < 255) Controls [0].afterburnerState |= MouseButtonState (v); if (((v = kcMouse [28].value) < 255) && MouseButtonState (v)) Controls [0].cyclePrimaryCount += MouseButtonDownCount (v); if (((v = kcMouse [29].value) < 255) && MouseButtonState (v)) Controls [0].cycleSecondaryCount += MouseButtonDownCount (v); if (((v = kcMouse [30].value) < 255) && MouseButtonState (v)) Controls [0].zoomDownCount += MouseButtonDownCount (v); // Axis movements if ((v = kcMouse [17].value) < 255) { if (kcMouse [18].value) // If inverted... Controls [0].sidewaysThrustTime -= mouseAxis [v]; else Controls [0].sidewaysThrustTime += mouseAxis [v]; } if ((v = kcMouse [19].value) < 255) { if (kcMouse [20].value) // If inverted... Controls [0].verticalThrustTime -= mouseAxis [v]; else Controls [0].verticalThrustTime += mouseAxis [v]; } if (((v = kcMouse [21].value) < 255) && mouseAxis [v]) { if (kcMouse [22].value) // If inverted... Controls [3].bankTime -= mouseAxis [v]; else Controls [3].bankTime += mouseAxis [v]; } if ((v = kcMouse [23].value) < 255) { if (kcMouse [24].value) // If inverted... Controls [0].forwardThrustTime += mouseAxis [v]; else Controls [0].forwardThrustTime -= mouseAxis [v]; } // special continuous slide & bank handling if (*bSlideOn) { if ((v = kcMouse [13].value) < 255) { if (kcMouse [14].value) // If inverted... Controls [0].verticalThrustTime += mouseAxis [v]; else Controls [0].verticalThrustTime -= mouseAxis [v]; } if ((v = kcMouse [15].value) < 255) { if (kcMouse [16].value) // If inverted... Controls [0].sidewaysThrustTime -= mouseAxis [v]; else Controls [0].sidewaysThrustTime += mouseAxis [v]; } } else { SDL_GetMouseState (&mouseData.x, &mouseData.y); if (!gameStates.app.bNostalgia && gameOpts->input.mouse.bJoystick) { int dx = mouseData.x - SWIDTH / 2; int dz = CalcDeadzone (mouseData.y - SHEIGHT / 2, gameOpts->input.mouse.nDeadzone); if (dx < 0) { if (dx > -dz) dx = 0; else dx += dz; } else { //dz = dz * grdCurScreen->scWidth / grdCurScreen->scHeight; if (dx < dz) dx = 0; else dx -= dz; } dx = 640 * dx / (SWIDTH / gameOpts->input.mouse.sensitivity [0]); Controls [3].headingTime += dx; // * gameOpts->input.mouse.sensitivity [0]); // nMouseSensMod; } else { if (((v = kcMouse [13].value) < 255) && mouseAxis [v]) { if (kcMouse [14].value) // If inverted... Controls [3].pitchTime += (mouseAxis [v] * gameOpts->input.mouse.sensitivity [1]) / nMouseSensMod; else Controls [3].pitchTime -= (mouseAxis [v] * gameOpts->input.mouse.sensitivity [1]) / nMouseSensMod; } } if (*bBankOn) { if (((v = kcMouse [15].value) < 255) && mouseAxis [v]) { if (kcMouse [16].value) // If inverted... Controls [3].bankTime -= (mouseAxis [v] * gameOpts->input.mouse.sensitivity [2]) / nMouseSensMod; else Controls [3].bankTime += (mouseAxis [v] * gameOpts->input.mouse.sensitivity [2]) / nMouseSensMod; } } else { if (!gameStates.app.bNostalgia && gameOpts->input.mouse.bJoystick) { int dy = mouseData.y - SHEIGHT / 2; int dz = CalcDeadzone (mouseData.x - SWIDTH / 2, gameOpts->input.mouse.nDeadzone); if (kcMouse [14].value) dy = -dy; if (dy < 0) { if (dy > -dz) dy = 0; else dy += dz; } else { if (dy < dz) dy = 0; else dy -= dz; } dy = 480 * dy / (SHEIGHT / gameOpts->input.mouse.sensitivity [1]); Controls [3].pitchTime += dy; // * gameOpts->input.mouse.sensitivity [1]); // nMouseSensMod; } else { if (((v = kcMouse [15].value) < 255) && mouseAxis [v]) { if (kcMouse [16].value) // If inverted... Controls [3].headingTime -= (mouseAxis [v] * gameOpts->input.mouse.sensitivity [0]) / nMouseSensMod; else Controls [3].headingTime += (mouseAxis [v] * gameOpts->input.mouse.sensitivity [0]) / nMouseSensMod; } } } } } if (gameStates.input.nMouseType == CONTROL_CYBERMAN) { if (bGetSlideBank == 2) { Controls [0].verticalThrustTime += MouseButtonDownTime (D2_MB_Z_UP) / 2; Controls [0].verticalThrustTime -= MouseButtonDownTime (D2_MB_Z_DOWN) / 2; Controls [3].bankTime += MouseButtonDownTime (D2_MB_BANK_LEFT); Controls [3].bankTime -= MouseButtonDownTime (D2_MB_BANK_RIGHT); } if (*bSlideOn) { if (bGetSlideBank == 2) { Controls [0].verticalThrustTime -= MouseButtonDownTime (D2_MB_PITCH_FORWARD); Controls [0].verticalThrustTime += MouseButtonDownTime (D2_MB_PITCH_BACKWARD); Controls [0].sidewaysThrustTime -= MouseButtonDownTime (D2_MB_HEAD_LEFT); Controls [0].sidewaysThrustTime += MouseButtonDownTime (D2_MB_HEAD_RIGHT); } } else if (bGetSlideBank == 1) { *pitchTimeP += MouseButtonDownTime (D2_MB_PITCH_FORWARD) / (PH_SCALE * 2); *pitchTimeP -= MouseButtonDownTime (D2_MB_PITCH_BACKWARD) / (PH_SCALE * 2); if (!*bBankOn) { *headingTimeP -= MouseButtonDownTime (D2_MB_HEAD_LEFT) /PH_SCALE; *headingTimeP += MouseButtonDownTime (D2_MB_HEAD_RIGHT) /PH_SCALE; } } if (*bBankOn) { if (bGetSlideBank == 2) { Controls [3].bankTime -= MouseButtonDownTime (D2_MB_HEAD_LEFT); Controls [3].bankTime += MouseButtonDownTime (D2_MB_HEAD_RIGHT); } } } }