mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Merge branch 'clear-sign-sprite' into 'next'
Add generic signpost sprite for skins that don't have one See merge request STJr/SRB2!626
This commit is contained in:
commit
e831a61df5
4 changed files with 47 additions and 38 deletions
|
|
@ -6015,6 +6015,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_SIGNSTOP",
|
"S_SIGNSTOP",
|
||||||
"S_SIGNBOARD",
|
"S_SIGNBOARD",
|
||||||
"S_EGGMANSIGN",
|
"S_EGGMANSIGN",
|
||||||
|
"S_CLEARSIGN",
|
||||||
|
|
||||||
// Spike Ball
|
// Spike Ball
|
||||||
"S_SPIKEBALL1",
|
"S_SPIKEBALL1",
|
||||||
|
|
|
||||||
|
|
@ -1859,8 +1859,9 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_SIGN, 0, 1, {A_SignPlayer}, -1, 0, S_SIGNSLOW}, // S_SIGNPLAYER
|
{SPR_SIGN, 0, 1, {A_SignPlayer}, -1, 0, S_SIGNSLOW}, // S_SIGNPLAYER
|
||||||
{SPR_SIGN, 0, 1, {A_SignSpin}, 30, 0, S_SIGNSLOW}, // S_SIGNSLOW
|
{SPR_SIGN, 0, 1, {A_SignSpin}, 30, 0, S_SIGNSLOW}, // S_SIGNSLOW
|
||||||
{SPR_SIGN, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SIGNSTOP
|
{SPR_SIGN, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SIGNSTOP
|
||||||
{SPR_SIGN, FF_PAPERSPRITE|2, -1, {NULL}, 0, 0, S_NULL}, // S_SIGNBOARD
|
{SPR_SIGN, FF_PAPERSPRITE| 2, -1, {NULL}, 0, 0, S_NULL}, // S_SIGNBOARD
|
||||||
{SPR_SIGN, FF_PAPERSPRITE|1, -1, {NULL}, 0, 29, S_NULL}, // S_EGGMANSIGN
|
{SPR_SIGN, FF_PAPERSPRITE| 1, -1, {NULL}, 0, 29, S_NULL}, // S_EGGMANSIGN
|
||||||
|
{SPR_SIGN, FF_PAPERSPRITE|18, -1, {NULL}, 0, 29, S_NULL}, // S_CLEARSIGN
|
||||||
|
|
||||||
// Spike Ball
|
// Spike Ball
|
||||||
{SPR_SPIK, 0, 1, {NULL}, 0, 0, S_SPIKEBALL2}, // S_SPIKEBALL1
|
{SPR_SPIK, 0, 1, {NULL}, 0, 0, S_SPIKEBALL2}, // S_SPIKEBALL1
|
||||||
|
|
@ -7850,7 +7851,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
MT_SPARK, // painchance
|
MT_SPARK, // painchance
|
||||||
sfx_s3kb8, // painsound
|
sfx_s3kb8, // painsound
|
||||||
S_EGGMANSIGN, // meleestate
|
S_EGGMANSIGN, // meleestate
|
||||||
S_NULL, // missilestate
|
S_CLEARSIGN, // missilestate
|
||||||
S_SIGNSTOP, // deathstate
|
S_SIGNSTOP, // deathstate
|
||||||
S_NULL, // xdeathstate
|
S_NULL, // xdeathstate
|
||||||
sfx_s3k64, // deathsound
|
sfx_s3k64, // deathsound
|
||||||
|
|
|
||||||
|
|
@ -2021,6 +2021,7 @@ typedef enum state
|
||||||
S_SIGNSTOP,
|
S_SIGNSTOP,
|
||||||
S_SIGNBOARD,
|
S_SIGNBOARD,
|
||||||
S_EGGMANSIGN,
|
S_EGGMANSIGN,
|
||||||
|
S_CLEARSIGN,
|
||||||
|
|
||||||
// Spike Ball
|
// Spike Ball
|
||||||
S_SPIKEBALL1,
|
S_SPIKEBALL1,
|
||||||
|
|
|
||||||
|
|
@ -5177,6 +5177,8 @@ void A_SignPlayer(mobj_t *actor)
|
||||||
|
|
||||||
if (signcolor)
|
if (signcolor)
|
||||||
;
|
;
|
||||||
|
else if (!skin->sprites[SPR2_SIGN].numframes)
|
||||||
|
signcolor = facecolor;
|
||||||
else if ((actor->target->player->skincolor == skin->prefcolor) && (skin->prefoppositecolor)) // Set it as the skin's preferred oppositecolor?
|
else if ((actor->target->player->skincolor == skin->prefcolor) && (skin->prefoppositecolor)) // Set it as the skin's preferred oppositecolor?
|
||||||
signcolor = skin->prefoppositecolor;
|
signcolor = skin->prefoppositecolor;
|
||||||
else if (actor->target->player->skincolor) // Set the sign to be an appropriate background color for this player's skincolor.
|
else if (actor->target->player->skincolor) // Set the sign to be an appropriate background color for this player's skincolor.
|
||||||
|
|
@ -5187,13 +5189,11 @@ void A_SignPlayer(mobj_t *actor)
|
||||||
else if (locvar1 != -3) // set to a defined skin
|
else if (locvar1 != -3) // set to a defined skin
|
||||||
{
|
{
|
||||||
// I turned this function into a fucking mess. I'm so sorry. -Lach
|
// I turned this function into a fucking mess. I'm so sorry. -Lach
|
||||||
if (locvar1 == -2) // next skin
|
if (locvar1 == -2) // random skin
|
||||||
{
|
{
|
||||||
|
#define skincheck(num) (player ? !R_SkinUsable(player-players, num) : skins[num].availability > 0)
|
||||||
player_t *player = actor->target ? actor->target->player : NULL;
|
player_t *player = actor->target ? actor->target->player : NULL;
|
||||||
UINT8 skinnum;
|
UINT8 skinnum;
|
||||||
#define skincheck(num) (player ? !R_SkinUsable(player-players, num) : skins[num].availability > 0)
|
|
||||||
if (ov->skin == NULL) // pick a random skin to start with!
|
|
||||||
{
|
|
||||||
UINT8 skincount = 0;
|
UINT8 skincount = 0;
|
||||||
for (skincount = 0; skincount < numskins; skincount++)
|
for (skincount = 0; skincount < numskins; skincount++)
|
||||||
if (!skincheck(skincount))
|
if (!skincheck(skincount))
|
||||||
|
|
@ -5206,14 +5206,8 @@ void A_SignPlayer(mobj_t *actor)
|
||||||
if (skincheck(skincount))
|
if (skincheck(skincount))
|
||||||
skinnum++;
|
skinnum++;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else // otherwise, advance 1 skin
|
|
||||||
{
|
|
||||||
skinnum = (skin_t*)ov->skin-skins;
|
|
||||||
while ((skinnum = (skinnum + 1) % numskins) && skincheck(skinnum));
|
|
||||||
}
|
|
||||||
#undef skincheck
|
|
||||||
skin = &skins[skinnum];
|
skin = &skins[skinnum];
|
||||||
|
#undef skincheck
|
||||||
}
|
}
|
||||||
else // specific skin
|
else // specific skin
|
||||||
skin = &skins[locvar1];
|
skin = &skins[locvar1];
|
||||||
|
|
@ -5221,21 +5215,33 @@ void A_SignPlayer(mobj_t *actor)
|
||||||
facecolor = skin->prefcolor;
|
facecolor = skin->prefcolor;
|
||||||
if (signcolor)
|
if (signcolor)
|
||||||
;
|
;
|
||||||
|
else if (!skin->sprites[SPR2_SIGN].numframes)
|
||||||
|
signcolor = facecolor;
|
||||||
else if (skin->prefoppositecolor)
|
else if (skin->prefoppositecolor)
|
||||||
signcolor = skin->prefoppositecolor;
|
signcolor = skin->prefoppositecolor;
|
||||||
else if (facecolor)
|
else if (facecolor)
|
||||||
signcolor = Color_Opposite[facecolor - 1][0];
|
signcolor = Color_Opposite[facecolor - 1][0];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (skin && skin->sprites[SPR2_SIGN].numframes) // player face
|
if (skin)
|
||||||
|
{
|
||||||
|
if (skin->sprites[SPR2_SIGN].numframes) // player face
|
||||||
{
|
{
|
||||||
ov->color = facecolor;
|
ov->color = facecolor;
|
||||||
ov->skin = skin;
|
ov->skin = skin;
|
||||||
P_SetMobjState(ov, actor->info->seestate); // S_PLAY_SIGN
|
P_SetMobjState(ov, actor->info->seestate); // S_PLAY_SIGN
|
||||||
}
|
}
|
||||||
|
else // CLEAR! sign
|
||||||
|
{
|
||||||
|
ov->color = SKINCOLOR_NONE;
|
||||||
|
ov->skin = NULL; // needs to be NULL in the case of SF_HIRES characters
|
||||||
|
P_SetMobjState(ov, actor->info->missilestate); // S_CLEARSIGN
|
||||||
|
}
|
||||||
|
}
|
||||||
else // Eggman face
|
else // Eggman face
|
||||||
{
|
{
|
||||||
ov->color = SKINCOLOR_NONE;
|
ov->color = SKINCOLOR_NONE;
|
||||||
|
ov->skin = NULL;
|
||||||
P_SetMobjState(ov, actor->info->meleestate); // S_EGGMANSIGN
|
P_SetMobjState(ov, actor->info->meleestate); // S_EGGMANSIGN
|
||||||
if (!signcolor)
|
if (!signcolor)
|
||||||
signcolor = SKINCOLOR_CARBON;
|
signcolor = SKINCOLOR_CARBON;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue