mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Hardcode waterfall particles spawner
This commit is contained in:
parent
b932e23187
commit
10e9cd7480
7 changed files with 92 additions and 0 deletions
|
|
@ -4945,6 +4945,9 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
|
||||||
|
|
||||||
// MT_TRICKBALLOON_YELLOW_POINT
|
// MT_TRICKBALLOON_YELLOW_POINT
|
||||||
"S_TRICKBALLOON_YELLOW_POINT1",
|
"S_TRICKBALLOON_YELLOW_POINT1",
|
||||||
|
|
||||||
|
// MT_WATERFALLPARTICLESPAWNER
|
||||||
|
"S_WATERFALLPARTICLE",
|
||||||
};
|
};
|
||||||
|
|
||||||
// RegEx to generate this from info.h: ^\tMT_([^,]+), --> \t"MT_\1",
|
// RegEx to generate this from info.h: ^\tMT_([^,]+), --> \t"MT_\1",
|
||||||
|
|
@ -6227,6 +6230,8 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t
|
||||||
"MT_TRICKBALLOON_RED_POINT",
|
"MT_TRICKBALLOON_RED_POINT",
|
||||||
"MT_TRICKBALLOON_YELLOW",
|
"MT_TRICKBALLOON_YELLOW",
|
||||||
"MT_TRICKBALLOON_YELLOW_POINT",
|
"MT_TRICKBALLOON_YELLOW_POINT",
|
||||||
|
|
||||||
|
"MT_WATERFALLPARTICLESPAWNER",
|
||||||
};
|
};
|
||||||
|
|
||||||
const char *const MOBJFLAG_LIST[] = {
|
const char *const MOBJFLAG_LIST[] = {
|
||||||
|
|
|
||||||
32
src/info.c
32
src/info.c
|
|
@ -1034,6 +1034,9 @@ char sprnames[NUMSPRITES + 1][5] =
|
||||||
"TKBR",
|
"TKBR",
|
||||||
"TKBY",
|
"TKBY",
|
||||||
|
|
||||||
|
// Waterfall particles
|
||||||
|
"WTRP",
|
||||||
|
|
||||||
// First person view sprites; this is a sprite so that it can be replaced by a specialized MD2 draw later
|
// First person view sprites; this is a sprite so that it can be replaced by a specialized MD2 draw later
|
||||||
"VIEW",
|
"VIEW",
|
||||||
};
|
};
|
||||||
|
|
@ -5842,6 +5845,9 @@ state_t states[NUMSTATES] =
|
||||||
|
|
||||||
// MT_TRICKBALLOON_YELLOW_POINT
|
// MT_TRICKBALLOON_YELLOW_POINT
|
||||||
{SPR_NULL, 0, 1, {NULL}, 0, 0, S_TRICKBALLOON_YELLOW_POINT1}, // S_TRICKBALLOON_YELLOW_POINT1
|
{SPR_NULL, 0, 1, {NULL}, 0, 0, S_TRICKBALLOON_YELLOW_POINT1}, // S_TRICKBALLOON_YELLOW_POINT1
|
||||||
|
|
||||||
|
// MT_WATERFALLPARTICLESPAWNER
|
||||||
|
{SPR_WTRP, FF_ANIMATE, 32, {NULL}, 31, 1, S_NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
|
|
@ -33521,6 +33527,32 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
MF_NOGRAVITY, // flags
|
MF_NOGRAVITY, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
{ // MT_WATERFALLPARTICLESPAWNER
|
||||||
|
3422, // doomednum
|
||||||
|
S_INVISIBLE, // spawnstate
|
||||||
|
1, // spawnhealth
|
||||||
|
S_NULL, // seestate
|
||||||
|
sfx_None, // seesound
|
||||||
|
0, // reactiontime
|
||||||
|
sfx_None, // attacksound
|
||||||
|
S_NULL, // painstate
|
||||||
|
0, // painchance
|
||||||
|
sfx_None, // painsound
|
||||||
|
S_NULL, // meleestate
|
||||||
|
S_NULL, // missilestate
|
||||||
|
S_NULL, // deathstate
|
||||||
|
S_NULL, // xdeathstate
|
||||||
|
sfx_None, // deathsound
|
||||||
|
0, // speed
|
||||||
|
1*FRACUNIT, // radius
|
||||||
|
1*FRACUNIT, // height
|
||||||
|
0, // dispoffset
|
||||||
|
0, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_NOGRAVITY, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1588,6 +1588,9 @@ typedef enum sprite
|
||||||
SPR_TKBR,
|
SPR_TKBR,
|
||||||
SPR_TKBY,
|
SPR_TKBY,
|
||||||
|
|
||||||
|
// Waterfall particles
|
||||||
|
SPR_WTRP,
|
||||||
|
|
||||||
// First person view sprites; this is a sprite so that it can be replaced by a specialized MD2 draw later
|
// First person view sprites; this is a sprite so that it can be replaced by a specialized MD2 draw later
|
||||||
SPR_VIEW,
|
SPR_VIEW,
|
||||||
|
|
||||||
|
|
@ -6267,6 +6270,9 @@ typedef enum state
|
||||||
// MT_TRICKBALLOON_YELLOW_POINT
|
// MT_TRICKBALLOON_YELLOW_POINT
|
||||||
S_TRICKBALLOON_YELLOW_POINT1,
|
S_TRICKBALLOON_YELLOW_POINT1,
|
||||||
|
|
||||||
|
// MT_WATERFALLPARTICLESPAWNER
|
||||||
|
S_WATERFALLPARTICLE,
|
||||||
|
|
||||||
S_FIRSTFREESLOT,
|
S_FIRSTFREESLOT,
|
||||||
S_LASTFREESLOT = S_FIRSTFREESLOT + NUMSTATEFREESLOTS - 1,
|
S_LASTFREESLOT = S_FIRSTFREESLOT + NUMSTATEFREESLOTS - 1,
|
||||||
NUMSTATES
|
NUMSTATES
|
||||||
|
|
@ -7571,6 +7577,8 @@ typedef enum mobj_type
|
||||||
MT_TRICKBALLOON_YELLOW,
|
MT_TRICKBALLOON_YELLOW,
|
||||||
MT_TRICKBALLOON_YELLOW_POINT,
|
MT_TRICKBALLOON_YELLOW_POINT,
|
||||||
|
|
||||||
|
MT_WATERFALLPARTICLESPAWNER,
|
||||||
|
|
||||||
MT_FIRSTFREESLOT,
|
MT_FIRSTFREESLOT,
|
||||||
MT_LASTFREESLOT = MT_FIRSTFREESLOT + NUMMOBJFREESLOTS - 1,
|
MT_LASTFREESLOT = MT_FIRSTFREESLOT + NUMMOBJFREESLOTS - 1,
|
||||||
NUMMOBJTYPES
|
NUMMOBJTYPES
|
||||||
|
|
|
||||||
|
|
@ -366,6 +366,9 @@ void Obj_PlayerBulbThink(player_t *player);
|
||||||
void Obj_CloudTouched(mobj_t *special, mobj_t *toucher);
|
void Obj_CloudTouched(mobj_t *special, mobj_t *toucher);
|
||||||
void Obj_BulbTouched(mobj_t *special, mobj_t *toucher);
|
void Obj_BulbTouched(mobj_t *special, mobj_t *toucher);
|
||||||
|
|
||||||
|
/* Waterfall Particles Spawner */
|
||||||
|
void Obj_WaterfallParticleThink(mobj_t *mo);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} // extern "C"
|
} // extern "C"
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@ target_sources(SRB2SDL2 PRIVATE
|
||||||
emz-faucet.cpp
|
emz-faucet.cpp
|
||||||
trick-balloon.c
|
trick-balloon.c
|
||||||
cloud.c
|
cloud.c
|
||||||
|
waterfall-particle.c
|
||||||
)
|
)
|
||||||
|
|
||||||
add_subdirectory(versus)
|
add_subdirectory(versus)
|
||||||
|
|
|
||||||
38
src/objects/waterfall-particle.c
Normal file
38
src/objects/waterfall-particle.c
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
// DR. ROBOTNIK'S RING RACERS
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Copyright (C) 2024 by Kart Krew
|
||||||
|
//
|
||||||
|
// This program is free software distributed under the
|
||||||
|
// terms of the GNU General Public License, version 2.
|
||||||
|
// See the 'LICENSE' file for more details.
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
/// \file waterfall-particle.c
|
||||||
|
/// \brief Waterfall particle spawner.
|
||||||
|
|
||||||
|
#include "../p_local.h"
|
||||||
|
#include "../m_random.h"
|
||||||
|
#include "../k_objects.h"
|
||||||
|
|
||||||
|
void Obj_WaterfallParticleThink(mobj_t *mo)
|
||||||
|
{
|
||||||
|
const INT32 radius = 320;
|
||||||
|
const INT32 momz = (mo->spawnpoint->angle) ? mo->spawnpoint->angle : 8;
|
||||||
|
|
||||||
|
INT32 x = P_RandomRange(PR_DECORATION, -radius, radius)*mapobjectscale;
|
||||||
|
INT32 y = P_RandomRange(PR_DECORATION, -radius, radius)*mapobjectscale;
|
||||||
|
|
||||||
|
mobj_t *particle = P_SpawnMobj(mo->x + x , mo->y + y , mo->z, MT_THOK);
|
||||||
|
|
||||||
|
P_SetMobjState(particle, S_WATERFALLPARTICLE);
|
||||||
|
particle->momx = P_RandomRange(PR_DECORATION, -5, 5)*mapobjectscale;
|
||||||
|
particle->momy = P_RandomRange(PR_DECORATION, -5, 5)*mapobjectscale;
|
||||||
|
particle->momz = P_RandomRange(PR_DECORATION, momz/2, momz)*mapobjectscale*P_MobjFlip(mo);
|
||||||
|
|
||||||
|
P_InstaScale(particle, 3 * particle->scale);
|
||||||
|
|
||||||
|
if (mo->eflags & MFE_VERTICALFLIP)
|
||||||
|
{
|
||||||
|
particle->eflags |= MFE_VERTICALFLIP;
|
||||||
|
particle->flags2 |= MF2_OBJECTFLIP;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -10330,6 +10330,11 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
|
||||||
mobj->z = (mobj->extravalue1 - (16 * mobj->scale)) + sine;
|
mobj->z = (mobj->extravalue1 - (16 * mobj->scale)) + sine;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case MT_WATERFALLPARTICLESPAWNER:
|
||||||
|
{
|
||||||
|
Obj_WaterfallParticleThink(mobj);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// check mobj against possible water content, before movement code
|
// check mobj against possible water content, before movement code
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue