Merge branch 'moar-sneaker-panels' into 'master'

More Sneaker Panels

See merge request KartKrew/Kart!1430
This commit is contained in:
Oni 2023-08-27 19:29:11 +00:00
commit 055e4f1e50
6 changed files with 41 additions and 16 deletions

View file

@ -4252,7 +4252,6 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
"S_SNEAKERPANEL",
"S_SNEAKERPANEL_SMALL",
"S_SNEAKERPANEL_TINY",
"S_SNEAKERPANELSPAWNER",
// Various plants
"S_SONICBUSH",

View file

@ -4959,7 +4959,6 @@ state_t states[NUMSTATES] =
{SPR_BSTP, FF_ANIMATE|FF_GLOBALANIM|FF_FLOORSPRITE|FF_FULLBRIGHT, -1, {NULL}, 5, 2, S_SNEAKERPANEL}, // S_SNEAKERPANEL
{SPR_BSTS, FF_ANIMATE|FF_GLOBALANIM|FF_FLOORSPRITE|FF_FULLBRIGHT, -1, {NULL}, 5, 2, S_SNEAKERPANEL_SMALL}, // S_SNEAKERPANEL_SMALL
{SPR_BSTT, FF_ANIMATE|FF_GLOBALANIM|FF_FLOORSPRITE|FF_FULLBRIGHT, -1, {NULL}, 5, 2, S_SNEAKERPANEL_TINY}, // S_SNEAKERPANEL_TINY
{SPR_NULL, 0, 65, {A_SpawnSneakerPanel}, 0, 0, S_SNEAKERPANELSPAWNER}, // S_SNEAKERPANELSPAWNER
// Various plants
{SPR_SBUS, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SONICBUSH
@ -26747,11 +26746,11 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
{ // MT_SNEAKERPANELSPAWNER
511, // doomednum
S_SNEAKERPANELSPAWNER, // spawnstate
S_INVISIBLE, // spawnstate
0, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
0, // reactiontime
65, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
@ -26768,7 +26767,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
0, // mass
0, // damage
sfx_None, // activesound
MF_NOGRAVITY|MF_NOBLOCKMAP|MF_SCENERY|MF_NOCLIPTHING, // flags
MF_NOGRAVITY|MF_NOBLOCKMAP|MF_NOCLIPTHING, // flags
S_NULL // raisestate
},

View file

@ -5406,7 +5406,6 @@ typedef enum state
S_SNEAKERPANEL,
S_SNEAKERPANEL_SMALL,
S_SNEAKERPANEL_TINY,
S_SNEAKERPANELSPAWNER,
// Various plants
S_SONICBUSH,

View file

@ -203,6 +203,9 @@ void Obj_SneakerPanelSpriteScale(mobj_t *mobj);
void Obj_SneakerPanelSpawn(mobj_t *mobj);
void Obj_SneakerPanelSetup(mobj_t *mobj, mapthing_t *mthing);
void Obj_SneakerPanelCollide(mobj_t *pad, mobj_t *mo);
void Obj_SneakerPanelSpawnerSpawn(mobj_t *mobj);
void Obj_SneakerPanelSpawnerSetup(mobj_t *mobj, mapthing_t *mthing);
void Obj_SneakerPanelSpawnerFuse(mobj_t *mobj);
/* Emerald */
void Obj_SpawnEmeraldSparks(mobj_t *source);

View file

@ -11,11 +11,6 @@ void Obj_SneakerPanelSpriteScale(mobj_t *mobj)
statenum_t newState;
fixed_t spriteScale;
if (mobj->scale == mobj->movefactor)
return;
mobj->movefactor = mobj->scale;
if (mobj->scale > FRACUNIT >> 1)
{
newState = S_SNEAKERPANEL;
@ -32,12 +27,9 @@ void Obj_SneakerPanelSpriteScale(mobj_t *mobj)
spriteScale = FRACUNIT << 2;
}
if (((statenum_t)(mobj->state - states)) != newState)
{
P_SetMobjState(mobj, newState);
mobj->spritexscale = mobj->spriteyscale = spriteScale;
}
}
void Obj_SneakerPanelSpawn(mobj_t *mobj)
{
@ -121,3 +113,23 @@ void Obj_SneakerPanelCollide(mobj_t *panel, mobj_t *mo)
K_DoSneaker(player, 0);
}
void Obj_SneakerPanelSpawnerSpawn(mobj_t *mobj)
{
mobj->fuse = mobj->reactiontime;
}
void Obj_SneakerPanelSpawnerSetup(mobj_t *mobj, mapthing_t *mthing)
{
if (mthing->thing_args[0] != 0)
{
mobj->fuse = mobj->reactiontime = mthing->thing_args[0];
}
}
void Obj_SneakerPanelSpawnerFuse(mobj_t *mobj)
{
var1 = var2 = 0;
A_SpawnSneakerPanel(mobj);
mobj->fuse = mobj->reactiontime;
}

View file

@ -9835,6 +9835,11 @@ static boolean P_FuseThink(mobj_t *mobj)
P_RemoveMobj(mobj);
return false;
}
case MT_SNEAKERPANELSPAWNER:
{
Obj_SneakerPanelSpawnerFuse(mobj);
break;
}
case MT_PLAYER:
break; // don't remove
default:
@ -10982,6 +10987,9 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
case MT_SNEAKERPANEL:
Obj_SneakerPanelSpawn(mobj);
break;
case MT_SNEAKERPANELSPAWNER:
Obj_SneakerPanelSpawnerSpawn(mobj);
break;
default:
break;
}
@ -13626,6 +13634,11 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj)
Obj_SneakerPanelSetup(mobj, mthing);
break;
}
case MT_SNEAKERPANELSPAWNER:
{
Obj_SneakerPanelSpawnerSetup(mobj, mthing);
break;
}
default:
break;
}