mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Make aiming relative too
This commit is contained in:
parent
e5009348f8
commit
672c4fb763
6 changed files with 61 additions and 56 deletions
26
src/g_game.c
26
src/g_game.c
|
|
@ -683,9 +683,9 @@ const char *G_BuildMapName(INT32 map)
|
|||
* Used whenever the player view is changed manually.
|
||||
*
|
||||
* \param aiming Pointer to the vertical angle to clip.
|
||||
* \return Short version of the clipped angle for building a ticcmd.
|
||||
* \return The clipped angle.
|
||||
*/
|
||||
INT16 G_ClipAimingPitch(INT32 *aiming)
|
||||
INT32 G_ClipAimingPitch(INT32 *aiming)
|
||||
{
|
||||
INT32 limitangle;
|
||||
|
||||
|
|
@ -696,7 +696,7 @@ INT16 G_ClipAimingPitch(INT32 *aiming)
|
|||
else if (*aiming < -limitangle)
|
||||
*aiming = -limitangle;
|
||||
|
||||
return (INT16)((*aiming)>>16);
|
||||
return (*aiming);
|
||||
}
|
||||
|
||||
INT16 G_SoftwareClipAimingPitch(INT32 *aiming)
|
||||
|
|
@ -877,7 +877,6 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer)
|
|||
|
||||
player_t *player = &players[g_localplayers[forplayer]];
|
||||
camera_t *thiscam = &camera[forplayer];
|
||||
INT32 *laim = &localaiming[forplayer];
|
||||
INT32 *th = &turnheld[forplayer];
|
||||
boolean *kbl = &keyboard_look[forplayer];
|
||||
boolean *rd = &resetdown[forplayer];
|
||||
|
|
@ -908,7 +907,6 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer)
|
|||
// Kart, don't build a ticcmd if someone is resynching or the server is stopped too so we don't fly off course in bad conditions
|
||||
if (paused || P_AutoPause() || (gamestate == GS_LEVEL && player->playerstate == PST_REBORN) || hu_resynching)
|
||||
{
|
||||
cmd->aiming = G_ClipAimingPitch(laim);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -1074,39 +1072,33 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer)
|
|||
*kbl = false;
|
||||
|
||||
// looking up/down
|
||||
*laim += (mlooky<<19)*player_invert*screen_invert;
|
||||
cmd->aiming += (mlooky<<19)*player_invert*screen_invert;
|
||||
}
|
||||
|
||||
axis = PlayerJoyAxis(ssplayer, AXISLOOK);
|
||||
if (analogjoystickmove && axis != 0 && lookaxis && player->spectator)
|
||||
*laim += (axis<<16) * screen_invert;
|
||||
cmd->aiming += (axis<<16) * screen_invert;
|
||||
|
||||
// spring back if not using keyboard neither mouselookin'
|
||||
if (*kbl == false && !lookaxis && !mouseaiming)
|
||||
*laim = 0;
|
||||
cmd->aiming = 0;
|
||||
|
||||
if (player->spectator)
|
||||
{
|
||||
if (PlayerInputDown(ssplayer, gc_lookup) || (gamepadjoystickmove && axis < 0))
|
||||
{
|
||||
*laim += KB_LOOKSPEED * screen_invert;
|
||||
cmd->aiming += KB_LOOKSPEED * screen_invert;
|
||||
*kbl = true;
|
||||
}
|
||||
else if (PlayerInputDown(ssplayer, gc_lookdown) || (gamepadjoystickmove && axis > 0))
|
||||
{
|
||||
*laim -= KB_LOOKSPEED * screen_invert;
|
||||
cmd->aiming -= KB_LOOKSPEED * screen_invert;
|
||||
*kbl = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (PlayerInputDown(ssplayer, gc_centerview)) // No need to put a spectator limit on this one though :V
|
||||
*laim = 0;
|
||||
|
||||
// accept no mlook for network games
|
||||
if (!cv_allowmlook.value)
|
||||
*laim = 0;
|
||||
|
||||
cmd->aiming = G_ClipAimingPitch(laim);
|
||||
cmd->aiming = 0;
|
||||
}
|
||||
|
||||
mousex = mousey = mlooky = 0;
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ ticcmd_t *G_CopyTiccmd(ticcmd_t* dest, const ticcmd_t* src, const size_t n);
|
|||
ticcmd_t *G_MoveTiccmd(ticcmd_t* dest, const ticcmd_t* src, const size_t n);
|
||||
|
||||
// clip the console player aiming to the view
|
||||
INT16 G_ClipAimingPitch(INT32 *aiming);
|
||||
INT32 G_ClipAimingPitch(INT32 *aiming);
|
||||
INT16 G_SoftwareClipAimingPitch(INT32 *aiming);
|
||||
|
||||
typedef enum
|
||||
|
|
|
|||
|
|
@ -6221,8 +6221,9 @@ INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue)
|
|||
fixed_t p_speed;
|
||||
fixed_t weightadjust;
|
||||
fixed_t turnfixed = turnvalue * FRACUNIT;
|
||||
fixed_t currentSpeed = 0;
|
||||
|
||||
if ((player->mo == NULL || P_MobjWasRemoved(player->mo)))
|
||||
if (player->mo == NULL || P_MobjWasRemoved(player->mo))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -6237,8 +6238,9 @@ INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue)
|
|||
return 0;
|
||||
}
|
||||
|
||||
// SRB2kart - no additional angle if not moving
|
||||
if ((player->speed <= 0) // Not moving
|
||||
currentSpeed = R_PointToDist2(0, 0, player->mo->momx, player->mo->momy);
|
||||
|
||||
if ((currentSpeed <= 0) // Not moving
|
||||
&& ((player->cmd.buttons & BT_EBRAKEMASK) != BT_EBRAKEMASK) // not e-braking
|
||||
&& (player->respawn.state == RESPAWNST_NONE)) // Not respawning
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1532,7 +1532,7 @@ static void SaveMobjThinker(const thinker_t *th, const UINT8 type)
|
|||
diff |= MD_TRACER;
|
||||
if (mobj->friction != ORIG_FRICTION)
|
||||
diff |= MD_FRICTION;
|
||||
if (mobj->movefactor != FRACUNIT) //if (mobj->movefactor != ORIG_FRICTION_FACTOR)
|
||||
if (mobj->movefactor != FRACUNIT)
|
||||
diff |= MD_MOVEFACTOR;
|
||||
if (mobj->fuse)
|
||||
diff |= MD_FUSE;
|
||||
|
|
@ -2755,7 +2755,7 @@ static thinker_t* LoadMobjThinker(actionf_p1 thinker)
|
|||
if (diff & MD_MOVEFACTOR)
|
||||
mobj->movefactor = READFIXED(save_p);
|
||||
else
|
||||
mobj->movefactor = FRACUNIT; //mobj->movefactor = ORIG_FRICTION_FACTOR;
|
||||
mobj->movefactor = FRACUNIT;
|
||||
if (diff & MD_FUSE)
|
||||
mobj->fuse = READINT32(save_p);
|
||||
if (diff & MD_WATERTOP)
|
||||
|
|
|
|||
|
|
@ -528,10 +528,7 @@ typedef struct
|
|||
} friction_t;
|
||||
|
||||
// Friction defines.
|
||||
#define ORIG_FRICTION (62914) ///< Original value.
|
||||
//#define ORIG_FRICTION_RETRO (0xE8 << (FRACBITS-8))
|
||||
//#define ORIG_FRICTION_NEO (62914)
|
||||
#define ORIG_FRICTION_FACTOR (8 << (FRACBITS-8)) ///< Original value.
|
||||
#define ORIG_FRICTION (0xF5 << (FRACBITS-8)) ///< Original value.
|
||||
|
||||
void T_Friction(friction_t *f);
|
||||
|
||||
|
|
|
|||
72
src/p_user.c
72
src/p_user.c
|
|
@ -2053,6 +2053,32 @@ static void P_3dMovement(player_t *player)
|
|||
}
|
||||
}
|
||||
|
||||
//
|
||||
// P_UpdatePlayerAngle
|
||||
//
|
||||
// Updates player angleturn with cmd->turning
|
||||
//
|
||||
static void P_UpdatePlayerAngle(player_t *player)
|
||||
{
|
||||
ticcmd_t *cmd = &player->cmd;
|
||||
angle_t angleChange = K_GetKartTurnValue(player, cmd->turning) << TICCMD_REDUCE;
|
||||
|
||||
player->angleturn += angleChange;
|
||||
P_SetLocalAngle(player, P_GetLocalAngle(player) + angleChange);
|
||||
|
||||
if (!cv_allowmlook.value)
|
||||
{
|
||||
player->aiming = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
player->aiming += (cmd->aiming << TICCMD_REDUCE);
|
||||
player->aiming = G_ClipAimingPitch((INT32 *)&player->aiming);
|
||||
}
|
||||
|
||||
player->mo->angle = player->angleturn;
|
||||
}
|
||||
|
||||
//
|
||||
// P_SpectatorMovement
|
||||
//
|
||||
|
|
@ -2062,7 +2088,7 @@ static void P_SpectatorMovement(player_t *player)
|
|||
{
|
||||
ticcmd_t *cmd = &player->cmd;
|
||||
|
||||
player->mo->angle = player->angleturn;
|
||||
P_UpdatePlayerAngle(player);
|
||||
|
||||
ticruned++;
|
||||
if (!(cmd->flags & TICCMD_RECEIVED))
|
||||
|
|
@ -2133,7 +2159,7 @@ void P_MovePlayer(player_t *player)
|
|||
// MOVEMENT CODE //
|
||||
//////////////////////
|
||||
|
||||
player->mo->angle = player->angleturn;
|
||||
P_UpdatePlayerAngle(player);
|
||||
|
||||
ticruned++;
|
||||
if (!(cmd->flags & TICCMD_RECEIVED))
|
||||
|
|
@ -2747,11 +2773,10 @@ void P_InitCameraCmd(void)
|
|||
|
||||
static ticcmd_t *P_CameraCmd(camera_t *cam)
|
||||
{
|
||||
INT32 laim, th, tspeed, forward, axis; //i
|
||||
INT32 th, tspeed, forward, axis; //i
|
||||
// these ones used for multiple conditions
|
||||
boolean turnleft, turnright, mouseaiming;
|
||||
boolean invertmouse, lookaxis, usejoystick, kbl;
|
||||
angle_t lang;
|
||||
INT32 player_invert;
|
||||
INT32 screen_invert;
|
||||
ticcmd_t *cmd = &cameracmd;
|
||||
|
|
@ -2761,16 +2786,11 @@ static ticcmd_t *P_CameraCmd(camera_t *cam)
|
|||
if (!demo.playback)
|
||||
return cmd; // empty cmd, no.
|
||||
|
||||
lang = democam.localangle;
|
||||
laim = democam.localaiming;
|
||||
th = democam.turnheld;
|
||||
kbl = democam.keyboardlook;
|
||||
|
||||
G_CopyTiccmd(cmd, I_BaseTiccmd(), 1); // empty, or external driver
|
||||
|
||||
//cmd->turning = (INT16)(lang >> 16);
|
||||
cmd->aiming = G_ClipAimingPitch(&laim);
|
||||
|
||||
mouseaiming = true;
|
||||
invertmouse = cv_invertmouse.value;
|
||||
lookaxis = cv_lookaxis[0].value;
|
||||
|
|
@ -2847,29 +2867,27 @@ static ticcmd_t *P_CameraCmd(camera_t *cam)
|
|||
kbl = false;
|
||||
|
||||
// looking up/down
|
||||
laim += (mlooky<<19)*player_invert*screen_invert;
|
||||
cmd->aiming += (mlooky<<19)*player_invert*screen_invert;
|
||||
|
||||
axis = PlayerJoyAxis(1, AXISLOOK);
|
||||
|
||||
// spring back if not using keyboard neither mouselookin'
|
||||
if (!kbl && !lookaxis && !mouseaiming)
|
||||
laim = 0;
|
||||
cmd->aiming = 0;
|
||||
|
||||
if (PlayerInputDown(1, gc_lookup) || (axis < 0))
|
||||
{
|
||||
laim += KB_LOOKSPEED * screen_invert;
|
||||
cmd->aiming += KB_LOOKSPEED * screen_invert;
|
||||
kbl = true;
|
||||
}
|
||||
else if (PlayerInputDown(1, gc_lookdown) || (axis > 0))
|
||||
{
|
||||
laim -= KB_LOOKSPEED * screen_invert;
|
||||
cmd->aiming -= KB_LOOKSPEED * screen_invert;
|
||||
kbl = true;
|
||||
}
|
||||
|
||||
if (PlayerInputDown(1, gc_centerview)) // No need to put a spectator limit on this one though :V
|
||||
laim = 0;
|
||||
|
||||
cmd->aiming = G_ClipAimingPitch(&laim);
|
||||
cmd->aiming = 0;
|
||||
|
||||
mousex = mousey = mlooky = 0;
|
||||
|
||||
|
|
@ -2880,10 +2898,6 @@ static ticcmd_t *P_CameraCmd(camera_t *cam)
|
|||
else if (cmd->forwardmove < -MAXPLMOVE)
|
||||
cmd->forwardmove = -MAXPLMOVE;
|
||||
|
||||
lang += (cmd->turning << TICCMD_REDUCE);
|
||||
|
||||
democam.localangle = lang;
|
||||
democam.localaiming = laim;
|
||||
democam.turnheld = th;
|
||||
democam.keyboardlook = kbl;
|
||||
|
||||
|
|
@ -2905,8 +2919,14 @@ void P_DemoCameraMovement(camera_t *cam)
|
|||
// first off we need to get button input
|
||||
cmd = P_CameraCmd(cam);
|
||||
|
||||
cam->aiming = cmd->aiming<<FRACBITS;
|
||||
//cam->angle = cmd->angleturn << TICCMD_REDUCE;
|
||||
cam->aiming += cmd->aiming << TICCMD_REDUCE;
|
||||
cam->angle += cmd->turning << TICCMD_REDUCE;
|
||||
|
||||
democam.localangle += cmd->turning << TICCMD_REDUCE;
|
||||
democam.localaiming += cmd->aiming << TICCMD_REDUCE;
|
||||
|
||||
cam->aiming = G_ClipAimingPitch((INT32 *)&cam->aiming);
|
||||
democam.localaiming = G_ClipAimingPitch((INT32 *)&democam.localaiming);
|
||||
|
||||
// camera movement:
|
||||
|
||||
|
|
@ -4234,12 +4254,6 @@ void P_PlayerThink(player_t *player)
|
|||
|
||||
cmd = &player->cmd;
|
||||
|
||||
{
|
||||
angle_t angleChange = K_GetKartTurnValue(player, cmd->turning) << TICCMD_REDUCE;
|
||||
player->angleturn += angleChange;
|
||||
P_SetLocalAngle(player, P_GetLocalAngle(player) + angleChange);
|
||||
}
|
||||
|
||||
// SRB2kart
|
||||
// Save the dir the player is holding
|
||||
// to allow items to be thrown forward or backward.
|
||||
|
|
@ -4700,7 +4714,7 @@ void P_ForceLocalAngle(player_t *player, angle_t angle)
|
|||
|
||||
angle = angle & ~UINT16_MAX;
|
||||
|
||||
for (i = 0; i < MAXSPLITSCREENPLAYERS; i++)
|
||||
for (i = 0; i <= splitscreen; i++)
|
||||
{
|
||||
if (player == &players[g_localplayers[i]])
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue