mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Implement pohbee chain
Crashes when drawing the sprites after looking at it for like half a second and idk why tf
This commit is contained in:
parent
72948ad49d
commit
71723a803d
4 changed files with 46 additions and 9 deletions
|
|
@ -3760,6 +3760,7 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
|
||||||
|
|
||||||
// Shrink
|
// Shrink
|
||||||
"S_SHRINK_GUN",
|
"S_SHRINK_GUN",
|
||||||
|
"S_SHRINK_CHAIN",
|
||||||
"S_SHRINK_LASER",
|
"S_SHRINK_LASER",
|
||||||
"S_SHRINK_PARTICLE",
|
"S_SHRINK_PARTICLE",
|
||||||
|
|
||||||
|
|
|
||||||
10
src/info.c
10
src/info.c
|
|
@ -574,6 +574,7 @@ char sprnames[NUMSPRITES + 1][5] =
|
||||||
"FLMF", // Flame Shield flash
|
"FLMF", // Flame Shield flash
|
||||||
"HYUU", // Hyudoro
|
"HYUU", // Hyudoro
|
||||||
"GRWP", // Grow
|
"GRWP", // Grow
|
||||||
|
"POHB", // Shrink Poh-Bee
|
||||||
"SHRG", // Shrink gun / laser
|
"SHRG", // Shrink gun / laser
|
||||||
"SINK", // Kitchen Sink
|
"SINK", // Kitchen Sink
|
||||||
"SITR", // Kitchen Sink Trail
|
"SITR", // Kitchen Sink Trail
|
||||||
|
|
@ -4319,6 +4320,7 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_GRWP, FF_FULLBRIGHT|FF_ANIMATE, 13, {NULL}, 7, 1, S_NULL}, // S_GROW_PARTICLE
|
{SPR_GRWP, FF_FULLBRIGHT|FF_ANIMATE, 13, {NULL}, 7, 1, S_NULL}, // S_GROW_PARTICLE
|
||||||
|
|
||||||
{SPR_SHRG, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SHRINK_GUN
|
{SPR_SHRG, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SHRINK_GUN
|
||||||
|
{SPR_POHB, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SHRINK_CHAIN
|
||||||
{SPR_SHRG, FF_FULLBRIGHT|1, -1, {NULL}, 0, 0, S_NULL}, // S_SHRINK_LASER
|
{SPR_SHRG, FF_FULLBRIGHT|1, -1, {NULL}, 0, 0, S_NULL}, // S_SHRINK_LASER
|
||||||
{SPR_SHRG, FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_NULL}, // S_SHRINK_PARTICLE
|
{SPR_SHRG, FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_NULL}, // S_SHRINK_PARTICLE
|
||||||
|
|
||||||
|
|
@ -24127,7 +24129,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
|
|
||||||
{ // MT_SHRINK_CHAIN
|
{ // MT_SHRINK_CHAIN
|
||||||
-1, // doomednum
|
-1, // doomednum
|
||||||
S_SHRINK_GUN, // spawnstate
|
S_SHRINK_CHAIN, // spawnstate
|
||||||
1000, // spawnhealth
|
1000, // spawnhealth
|
||||||
S_NULL, // seestate
|
S_NULL, // seestate
|
||||||
sfx_None, // seesound
|
sfx_None, // seesound
|
||||||
|
|
@ -24142,13 +24144,13 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
S_NULL, // xdeathstate
|
S_NULL, // xdeathstate
|
||||||
sfx_None, // deathsound
|
sfx_None, // deathsound
|
||||||
0, // speed
|
0, // speed
|
||||||
16*FRACUNIT, // radius
|
26*FRACUNIT, // radius
|
||||||
120*FRACUNIT, // height
|
26*FRACUNIT, // height
|
||||||
0, // display offset
|
0, // display offset
|
||||||
0, // mass
|
0, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOTHINK|MF_NOCLIP|MF_NOCLIPTHING|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_DONTENCOREMAP, // flags
|
MF_SCENERY|MF_NOCLIP|MF_NOCLIPTHING|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1120,6 +1120,7 @@ typedef enum sprite
|
||||||
SPR_FLMF, // Flame Shield flash
|
SPR_FLMF, // Flame Shield flash
|
||||||
SPR_HYUU, // Hyudoro
|
SPR_HYUU, // Hyudoro
|
||||||
SPR_GRWP, // Grow
|
SPR_GRWP, // Grow
|
||||||
|
SPR_POHB, // Shrink Poh-Bee
|
||||||
SPR_SHRG, // Shrink gun / laser
|
SPR_SHRG, // Shrink gun / laser
|
||||||
SPR_SINK, // Kitchen Sink
|
SPR_SINK, // Kitchen Sink
|
||||||
SPR_SITR, // Kitchen Sink Trail
|
SPR_SITR, // Kitchen Sink Trail
|
||||||
|
|
@ -4752,6 +4753,7 @@ typedef enum state
|
||||||
|
|
||||||
// Shrink
|
// Shrink
|
||||||
S_SHRINK_GUN,
|
S_SHRINK_GUN,
|
||||||
|
S_SHRINK_CHAIN,
|
||||||
S_SHRINK_LASER,
|
S_SHRINK_LASER,
|
||||||
S_SHRINK_PARTICLE,
|
S_SHRINK_PARTICLE,
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@
|
||||||
#define GUN_SWING (ANGLE_90 - ANG10)
|
#define GUN_SWING (ANGLE_90 - ANG10)
|
||||||
#define GUN_SWINGTIME (4 * TICRATE)
|
#define GUN_SWINGTIME (4 * TICRATE)
|
||||||
|
|
||||||
#define CHAIN_SIZE (16)
|
#define CHAIN_SIZE (52)
|
||||||
|
|
||||||
#define EXTRA_FOR_FIRST (7)
|
#define EXTRA_FOR_FIRST (7)
|
||||||
|
|
||||||
|
|
@ -58,6 +58,8 @@ enum
|
||||||
#define gun_laser(o) ((o)->tracer)
|
#define gun_laser(o) ((o)->tracer)
|
||||||
#define gun_chains(o) ((o)->hprev)
|
#define gun_chains(o) ((o)->hprev)
|
||||||
|
|
||||||
|
#define chain_index(o) ((o)->extravalue1)
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
LASER_SHRINK,
|
LASER_SHRINK,
|
||||||
|
|
@ -333,6 +335,34 @@ static void ShrinkLaserThinker(mobj_t *pohbee, mobj_t *gun, mobj_t *laser)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void DoGunChains(mobj_t *gun, mobj_t *pohbee)
|
||||||
|
{
|
||||||
|
const fixed_t gunZ = P_GetMobjHead(gun);
|
||||||
|
const fixed_t beeZ = P_GetMobjFeet(pohbee);
|
||||||
|
|
||||||
|
const fixed_t offsetX = (pohbee->x - gun->x) / gun_numsegs(gun);
|
||||||
|
const fixed_t offsetY = (pohbee->y - gun->y) / gun_numsegs(gun);
|
||||||
|
const fixed_t offsetZ = (beeZ - gunZ) / gun_numsegs(gun);
|
||||||
|
|
||||||
|
mobj_t *chain = NULL;
|
||||||
|
|
||||||
|
fixed_t curX = gun->x + (offsetX / 2);
|
||||||
|
fixed_t curY = gun->y + (offsetY / 2);
|
||||||
|
fixed_t curZ = gunZ + (offsetZ / 2);
|
||||||
|
|
||||||
|
chain = gun_chains(gun);
|
||||||
|
while (chain != NULL && P_MobjWasRemoved(chain) == false)
|
||||||
|
{
|
||||||
|
PohbeeMoveTo(chain, curX, curY, curZ);
|
||||||
|
|
||||||
|
curX += offsetX;
|
||||||
|
curY += offsetY;
|
||||||
|
curZ += offsetZ;
|
||||||
|
|
||||||
|
chain = gun_chains(chain);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void ShrinkGunThinker(mobj_t *gun)
|
static void ShrinkGunThinker(mobj_t *gun)
|
||||||
{
|
{
|
||||||
mobj_t *pohbee = gun_pohbee(gun);
|
mobj_t *pohbee = gun_pohbee(gun);
|
||||||
|
|
@ -352,6 +382,8 @@ static void ShrinkGunThinker(mobj_t *gun)
|
||||||
{
|
{
|
||||||
ShrinkLaserThinker(pohbee, gun, gun_laser(gun));
|
ShrinkLaserThinker(pohbee, gun, gun_laser(gun));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DoGunChains(gun, pohbee);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Obj_PohbeeThinker(mobj_t *pohbee)
|
void Obj_PohbeeThinker(mobj_t *pohbee)
|
||||||
|
|
@ -612,7 +644,7 @@ static void CreatePohbee(player_t *owner, waypoint_t *start, waypoint_t *end, UI
|
||||||
|
|
||||||
mobj_t *gun = P_SpawnMobjFromMobj(pohbee, 0, 0, 0, MT_SHRINK_GUN);
|
mobj_t *gun = P_SpawnMobjFromMobj(pohbee, 0, 0, 0, MT_SHRINK_GUN);
|
||||||
mobj_t *laser = NULL;
|
mobj_t *laser = NULL;
|
||||||
//mobj_t *prevChain = NULL;
|
mobj_t *prevChain = NULL;
|
||||||
|
|
||||||
P_SetTarget(&gun_pohbee(gun), pohbee);
|
P_SetTarget(&gun_pohbee(gun), pohbee);
|
||||||
P_SetTarget(&pohbee_guns(prevGun), gun);
|
P_SetTarget(&pohbee_guns(prevGun), gun);
|
||||||
|
|
@ -623,16 +655,16 @@ static void CreatePohbee(player_t *owner, waypoint_t *start, waypoint_t *end, UI
|
||||||
laser = P_SpawnMobjFromMobj(gun, 0, 0, 0, MT_SHRINK_LASER);
|
laser = P_SpawnMobjFromMobj(gun, 0, 0, 0, MT_SHRINK_LASER);
|
||||||
P_SetTarget(&gun_laser(gun), laser);
|
P_SetTarget(&gun_laser(gun), laser);
|
||||||
|
|
||||||
/*
|
|
||||||
prevChain = gun;
|
prevChain = gun;
|
||||||
for (j = 0; j < numSegs; j++)
|
for (j = 0; j < numSegs; j++)
|
||||||
{
|
{
|
||||||
mobj_t *chain = P_SpawnMobjFromMobj(gun, 0, 0, 0, MT_SHRINK_CHAIN);
|
mobj_t *chain = P_SpawnMobjFromMobj(gun, 0, 0, 0, MT_SHRINK_CHAIN);
|
||||||
|
|
||||||
P_SetTarget(&gun_chains(prevChain), chain);
|
P_SetTarget(&gun_chains(prevChain), chain);
|
||||||
|
chain_index(chain) = j;
|
||||||
|
|
||||||
prevChain = chain;
|
prevChain = chain;
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
(void)j;
|
|
||||||
|
|
||||||
prevGun = gun;
|
prevGun = gun;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue