From 0c814ce42dd3fcbc609b1bab6cf2d7a92b19fc68 Mon Sep 17 00:00:00 2001 From: James R Date: Sun, 23 Feb 2020 22:14:14 -0800 Subject: [PATCH] Sync look back Also fixes look back applying to the first player in parties instead of locally. --- src/d_ticcmd.h | 3 ++- src/g_game.c | 7 +++++-- src/g_game.h | 2 +- src/k_kart.c | 2 +- src/p_user.c | 5 +---- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/d_ticcmd.h b/src/d_ticcmd.h index dab758f8d..c73c161b5 100644 --- a/src/d_ticcmd.h +++ b/src/d_ticcmd.h @@ -32,8 +32,9 @@ typedef enum BT_ATTACK = 1<<4, // Use Item BT_FORWARD = 1<<5, // Aim Item Forward BT_BACKWARD = 1<<6, // Aim Item Backward + BT_LOOKBACK = 1<<7, // Look Backward - // free: 1<<7 to 1<<12 + // free: 1<<8 to 1<<12 // Lua garbage BT_CUSTOM1 = 1<<13, diff --git a/src/g_game.c b/src/g_game.c index 22ded1c93..551261de8 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -1231,7 +1231,6 @@ INT32 JoyAxis(axis_input_e axissel, UINT8 p) // INT32 localaiming[MAXSPLITSCREENPLAYERS]; angle_t localangle[MAXSPLITSCREENPLAYERS]; -boolean camspin[MAXSPLITSCREENPLAYERS]; static fixed_t forwardmove[2] = {25<>16, 50<>16}; static fixed_t sidemove[2] = {2<>16, 4<>16}; @@ -1456,6 +1455,11 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer) if (InputDown(gc_drift, ssplayer) || (usejoystick && axis > 0)) cmd->buttons |= BT_DRIFT; + // rear view with any button/key + axis = JoyAxis(AXISLOOKBACK, ssplayer); + if (InputDown(gc_lookback, ssplayer) || (usejoystick && axis > 0)) + cmd->buttons |= BT_LOOKBACK; + // Lua scriptable buttons if (InputDown(gc_custom1, ssplayer)) cmd->buttons |= BT_CUSTOM1; @@ -1576,7 +1580,6 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer) keyboard_look[ssplayer-1] = kbl; turnheld[ssplayer-1] = th; resetdown[ssplayer-1] = rd; - camspin[ssplayer-1] = InputDown(gc_lookback, ssplayer); } /* Lua: Allow this hook to overwrite ticcmd. diff --git a/src/g_game.h b/src/g_game.h index de88d6bdc..9d4a3e4d9 100644 --- a/src/g_game.h +++ b/src/g_game.h @@ -129,6 +129,7 @@ typedef enum AXISDEAD, //Axises that don't want deadzones AXISFIRE, AXISDRIFT, + AXISLOOKBACK, } axis_input_e; // mouseaiming (looking up/down with the mouse or keyboard) @@ -154,7 +155,6 @@ INT32 JoyAxis(axis_input_e axissel, UINT8 p); extern angle_t localangle[MAXSPLITSCREENPLAYERS]; extern INT32 localaiming[MAXSPLITSCREENPLAYERS]; // should be an angle_t but signed -extern boolean camspin[MAXSPLITSCREENPLAYERS]; // SRB2Kart // // GAME diff --git a/src/k_kart.c b/src/k_kart.c index 8fdc61529..9ffe143fd 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -8874,7 +8874,7 @@ static void K_drawKartPlayerCheck(void) if (stplyr->awayviewtics) return; - if (camspin[0]) + if (( stplyr->cmd.buttons & BT_LOOKBACK )) return; for (i = 0; i < MAXPLAYERS; i++) diff --git a/src/p_user.c b/src/p_user.c index 193d597b5..035979c75 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -7371,6 +7371,7 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall if (P_CameraThinker(player, thiscam, resetcalled)) return true; + lookback = ( player->cmd.buttons & BT_LOOKBACK ); if (thiscam == &camera[1]) // Camera 2 { @@ -7380,7 +7381,6 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall camrotate = cv_cam2_rotate.value; camdist = FixedMul(cv_cam2_dist.value, mapobjectscale); camheight = FixedMul(cv_cam2_height.value, mapobjectscale); - lookback = camspin[1]; } else if (thiscam == &camera[2]) // Camera 3 { @@ -7390,7 +7390,6 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall camrotate = cv_cam3_rotate.value; camdist = FixedMul(cv_cam3_dist.value, mapobjectscale); camheight = FixedMul(cv_cam3_height.value, mapobjectscale); - lookback = camspin[2]; } else if (thiscam == &camera[3]) // Camera 4 { @@ -7400,7 +7399,6 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall camrotate = cv_cam4_rotate.value; camdist = FixedMul(cv_cam4_dist.value, mapobjectscale); camheight = FixedMul(cv_cam4_height.value, mapobjectscale); - lookback = camspin[3]; } else // Camera 1 { @@ -7410,7 +7408,6 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall camrotate = cv_cam_rotate.value; camdist = FixedMul(cv_cam_dist.value, mapobjectscale); camheight = FixedMul(cv_cam_height.value, mapobjectscale); - lookback = camspin[0]; } if (timeover)