Fix camera not updating when F12ing, fixed camera not taking aiming into account, and minor cleanup

This commit is contained in:
Sally Coolatta 2020-09-25 09:28:19 -04:00
parent 58d9ac899d
commit 953afddd03
4 changed files with 39 additions and 36 deletions

View file

@ -461,15 +461,16 @@ static int player_set(lua_State *L)
else if (fastcmp(field,"viewrollangle"))
plr->viewrollangle = luaL_checkangle(L, 3);
else if (fastcmp(field,"aiming")) {
UINT8 i;
plr->aiming = luaL_checkangle(L, 3);
if (plr == &players[consoleplayer])
localaiming[0] = plr->aiming;
else if (plr == &players[displayplayers[1]])
localaiming[1] = plr->aiming;
else if (plr == &players[displayplayers[2]])
localaiming[2] = plr->aiming;
else if (plr == &players[displayplayers[3]])
localaiming[3] = plr->aiming;
for (i = 0; i <= r_splitscreen; i++)
{
if (plr == &players[displayplayers[i]])
{
localaiming[i] = plr->aiming;
break;
}
}
}
else if (fastcmp(field,"drawangle"))
plr->drawangle = luaL_checkangle(L, 3);

View file

@ -1161,6 +1161,8 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
// if a player avatar dies...
if (target->player)
{
UINT8 i;
target->flags &= ~(MF_SOLID|MF_SHOOTABLE); // does not block
P_UnsetThingPosition(target);
target->flags |= MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY;
@ -1176,14 +1178,17 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
// switch view prior to dying
if (automapactive)
AM_Stop();
//added : 22-02-98: recenter view for next life...
localaiming[0] = 0;
}
if (target->player == &players[displayplayers[1]]) localaiming[1] = 0;
if (target->player == &players[displayplayers[2]]) localaiming[2] = 0;
if (target->player == &players[displayplayers[3]]) localaiming[3] = 0;
//added : 22-02-98: recenter view for next life...
for (i = 0; i <= r_splitscreen; i++)
{
if (target->player == &players[displayplayers[i]])
{
localaiming[i] = 0;
break;
}
}
if ((gametyperules & GTR_BUMPERS))
K_CheckBumpers();

View file

@ -151,7 +151,6 @@ boolean P_IsDisplayPlayer(player_t *player);
void P_SetPlayerAngle(player_t *player, angle_t angle);
angle_t P_GetLocalAngle(player_t *player);
void P_SetLocalAngle(player_t *player, angle_t angle);
void P_ForceLocalAngle(player_t *player, angle_t angle);
boolean P_PlayerFullbright(player_t *player);

View file

@ -2037,11 +2037,11 @@ static void P_3dMovement(player_t *player)
//
static void P_UpdatePlayerAngle(player_t *player)
{
ticcmd_t *cmd = &player->cmd;
angle_t angleChange = K_GetKartTurnValue(player, cmd->turning) << TICCMD_REDUCE;
angle_t angleChange = K_GetKartTurnValue(player, player->cmd.turning) << TICCMD_REDUCE;
UINT8 i;
player->angleturn += angleChange;
P_SetLocalAngle(player, P_GetLocalAngle(player) + angleChange);
P_SetPlayerAngle(player, player->angleturn + angleChange);
player->mo->angle = player->angleturn;
if (!cv_allowmlook.value || player->spectator == false)
{
@ -2049,11 +2049,18 @@ static void P_UpdatePlayerAngle(player_t *player)
}
else
{
player->aiming += (cmd->aiming << TICCMD_REDUCE);
player->aiming += (player->cmd.aiming << TICCMD_REDUCE);
player->aiming = G_ClipAimingPitch((INT32 *)&player->aiming);
}
player->mo->angle = player->angleturn;
for (i = 0; i <= r_splitscreen; i++)
{
if (player == &players[displayplayers[i]])
{
localaiming[i] = player->aiming;
break;
}
}
}
//
@ -4653,17 +4660,8 @@ void P_PlayerAfterThink(player_t *player)
void P_SetPlayerAngle(player_t *player, angle_t angle)
{
angle_t delta = angle - player->angleturn;
P_ForceLocalAngle(player, P_GetLocalAngle(player) + delta);
player->angleturn += delta;
}
void P_SetLocalAngle(player_t *player, angle_t angle)
{
angle_t delta = (angle - P_GetLocalAngle(player));
P_ForceLocalAngle(player, P_GetLocalAngle(player) + delta);
P_ForceLocalAngle(player, angle);
player->angleturn = angle;
}
angle_t P_GetLocalAngle(player_t *player)
@ -4672,9 +4670,9 @@ angle_t P_GetLocalAngle(player_t *player)
// (hint: they have separate variables for all of this shit instead of arrays)
UINT8 i;
for (i = 0; i <= splitscreen; i++)
for (i = 0; i <= r_splitscreen; i++)
{
if (player == &players[g_localplayers[i]])
if (player == &players[displayplayers[i]])
return localangle[i];
}
@ -4687,9 +4685,9 @@ void P_ForceLocalAngle(player_t *player, angle_t angle)
angle = angle & ~UINT16_MAX;
for (i = 0; i <= splitscreen; i++)
for (i = 0; i <= r_splitscreen; i++)
{
if (player == &players[g_localplayers[i]])
if (player == &players[displayplayers[i]])
{
localangle[i] = angle;
break;