mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-28 04:51:42 +00:00
Merge branch 'ring-dump-fade' into 'master'
Ring dump transparency See merge request KartKrew/Kart!1861
This commit is contained in:
commit
89d1c29c80
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
|
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.
|
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?
|
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
|
UINT16 ringburst; // Queued number of rings to lose after hitlag ends
|
||||||
|
|
||||||
UINT8 curshield; // see kartshields_t
|
UINT8 curshield; // see kartshields_t
|
||||||
|
|
|
||||||
|
|
@ -2362,6 +2362,7 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps)
|
||||||
p->checkpointId = checkpointId;
|
p->checkpointId = checkpointId;
|
||||||
|
|
||||||
p->ringvolume = 255;
|
p->ringvolume = 255;
|
||||||
|
p->ringtransparency = 255;
|
||||||
|
|
||||||
p->topAccel = MAXTOPACCEL;
|
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
|
else
|
||||||
player->ringvolume += RINGVOLUMEREGEN;
|
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)
|
if (player->sadtimer)
|
||||||
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);
|
mobj_t *ring = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_RING);
|
||||||
P_SetMobjState(ring, S_FASTRING1);
|
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->extravalue1 = 1; // Ring use animation timer
|
||||||
ring->extravalue2 = 1; // Ring use animation flag
|
ring->extravalue2 = 1; // Ring use animation flag
|
||||||
ring->shadowscale = 0;
|
ring->shadowscale = 0;
|
||||||
|
|
|
||||||
|
|
@ -47,10 +47,15 @@ Make sure this matches the actual number of states
|
||||||
#define STUMBLE_AIRTIME TICRATE
|
#define STUMBLE_AIRTIME TICRATE
|
||||||
|
|
||||||
#define MAXRINGVOLUME 255
|
#define MAXRINGVOLUME 255
|
||||||
|
#define MAXRINGTRANSPARENCY 255
|
||||||
#define MINRINGVOLUME 100
|
#define MINRINGVOLUME 100
|
||||||
|
#define MINRINGTRANSPARENCY 100
|
||||||
#define RINGVOLUMECOLLECTPENALTY 3
|
#define RINGVOLUMECOLLECTPENALTY 3
|
||||||
|
#define RINGTRANSPARENCYCOLLECTPENALTY 0
|
||||||
#define RINGVOLUMEUSEPENALTY 15
|
#define RINGVOLUMEUSEPENALTY 15
|
||||||
|
#define RINGTRANSPARENCYUSEPENALTY 15
|
||||||
#define RINGVOLUMEREGEN 1
|
#define RINGVOLUMEREGEN 1
|
||||||
|
#define RINGTRANSPARENCYREGEN 3
|
||||||
|
|
||||||
#define MAXTOPACCEL (12*FRACUNIT)
|
#define MAXTOPACCEL (12*FRACUNIT)
|
||||||
#define TOPACCELREGEN (FRACUNIT/16)
|
#define TOPACCELREGEN (FRACUNIT/16)
|
||||||
|
|
|
||||||
|
|
@ -385,6 +385,8 @@ static int player_get(lua_State *L)
|
||||||
lua_pushinteger(L, plr->nextringaward);
|
lua_pushinteger(L, plr->nextringaward);
|
||||||
else if (fastcmp(field,"ringvolume"))
|
else if (fastcmp(field,"ringvolume"))
|
||||||
lua_pushinteger(L, plr->ringvolume);
|
lua_pushinteger(L, plr->ringvolume);
|
||||||
|
else if (fastcmp(field,"ringtransparency"))
|
||||||
|
lua_pushinteger(L, plr->ringtransparency);
|
||||||
else if (fastcmp(field,"ringburst"))
|
else if (fastcmp(field,"ringburst"))
|
||||||
lua_pushinteger(L, plr->ringburst);
|
lua_pushinteger(L, plr->ringburst);
|
||||||
else if (fastcmp(field,"curshield"))
|
else if (fastcmp(field,"curshield"))
|
||||||
|
|
@ -907,6 +909,8 @@ static int player_set(lua_State *L)
|
||||||
plr->nextringaward = luaL_checkinteger(L, 3);
|
plr->nextringaward = luaL_checkinteger(L, 3);
|
||||||
else if (fastcmp(field,"ringvolume"))
|
else if (fastcmp(field,"ringvolume"))
|
||||||
plr->ringvolume = luaL_checkinteger(L, 3);
|
plr->ringvolume = luaL_checkinteger(L, 3);
|
||||||
|
else if (fastcmp(field,"ringtransparency"))
|
||||||
|
plr->ringtransparency = luaL_checkinteger(L, 3);
|
||||||
else if (fastcmp(field,"ringburst"))
|
else if (fastcmp(field,"ringburst"))
|
||||||
plr->ringburst = luaL_checkinteger(L, 3);
|
plr->ringburst = luaL_checkinteger(L, 3);
|
||||||
else if (fastcmp(field,"curshield"))
|
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);
|
S_StartSoundAtVolume(actor->target, sfx_s227, actor->target->player->ringvolume);
|
||||||
|
|
||||||
actor->target->player->ringvolume -= RINGVOLUMECOLLECTPENALTY;
|
actor->target->player->ringvolume -= RINGVOLUMECOLLECTPENALTY;
|
||||||
|
actor->target->player->ringtransparency -= RINGTRANSPARENCYCOLLECTPENALTY;
|
||||||
|
|
||||||
actor->target->player->pickuprings--;
|
actor->target->player->pickuprings--;
|
||||||
P_RemoveMobj(actor);
|
P_RemoveMobj(actor);
|
||||||
|
|
|
||||||
|
|
@ -490,6 +490,7 @@ static void P_NetArchivePlayers(savebuffer_t *save)
|
||||||
WRITEUINT16(save->p, players[i].superring);
|
WRITEUINT16(save->p, players[i].superring);
|
||||||
WRITEUINT8(save->p, players[i].nextringaward);
|
WRITEUINT8(save->p, players[i].nextringaward);
|
||||||
WRITEUINT8(save->p, players[i].ringvolume);
|
WRITEUINT8(save->p, players[i].ringvolume);
|
||||||
|
WRITEUINT8(save->p, players[i].ringtransparency);
|
||||||
WRITEUINT16(save->p, players[i].ringburst);
|
WRITEUINT16(save->p, players[i].ringburst);
|
||||||
|
|
||||||
WRITEUINT8(save->p, players[i].curshield);
|
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].superring = READUINT16(save->p);
|
||||||
players[i].nextringaward = READUINT8(save->p);
|
players[i].nextringaward = READUINT8(save->p);
|
||||||
players[i].ringvolume = READUINT8(save->p);
|
players[i].ringvolume = READUINT8(save->p);
|
||||||
|
players[i].ringtransparency = READUINT8(save->p);
|
||||||
players[i].ringburst = READUINT16(save->p);
|
players[i].ringburst = READUINT16(save->p);
|
||||||
|
|
||||||
players[i].curshield = READUINT8(save->p);
|
players[i].curshield = READUINT8(save->p);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue