mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
New trick panel shit (but only the gameplay part)
This commit is contained in:
parent
74a39837bb
commit
fe4d9ce889
10 changed files with 142 additions and 53 deletions
|
|
@ -617,7 +617,10 @@ static inline void resynch_write_player(resynch_pak *rsp, const size_t i)
|
|||
|
||||
rsp->airtime = (tic_t)LONG(players[i].airtime);
|
||||
rsp->trickpanel = (UINT8)players[i].trickpanel;
|
||||
rsp->trickdelay = (tic_t)LONG(players[i].trickdelay);
|
||||
rsp->trickdelay = (boolean)players[i].trickdelay;
|
||||
rsp->trickmomx = (fixed_t)LONG(players[i].trickmomx);
|
||||
rsp->trickmomy = (fixed_t)LONG(players[i].trickmomy);
|
||||
rsp->trickmomz = (fixed_t)LONG(players[i].trickmomz);
|
||||
|
||||
rsp->bumpers = players[i].bumpers;
|
||||
rsp->karmadelay = SHORT(players[i].karmadelay);
|
||||
|
|
@ -767,7 +770,10 @@ static void resynch_read_player(resynch_pak *rsp)
|
|||
|
||||
players[i].airtime = (tic_t)LONG(rsp->airtime);
|
||||
players[i].trickpanel = (UINT8)rsp->trickpanel;
|
||||
players[i].trickdelay = (tic_t)LONG(rsp->trickdelay);
|
||||
players[i].trickdelay = (boolean)rsp->trickdelay;
|
||||
players[i].trickmomx = (fixed_t)LONG(rsp->trickmomx);
|
||||
players[i].trickmomy = (fixed_t)LONG(rsp->trickmomy);
|
||||
players[i].trickmomz = (fixed_t)LONG(rsp->trickmomz);
|
||||
|
||||
players[i].bumpers = rsp->bumpers;
|
||||
players[i].karmadelay = SHORT(rsp->karmadelay);
|
||||
|
|
@ -1260,7 +1266,7 @@ static inline void CL_DrawConnectionStatus(void)
|
|||
cltext = M_GetText("Server full, waiting for a slot...");
|
||||
else
|
||||
cltext = M_GetText("Requesting to join...");
|
||||
|
||||
|
||||
break;
|
||||
#ifdef HAVE_CURL
|
||||
case CL_PREPAREHTTPFILES:
|
||||
|
|
@ -2129,7 +2135,7 @@ void CL_UpdateServerList (void)
|
|||
|
||||
static void M_ConfirmConnect(event_t *ev)
|
||||
{
|
||||
#ifndef NONET
|
||||
#ifndef NONET
|
||||
if (ev->type == ev_keydown)
|
||||
{
|
||||
if (ev->data1 == ' ' || ev->data1 == 'y' || ev->data1 == KEY_ENTER || ev->data1 == gamecontrol[0][gc_accelerate][0] || ev->data1 == gamecontrol[0][gc_accelerate][1])
|
||||
|
|
@ -2152,7 +2158,7 @@ static void M_ConfirmConnect(event_t *ev)
|
|||
}
|
||||
else
|
||||
cl_mode = CL_LOADFILES;
|
||||
|
||||
|
||||
M_ClearMenus(true);
|
||||
}
|
||||
else if (ev->data1 == 'n' || ev->data1 == KEY_ESCAPE|| ev->data1 == gamecontrol[0][gc_brake][0] || ev->data1 == gamecontrol[0][gc_brake][1])
|
||||
|
|
@ -2400,7 +2406,7 @@ static boolean CL_ServerConnectionTicker(const char *tmpsave, tic_t *oldtic, tic
|
|||
{
|
||||
boolean waitmore;
|
||||
INT32 i;
|
||||
|
||||
|
||||
#ifdef NONET
|
||||
(void)tmpsave;
|
||||
#endif
|
||||
|
|
@ -2437,7 +2443,7 @@ static boolean CL_ServerConnectionTicker(const char *tmpsave, tic_t *oldtic, tic
|
|||
{
|
||||
curl_transfers++;
|
||||
}
|
||||
|
||||
|
||||
cl_mode = CL_DOWNLOADHTTPFILES;
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -282,7 +282,10 @@ typedef struct
|
|||
INT32 kartstuff[NUMKARTSTUFF];
|
||||
tic_t airtime;
|
||||
UINT8 trickpanel;
|
||||
tic_t trickdelay;
|
||||
boolean trickdelay;
|
||||
fixed_t trickmomx;
|
||||
fixed_t trickmomy;
|
||||
fixed_t trickmomz;
|
||||
|
||||
UINT8 bumpers;
|
||||
INT16 karmadelay;
|
||||
|
|
|
|||
|
|
@ -449,6 +449,10 @@ typedef enum
|
|||
// QUICKLY GET RING TOTAL, INCLUDING RINGS CURRENTLY IN THE PICKUP ANIMATION
|
||||
#define RINGTOTAL(p) (p->rings + p->kartstuff[k_pickuprings])
|
||||
|
||||
// CONSTANTS FOR TRICK PANELS
|
||||
#define TRICKMOMZRAMP (30)
|
||||
#define TRICKLAG (9)
|
||||
|
||||
//}
|
||||
|
||||
// player_t struct for all respawn variables
|
||||
|
|
@ -523,9 +527,13 @@ typedef struct player_s
|
|||
UINT32 distancetofinish;
|
||||
waypoint_t *nextwaypoint;
|
||||
respawnvars_t respawn; // Respawn info
|
||||
tic_t airtime; // Keep track of how long you've been in the air
|
||||
UINT8 trickpanel; // Trick panel state
|
||||
tic_t trickdelay;
|
||||
tic_t airtime; // Keep track of how long you've been in the air
|
||||
|
||||
UINT8 trickpanel; // Trick panel state
|
||||
boolean trickdelay; // Prevent tricks until control stick is neutral
|
||||
fixed_t trickmomx;
|
||||
fixed_t trickmomy;
|
||||
fixed_t trickmomz; // Instead of stupid auxiliary variables let's... just make some ourselves.
|
||||
|
||||
UINT8 bumpers;
|
||||
INT16 karmadelay;
|
||||
|
|
|
|||
116
src/k_kart.c
116
src/k_kart.c
|
|
@ -2052,7 +2052,7 @@ INT16 K_GetSpindashChargeTime(player_t *player)
|
|||
{
|
||||
// more charge time for higher speed
|
||||
// Tails = 2s, Mighty = 3s, Fang = 4s, Metal = 4s
|
||||
return (player->kartspeed + 4) * (TICRATE/3);
|
||||
return (player->kartspeed + 4) * (TICRATE/3);
|
||||
}
|
||||
|
||||
fixed_t K_GetSpindashChargeSpeed(player_t *player)
|
||||
|
|
@ -4209,6 +4209,8 @@ void K_DoPogoSpring(mobj_t *mo, fixed_t vertispeed, UINT8 sound)
|
|||
{
|
||||
thrust = FixedMul(thrust, 9*FRACUNIT/8);
|
||||
}
|
||||
|
||||
mo->player->trickmomx = mo->player->trickmomy = mo->player->trickmomz = 0; // Reset post-hitlag momentums.
|
||||
}
|
||||
|
||||
mo->momz = FixedMul(thrust, vscale);
|
||||
|
|
@ -7830,7 +7832,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
K_PlayBoostTaunt(player->mo);
|
||||
K_DoPogoSpring(player->mo, 32<<FRACBITS, 2);
|
||||
player->trickpanel = 1;
|
||||
player->trickdelay = TICRATE/2;
|
||||
player->trickdelay = 1;
|
||||
player->kartstuff[k_itemamount]--;
|
||||
}
|
||||
break;
|
||||
|
|
@ -7944,49 +7946,101 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
player->mo->drawflags &= ~(MFD_TRANSMASK|MFD_BRIGHTMASK);
|
||||
}
|
||||
|
||||
if (player->trickpanel == 1 && player->trickdelay <= 0)
|
||||
if (player->trickpanel == 1)
|
||||
{
|
||||
const angle_t lr = ANGLE_45;
|
||||
fixed_t speed = P_AproxDistance(player->mo->momx, player->mo->momy);
|
||||
fixed_t momz = FixedDiv(player->mo->momz, mapobjectscale); // bring momz back to scale...
|
||||
fixed_t speedmult = max(0, FRACUNIT - abs(momz)/TRICKMOMZRAMP); // TRICKMOMZRAMP momz is minimum speed (Should be 20)
|
||||
fixed_t basespeed = P_AproxDistance(player->mo->momx, player->mo->momy); // at WORSE, keep your normal speed when tricking.
|
||||
fixed_t speed = FixedMul(speedmult, P_AproxDistance(player->mo->momx, player->mo->momy));
|
||||
|
||||
if (cmd->turning > 0)
|
||||
// debug shit
|
||||
//CONS_Printf("%d\n", player->mo->momz / mapobjectscale);
|
||||
|
||||
if (player->trickdelay <= 0)
|
||||
{
|
||||
P_InstaThrust(player->mo, player->mo->angle + lr, speed*2);
|
||||
player->trickpanel = 2;
|
||||
}
|
||||
else if (cmd->turning < 0)
|
||||
{
|
||||
P_InstaThrust(player->mo, player->mo->angle - lr, speed*2);
|
||||
player->trickpanel = 3;
|
||||
}
|
||||
else if (player->kartstuff[k_throwdir] == 1)
|
||||
{
|
||||
if (player->mo->momz * P_MobjFlip(player->mo) > 0)
|
||||
|
||||
if (cmd->turning > 0)
|
||||
{
|
||||
P_InstaThrust(player->mo, player->mo->angle + lr, max(basespeed, speed*2));
|
||||
|
||||
player->trickmomx = player->mo->momx;
|
||||
player->trickmomy = player->mo->momy;
|
||||
player->trickmomz = player->mo->momz;
|
||||
P_InstaThrust(player->mo, 0, 0); // Sike, you have no speed :)
|
||||
player->mo->momz = 0;
|
||||
|
||||
player->trickpanel = 2;
|
||||
player->mo->hitlag = TRICKLAG;
|
||||
}
|
||||
|
||||
P_InstaThrust(player->mo, player->mo->angle, speed*3);
|
||||
player->trickpanel = 2;
|
||||
}
|
||||
else if (player->kartstuff[k_throwdir] == -1)
|
||||
{
|
||||
boolean relative = true;
|
||||
|
||||
player->mo->momx /= 3;
|
||||
player->mo->momy /= 3;
|
||||
|
||||
if (player->mo->momz * P_MobjFlip(player->mo) <= 0)
|
||||
else if (cmd->turning < 0)
|
||||
{
|
||||
relative = false;
|
||||
P_InstaThrust(player->mo, player->mo->angle - lr, max(basespeed, speed*2));
|
||||
|
||||
player->trickmomx = player->mo->momx;
|
||||
player->trickmomy = player->mo->momy;
|
||||
player->trickmomz = player->mo->momz;
|
||||
P_InstaThrust(player->mo, 0, 0); // Sike, you have no speed :)
|
||||
player->mo->momz = 0;
|
||||
|
||||
player->trickpanel = 3;
|
||||
player->mo->hitlag = TRICKLAG;
|
||||
}
|
||||
else if (player->kartstuff[k_throwdir] == 1)
|
||||
{
|
||||
if (player->mo->momz * P_MobjFlip(player->mo) > 0)
|
||||
{
|
||||
player->mo->momz = 0;
|
||||
}
|
||||
|
||||
P_SetObjectMomZ(player->mo, 48*FRACUNIT, relative);
|
||||
P_InstaThrust(player->mo, player->mo->angle, max(basespeed, speed*3));
|
||||
|
||||
player->trickpanel = 3;
|
||||
player->trickmomx = player->mo->momx;
|
||||
player->trickmomy = player->mo->momy;
|
||||
player->trickmomz = player->mo->momz;
|
||||
P_InstaThrust(player->mo, 0, 0); // Sike, you have no speed :)
|
||||
player->mo->momz = 0;
|
||||
|
||||
player->trickpanel = 2;
|
||||
player->mo->hitlag = TRICKLAG;
|
||||
}
|
||||
else if (player->kartstuff[k_throwdir] == -1)
|
||||
{
|
||||
boolean relative = true;
|
||||
|
||||
player->mo->momx /= 3;
|
||||
player->mo->momy /= 3;
|
||||
|
||||
if (player->mo->momz * P_MobjFlip(player->mo) <= 0)
|
||||
{
|
||||
relative = false;
|
||||
}
|
||||
|
||||
P_SetObjectMomZ(player->mo, 48*FRACUNIT, relative);
|
||||
|
||||
player->trickmomx = player->mo->momx;
|
||||
player->trickmomy = player->mo->momy;
|
||||
player->trickmomz = player->mo->momz;
|
||||
P_InstaThrust(player->mo, 0, 0); // Sike, you have no speed :)
|
||||
player->mo->momz = 0;
|
||||
|
||||
player->trickpanel = 3;
|
||||
player->mo->hitlag = TRICKLAG;
|
||||
}
|
||||
}
|
||||
}
|
||||
// After hitlag, we will get here and will be able to apply the desired momentums!
|
||||
else if (player->trickmomx || player->trickmomy || player->trickmomz)
|
||||
{
|
||||
player->mo->momx = player->trickmomx;
|
||||
player->mo->momy = player->trickmomy;
|
||||
player->mo->momz = player->trickmomz;
|
||||
|
||||
player->trickmomx = player->trickmomy = player->trickmomz = 0;
|
||||
|
||||
}
|
||||
|
||||
// Wait until we let go off the control stick to remove the delay
|
||||
if (player->trickdelay > 0)
|
||||
{
|
||||
player->trickdelay--;
|
||||
|
|
|
|||
|
|
@ -218,6 +218,12 @@ static int player_get(lua_State *L)
|
|||
lua_pushinteger(L, plr->trickpanel);
|
||||
else if (fastcmp(field,"trickdelay"))
|
||||
lua_pushinteger(L, plr->trickdelay);
|
||||
else if (fastcmp(field,"trickmomx"))
|
||||
lua_pushfixed(L, plr->trickmomx);
|
||||
else if (fastcmp(field,"trickmomy"))
|
||||
lua_pushfixed(L, plr->trickmomy);
|
||||
else if (fastcmp(field,"trickmomz"))
|
||||
lua_pushfixed(L, plr->trickmomz);
|
||||
else if (fastcmp(field,"pflags"))
|
||||
lua_pushinteger(L, plr->pflags);
|
||||
else if (fastcmp(field,"panim"))
|
||||
|
|
@ -511,6 +517,12 @@ static int player_set(lua_State *L)
|
|||
plr->trickpanel = luaL_checkinteger(L, 3);
|
||||
else if (fastcmp(field,"trickdelay"))
|
||||
plr->trickdelay = (tic_t)luaL_checkinteger(L, 3);
|
||||
else if (fastcmp(field,"trickmomx"))
|
||||
plr->trickmomx = (fixed_t)luaL_checkfixed(L, 3);
|
||||
else if (fastcmp(field,"trickmomy"))
|
||||
plr->trickmomy = (fixed_t)luaL_checkfixed(L, 3);
|
||||
else if (fastcmp(field,"trickmomz"))
|
||||
plr->trickmomz = (fixed_t)luaL_checkfixed(L, 3);
|
||||
else if (fastcmp(field,"kartspeed"))
|
||||
plr->kartspeed = (UINT8)luaL_checkinteger(L, 3);
|
||||
else if (fastcmp(field,"kartweight"))
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
#include "f_finale.h"
|
||||
|
||||
// SRB2kart
|
||||
#include "k_kart.h"
|
||||
#include "k_kart.h"
|
||||
#include "k_battle.h"
|
||||
#include "k_pwrlv.h"
|
||||
#include "k_grandprix.h"
|
||||
|
|
|
|||
|
|
@ -449,7 +449,7 @@ static void P_DoFanAndGasJet(mobj_t *spring, mobj_t *object)
|
|||
if (object->player)
|
||||
{
|
||||
object->player->trickpanel = 1;
|
||||
object->player->trickdelay = TICRATE/2;
|
||||
object->player->trickdelay = 1;
|
||||
}
|
||||
|
||||
K_DoPogoSpring(object, 32<<FRACBITS, 0);
|
||||
|
|
@ -2291,7 +2291,7 @@ boolean P_TryCameraMove(fixed_t x, fixed_t y, camera_t *thiscam)
|
|||
{
|
||||
subsector_t *s = R_PointInSubsector(x, y);
|
||||
boolean retval = true;
|
||||
|
||||
|
||||
UINT8 i;
|
||||
|
||||
floatok = false;
|
||||
|
|
|
|||
|
|
@ -6625,7 +6625,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
|
|||
mobj->color = K_RainbowColor(
|
||||
(SKINCOLOR_PURPLE - SKINCOLOR_PINK) // Smoothly transition into the other state
|
||||
+ ((mobj->fuse - 32) * 2) // Make the color flashing slow down while it runs out
|
||||
);
|
||||
);
|
||||
|
||||
switch (mobj->extravalue1)
|
||||
{
|
||||
|
|
@ -10243,7 +10243,7 @@ void P_SpawnPlayer(INT32 playernum)
|
|||
/*
|
||||
if (bonusgame || specialstage)
|
||||
{
|
||||
// Bots should avoid
|
||||
// Bots should avoid
|
||||
p->spectator = true;
|
||||
}
|
||||
*/
|
||||
|
|
@ -10357,7 +10357,7 @@ void P_SpawnPlayer(INT32 playernum)
|
|||
if ((leveltime < starttime) || (pcount <= 1)) // Start of the map?
|
||||
{
|
||||
// Reset those bumpers!
|
||||
p->bumpers = K_StartingBumperCount();
|
||||
p->bumpers = K_StartingBumperCount();
|
||||
}
|
||||
|
||||
if (p->bumpers)
|
||||
|
|
|
|||
|
|
@ -235,7 +235,7 @@ static void P_NetArchivePlayers(void)
|
|||
|
||||
if (flags & FOLLOWITEM)
|
||||
WRITEUINT32(save_p, players[i].followmobj->mobjnum);
|
||||
|
||||
|
||||
WRITEUINT32(save_p, (UINT32)players[i].followitem);
|
||||
|
||||
WRITEUINT32(save_p, players[i].charflags);
|
||||
|
|
@ -257,7 +257,10 @@ static void P_NetArchivePlayers(void)
|
|||
WRITEUINT32(save_p, K_GetWaypointHeapIndex(players[i].nextwaypoint));
|
||||
WRITEUINT32(save_p, players[i].airtime);
|
||||
WRITEUINT8(save_p, players[i].trickpanel);
|
||||
WRITEUINT32(save_p, players[i].trickdelay);
|
||||
WRITEUINT8(save_p, players[i].trickdelay);
|
||||
WRITEUINT32(save_p, players[i].trickmomx);
|
||||
WRITEUINT32(save_p, players[i].trickmomy);
|
||||
WRITEUINT32(save_p, players[i].trickmomz);
|
||||
|
||||
WRITEUINT8(save_p, players[i].bumpers);
|
||||
WRITEINT16(save_p, players[i].karmadelay);
|
||||
|
|
@ -426,7 +429,7 @@ static void P_NetUnArchivePlayers(void)
|
|||
|
||||
if (flags & FOLLOWITEM)
|
||||
players[i].followmobj = (mobj_t *)(size_t)READUINT32(save_p);
|
||||
|
||||
|
||||
players[i].followitem = (mobjtype_t)READUINT32(save_p);
|
||||
|
||||
//SetPlayerSkinByNum(i, players[i].skin);
|
||||
|
|
@ -449,7 +452,10 @@ static void P_NetUnArchivePlayers(void)
|
|||
players[i].nextwaypoint = (waypoint_t *)(size_t)READUINT32(save_p);
|
||||
players[i].airtime = READUINT32(save_p);
|
||||
players[i].trickpanel = READUINT8(save_p);
|
||||
players[i].trickdelay = READUINT32(save_p);
|
||||
players[i].trickdelay = READUINT8(save_p);
|
||||
players[i].trickmomx = READUINT32(save_p);
|
||||
players[i].trickmomy = READUINT32(save_p);
|
||||
players[i].trickmomz = READUINT32(save_p);
|
||||
|
||||
players[i].bumpers = READUINT8(save_p);
|
||||
players[i].karmadelay = READINT16(save_p);
|
||||
|
|
|
|||
|
|
@ -4618,7 +4618,7 @@ DoneSection2:
|
|||
}
|
||||
|
||||
player->trickpanel = 1;
|
||||
player->trickdelay = TICRATE/2;
|
||||
player->trickdelay = 1;
|
||||
K_DoPogoSpring(player->mo, upwards, 1);
|
||||
|
||||
// Reduce speed
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue