mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-12-22 16:02:29 +00:00
Ring dump transparency
This commit is contained in:
parent
8f320b6ac2
commit
e867a9ee41
7 changed files with 37 additions and 1 deletions
|
|
@ -747,7 +747,8 @@ struct player_t
|
|||
UINT8 sparkleanim; // (0 to 19) - Angle offset for ring sparkle animation
|
||||
UINT16 superring; // You were awarded rings, and have this many of them left to spawn on yourself.
|
||||
UINT8 nextringaward; // When should we spawn our next superring ring?
|
||||
UINT16 ringvolume; // When consuming lots of rings, lower the sound a little.
|
||||
UINT8 ringvolume; // When consuming lots of rings, lower the sound a little.
|
||||
UINT8 ringtransparency; // When consuming lots of rings, fade out the rings again.
|
||||
UINT16 ringburst; // Queued number of rings to lose after hitlag ends
|
||||
|
||||
UINT8 curshield; // see kartshields_t
|
||||
|
|
|
|||
|
|
@ -2362,6 +2362,7 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps)
|
|||
p->checkpointId = checkpointId;
|
||||
|
||||
p->ringvolume = 255;
|
||||
p->ringtransparency = 255;
|
||||
|
||||
p->topAccel = MAXTOPACCEL;
|
||||
|
||||
|
|
|
|||
22
src/k_kart.c
22
src/k_kart.c
|
|
@ -8762,6 +8762,14 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
|||
else
|
||||
player->ringvolume += RINGVOLUMEREGEN;
|
||||
|
||||
// :D
|
||||
if (player->ringtransparency < MINRINGTRANSPARENCY)
|
||||
player->ringtransparency = MINRINGTRANSPARENCY;
|
||||
else if (MAXRINGTRANSPARENCY - player->ringtransparency < RINGTRANSPARENCYREGEN)
|
||||
player->ringtransparency = MAXRINGTRANSPARENCY;
|
||||
else
|
||||
player->ringtransparency += RINGTRANSPARENCYREGEN;
|
||||
|
||||
if (player->sadtimer)
|
||||
player->sadtimer--;
|
||||
|
||||
|
|
@ -11772,6 +11780,20 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
{
|
||||
mobj_t *ring = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_RING);
|
||||
P_SetMobjState(ring, S_FASTRING1);
|
||||
|
||||
if (P_IsDisplayPlayer(player))
|
||||
{
|
||||
UINT8 startfade = 220;
|
||||
UINT8 transfactor = 10 * (min(startfade, player->ringtransparency)) / startfade;
|
||||
if (transfactor < 10)
|
||||
{
|
||||
transfactor = max(transfactor, 4);
|
||||
ring->renderflags |= ((10-transfactor) << RF_TRANSSHIFT);
|
||||
ring->renderflags |= RF_ADD;
|
||||
}
|
||||
}
|
||||
player->ringtransparency -= RINGTRANSPARENCYUSEPENALTY;
|
||||
|
||||
ring->extravalue1 = 1; // Ring use animation timer
|
||||
ring->extravalue2 = 1; // Ring use animation flag
|
||||
ring->shadowscale = 0;
|
||||
|
|
|
|||
|
|
@ -47,10 +47,15 @@ Make sure this matches the actual number of states
|
|||
#define STUMBLE_AIRTIME TICRATE
|
||||
|
||||
#define MAXRINGVOLUME 255
|
||||
#define MAXRINGTRANSPARENCY 255
|
||||
#define MINRINGVOLUME 100
|
||||
#define MINRINGTRANSPARENCY 100
|
||||
#define RINGVOLUMECOLLECTPENALTY 3
|
||||
#define RINGTRANSPARENCYCOLLECTPENALTY 0
|
||||
#define RINGVOLUMEUSEPENALTY 15
|
||||
#define RINGTRANSPARENCYUSEPENALTY 15
|
||||
#define RINGVOLUMEREGEN 1
|
||||
#define RINGTRANSPARENCYREGEN 3
|
||||
|
||||
#define MAXTOPACCEL (12*FRACUNIT)
|
||||
#define TOPACCELREGEN (FRACUNIT/16)
|
||||
|
|
|
|||
|
|
@ -385,6 +385,8 @@ static int player_get(lua_State *L)
|
|||
lua_pushinteger(L, plr->nextringaward);
|
||||
else if (fastcmp(field,"ringvolume"))
|
||||
lua_pushinteger(L, plr->ringvolume);
|
||||
else if (fastcmp(field,"ringtransparency"))
|
||||
lua_pushinteger(L, plr->ringtransparency);
|
||||
else if (fastcmp(field,"ringburst"))
|
||||
lua_pushinteger(L, plr->ringburst);
|
||||
else if (fastcmp(field,"curshield"))
|
||||
|
|
@ -907,6 +909,8 @@ static int player_set(lua_State *L)
|
|||
plr->nextringaward = luaL_checkinteger(L, 3);
|
||||
else if (fastcmp(field,"ringvolume"))
|
||||
plr->ringvolume = luaL_checkinteger(L, 3);
|
||||
else if (fastcmp(field,"ringtransparency"))
|
||||
plr->ringtransparency = luaL_checkinteger(L, 3);
|
||||
else if (fastcmp(field,"ringburst"))
|
||||
plr->ringburst = luaL_checkinteger(L, 3);
|
||||
else if (fastcmp(field,"curshield"))
|
||||
|
|
|
|||
|
|
@ -3862,6 +3862,7 @@ void A_AttractChase(mobj_t *actor)
|
|||
S_StartSoundAtVolume(actor->target, sfx_s227, actor->target->player->ringvolume);
|
||||
|
||||
actor->target->player->ringvolume -= RINGVOLUMECOLLECTPENALTY;
|
||||
actor->target->player->ringtransparency -= RINGTRANSPARENCYCOLLECTPENALTY;
|
||||
|
||||
actor->target->player->pickuprings--;
|
||||
P_RemoveMobj(actor);
|
||||
|
|
|
|||
|
|
@ -490,6 +490,7 @@ static void P_NetArchivePlayers(savebuffer_t *save)
|
|||
WRITEUINT16(save->p, players[i].superring);
|
||||
WRITEUINT8(save->p, players[i].nextringaward);
|
||||
WRITEUINT8(save->p, players[i].ringvolume);
|
||||
WRITEUINT8(save->p, players[i].ringtransparency);
|
||||
WRITEUINT16(save->p, players[i].ringburst);
|
||||
|
||||
WRITEUINT8(save->p, players[i].curshield);
|
||||
|
|
@ -1063,6 +1064,7 @@ static void P_NetUnArchivePlayers(savebuffer_t *save)
|
|||
players[i].superring = READUINT16(save->p);
|
||||
players[i].nextringaward = READUINT8(save->p);
|
||||
players[i].ringvolume = READUINT8(save->p);
|
||||
players[i].ringtransparency = READUINT8(save->p);
|
||||
players[i].ringburst = READUINT16(save->p);
|
||||
|
||||
players[i].curshield = READUINT8(save->p);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue