From e3e9e4030eebc43af6a809504b8eface39dbd12d Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 1 Nov 2021 09:23:52 +0100 Subject: [PATCH] - splash functions. --- source/games/sw/src/game.h | 2 +- source/games/sw/src/jweapon.cpp | 47 +++++++++++++++------------------ source/games/sw/src/weapon.cpp | 12 ++++----- 3 files changed, 28 insertions(+), 33 deletions(-) diff --git a/source/games/sw/src/game.h b/source/games/sw/src/game.h index 276b8b8e0..5a466d2bf 100644 --- a/source/games/sw/src/game.h +++ b/source/games/sw/src/game.h @@ -2150,7 +2150,7 @@ int PlayerInitChemBomb(PLAYERp pp); // jweapon.c int PlayerInitFlashBomb(PLAYERp pp); // jweapon.c int PlayerInitCaltrops(PLAYERp pp); // jweapon.c int InitPhosphorus(int16_t SpriteNum); // jweapon.c -void SpawnFloorSplash(short SpriteNum); // jweapon.c +void SpawnFloorSplash(DSWActor*); // jweapon.c int SaveGame(short save_num); // save.c int LoadGame(short save_num); // save.c diff --git a/source/games/sw/src/jweapon.cpp b/source/games/sw/src/jweapon.cpp index 5a04e302a..02fbc931b 100644 --- a/source/games/sw/src/jweapon.cpp +++ b/source/games/sw/src/jweapon.cpp @@ -256,12 +256,10 @@ STATE s_BloodSprayDrip[] = ///////////////////////////////////////////////////////////////////////////////////////////// -int -DoWallBloodDrip(DSWActor* actor) +int DoWallBloodDrip(DSWActor* actor) { USER* u = actor->u(); - int SpriteNum = u->SpriteNum; - SPRITEp sp = &sprite[SpriteNum]; + SPRITEp sp = &actor->s(); //sp->z += (300+RandomRange(2300)) >> 1; @@ -289,7 +287,7 @@ DoWallBloodDrip(DSWActor* actor) if (sp->z >= u->loz) { sp->z = u->loz; - SpawnFloorSplash(SpriteNum); + SpawnFloorSplash(actor); KillActor(actor); return 0; } @@ -298,19 +296,18 @@ DoWallBloodDrip(DSWActor* actor) } void -SpawnMidSplash(short SpriteNum) +SpawnMidSplash(DSWActor* actor) { - SPRITEp sp = &sprite[SpriteNum]; - USERp u = User[SpriteNum].Data(); + SPRITEp sp = &actor->s(); + USERp u = actor->u(); SPRITEp np; USERp nu; - short New; - New = SpawnSprite(STAT_MISSILE, GOREDrip, s_GoreSplash, sp->sectnum, + auto actorNew = SpawnActor(STAT_MISSILE, GOREDrip, s_GoreSplash, sp->sectnum, sp->x, sp->y, SPRITEp_MID(sp), sp->ang, 0); - np = &sprite[New]; - nu = User[New].Data(); + np = &actorNew->s(); + nu = actorNew->u(); np->shade = -12; np->xrepeat = 70-RandomRange(20); @@ -330,20 +327,18 @@ SpawnMidSplash(short SpriteNum) SET(nu->Flags, SPR_UNDERWATER); } -void -SpawnFloorSplash(short SpriteNum) +void SpawnFloorSplash(DSWActor* actor) { - SPRITEp sp = &sprite[SpriteNum]; - USERp u = User[SpriteNum].Data(); + SPRITEp sp = &actor->s(); + USERp u = actor->u(); SPRITEp np; USERp nu; - short New; - New = SpawnSprite(STAT_MISSILE, GOREDrip, s_GoreFloorSplash, sp->sectnum, + auto actorNew = SpawnActor(STAT_MISSILE, GOREDrip, s_GoreFloorSplash, sp->sectnum, sp->x, sp->y, sp->z, sp->ang, 0); - np = &sprite[New]; - nu = User[New].Data(); + np = &actorNew->s(); + nu = actorNew->u(); np->shade = -12; np->xrepeat = 70-RandomRange(20); @@ -395,7 +390,7 @@ DoBloodSpray(DSWActor* actor) if (sp->z >= fz) { sp->z = fz; - SpawnFloorSplash(Weapon); + SpawnFloorSplash(actor); KillActor(actor); return true; } @@ -425,7 +420,7 @@ DoBloodSpray(DSWActor* actor) if (TEST(hsp->cstat, CSTAT_SPRITE_ALIGNMENT_WALL)) { wall_ang = NORM_ANGLE(hsp->ang); - SpawnMidSplash(Weapon); + SpawnMidSplash(actor); QueueWallBlood(Weapon, hsp->ang); WallBounce(Weapon, wall_ang); ScaleSpriteVector(Weapon, 32000); @@ -433,7 +428,7 @@ DoBloodSpray(DSWActor* actor) else { u->xchange = u->ychange = 0; - SpawnMidSplash(Weapon); + SpawnMidSplash(actor); QueueWallBlood(Weapon, hsp->ang); KillActor(actor); return true; @@ -463,7 +458,7 @@ DoBloodSpray(DSWActor* actor) nw = wall[hit_wall].point2; wall_ang = NORM_ANGLE(getangle(wall[nw].x - wph->x, wall[nw].y - wph->y) + 512); - SpawnMidSplash(Weapon); + SpawnMidSplash(actor); wb = QueueWallBlood(Weapon, NORM_ANGLE(wall_ang+1024)); if (wb < 0) @@ -522,7 +517,7 @@ DoBloodSpray(DSWActor* actor) #if 0 if (!TEST(u->Flags, SPR_BOUNCE)) { - SpawnFloorSplash(Weapon); + SpawnFloorSplash(actor); SET(u->Flags, SPR_BOUNCE); SetCollision(u, 0); u->Counter = 0; @@ -534,7 +529,7 @@ DoBloodSpray(DSWActor* actor) #endif { u->xchange = u->ychange = 0; - SpawnFloorSplash(Weapon); + SpawnFloorSplash(actor); KillActor(actor); return true; } diff --git a/source/games/sw/src/weapon.cpp b/source/games/sw/src/weapon.cpp index cdc4f897f..a457af71f 100644 --- a/source/games/sw/src/weapon.cpp +++ b/source/games/sw/src/weapon.cpp @@ -108,7 +108,7 @@ bool TestDontStickSector(short hit_sect); ANIMATOR SpawnShrapX; bool WeaponMoveHit(short SpriteNum); int HelpMissileLateral(int16_t Weapon, int dist); -void SpawnMidSplash(short SpriteNum); +void SpawnMidSplash(DSWActor* actor); int SopDamage(SECTOR_OBJECTp sop,short amt); int SopCheckKill(SECTOR_OBJECTp sop); @@ -6467,7 +6467,7 @@ DoDamage(short SpriteNum, short Weapon) if (RandomRange(1000) > 900) InitBloodSpray(SpriteNum,false,105); if (RandomRange(1000) > 900) - SpawnMidSplash(SpriteNum); + SpawnMidSplash(actor); break; } } @@ -6517,7 +6517,7 @@ DoDamage(short SpriteNum, short Weapon) break; default: if (RandomRange(1000) > 950) - SpawnMidSplash(SpriteNum); + SpawnMidSplash(actor); break; } @@ -21036,7 +21036,7 @@ ShrapKillSprite(short SpriteNum) case GORE_Lung: if (RandomRange(1000) > 500) break; sp->clipdist = SPRITEp_SIZE_X(sp); - SpawnFloorSplash(SpriteNum); + SpawnFloorSplash(actor); if (RandomRange(1000) < 500) PlaySound(DIGI_GIBS1, sp, v3df_none); else @@ -21058,7 +21058,7 @@ ShrapKillSprite(short SpriteNum) case GORE_Liver: if (RandomRange(1000) > 500) break; sp->clipdist = SPRITEp_SIZE_X(sp); - SpawnFloorSplash(SpriteNum); + SpawnFloorSplash(actor); if (RandomRange(1000) < 500) PlaySound(DIGI_GIBS1, sp, v3df_none); else @@ -21080,7 +21080,7 @@ ShrapKillSprite(short SpriteNum) case GORE_SkullCap: if (RandomRange(1000) > 500) break; sp->clipdist = SPRITEp_SIZE_X(sp); - SpawnFloorSplash(SpriteNum); + SpawnFloorSplash(actor); if (rnd_num > 683) { QueueGeneric(SpriteNum,930);