Fix democam not moving

This commit is contained in:
NepDisk 2025-04-01 20:30:09 -04:00
parent f81c764057
commit 104bfaa7fe

View file

@ -965,8 +965,7 @@ static void G_DoAnglePrediction(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer, p
void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer)
{
const boolean fordemocam = ssplayer == UINT8_MAX;
const UINT8 forplayer = fordemocam ? 0 : ssplayer-1;
const UINT8 forplayer = ssplayer-1;
static INT32 turnheld[MAXSPLITSCREENPLAYERS]; // for accelerative turning
static boolean resetdown[MAXSPLITSCREENPLAYERS]; // don't cam reset every frame
@ -979,10 +978,7 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer)
player_t *player = &players[g_localplayers[forplayer]];
camera_t *thiscam = &camera[forplayer];
boolean *rd = &resetdown[forplayer];
boolean spectating = fordemocam || player->spectator;
if (!fordemocam && demo.playback) return;
boolean spectating = player->spectator || thiscam->freecam;
// Is there any reason this can't just be I_BaseTiccmd?
switch (ssplayer)
{
@ -1003,12 +999,12 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer)
// why build a ticcmd if we're paused?
// Or, for that matter, if we're being reborn.
if (!fordemocam && (paused || P_AutoPause() || (gamestate == GS_LEVEL && player->playerstate == PST_REBORN)))
if (paused || P_AutoPause() || (gamestate == GS_LEVEL && player->playerstate == PST_REBORN))
{
return;
}
if (!fordemocam && K_PlayerUsesBotMovement(player))
if (K_PlayerUsesBotMovement(player))
{
// Bot ticcmd is generated by K_BuildBotTiccmd
return;
@ -1099,7 +1095,7 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer)
forward += (value * MAXPLMOVE) / JOYAXISRANGE;
}
if (!fordemocam && player->sneakertimer)
if (player->sneakertimer)
forward = MAXPLMOVE; // 50
value = G_PlayerInputAnalog(forplayer, gc_brake, false);
@ -1144,7 +1140,7 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer)
cmd->buttons |= BT_CUSTOM3;
// Reset camera
if (!fordemocam && G_PlayerInputDown(forplayer, gc_camreset, false))
if (G_PlayerInputDown(forplayer, gc_camreset, false))
{
if (thiscam->chase && *rd == false)
P_ResetCamera(player, thiscam);
@ -1156,7 +1152,7 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer)
// spectator aiming shit, ahhhh...
{
INT32 screen_invert =
(!fordemocam && player->mo && (player->mo->eflags & MFE_VERTICALFLIP)
(player->mo && (player->mo->eflags & MFE_VERTICALFLIP)
&& (!thiscam->chase)) //because chasecam's not inverted
? -1 : 1; // set to -1 or 1 to multiply
@ -1197,7 +1193,7 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer)
-Making some galaxy brain autopilot Lua if you're a masochist
-Making a Mario Kart 8 Deluxe tier baby mode that steers you away from walls and whatnot. You know what, do what you want!
*/
if (!fordemocam && addedtogame && gamestate == GS_LEVEL)
if (addedtogame && gamestate == GS_LEVEL)
{
LUA_HookTiccmd(player, cmd, HOOK(PlayerCmd));
@ -1226,9 +1222,6 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer)
else if (cmd->throwdir < -KART_FULLTURN)
cmd->throwdir = -KART_FULLTURN;
if (fordemocam)
return;
G_DoAnglePrediction(cmd, realtics, ssplayer, player);
// Reset away view if a command is given.