From 5b10e9f2d5917c6fce4aac7bb1f47355407e9d23 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 6 Nov 2021 10:17:12 +0100 Subject: [PATCH] - got rid of SpriteP pointers in PLAYER and USER. --- source/games/sw/src/bunny.cpp | 2 +- source/games/sw/src/game.cpp | 1 - source/games/sw/src/game.h | 4 ---- source/games/sw/src/miscactr.cpp | 2 +- source/games/sw/src/ninja.cpp | 2 +- source/games/sw/src/save.cpp | 10 ++++++++-- source/games/sw/src/sprite.cpp | 22 ++++++++++------------ source/games/sw/src/swactor.h | 1 - 8 files changed, 21 insertions(+), 23 deletions(-) diff --git a/source/games/sw/src/bunny.cpp b/source/games/sw/src/bunny.cpp index 4ed82f176..f8e1cee01 100644 --- a/source/games/sw/src/bunny.cpp +++ b/source/games/sw/src/bunny.cpp @@ -885,7 +885,7 @@ int DoBunnyBeginJumpAttack(DSWActor* actor) int DoBunnyMoveJump(DSWActor* actor) { USER* u = actor->u(); - SPRITEp sp = u->s(); + SPRITEp sp = &actor->s(); if (TEST(u->Flags, SPR_JUMPING | SPR_FALLING)) { diff --git a/source/games/sw/src/game.cpp b/source/games/sw/src/game.cpp index 2df23ca4d..ab0a3f410 100644 --- a/source/games/sw/src/game.cpp +++ b/source/games/sw/src/game.cpp @@ -469,7 +469,6 @@ void TerminateLevel(void) memset(pp->cookieQuote, 0, sizeof(pp->cookieQuote)); pp->DoPlayerAction = nullptr; - pp->SpriteP = nullptr; pp->PlayerSprite = -1; pp->PlayerUnderActor = nullptr; diff --git a/source/games/sw/src/game.h b/source/games/sw/src/game.h index 323c78785..c6652ae7e 100644 --- a/source/games/sw/src/game.h +++ b/source/games/sw/src/game.h @@ -802,8 +802,6 @@ struct PLAYERstruct // under vars are for wading and swimming short PlayerSprite; - SPRITEp SpriteP; - short pnum; // carry along the player number @@ -1135,8 +1133,6 @@ struct USER int active_range; short SpriteNum; - SPRITEp SpriteP; - SPRITEp s() { return SpriteP;} // if a player's sprite points to player structure PLAYERp PlayerP; diff --git a/source/games/sw/src/miscactr.cpp b/source/games/sw/src/miscactr.cpp index 74d2df257..7d7122030 100644 --- a/source/games/sw/src/miscactr.cpp +++ b/source/games/sw/src/miscactr.cpp @@ -869,7 +869,7 @@ int PachinkoCheckWin(DSWActor* actor) int Pachinko1Operate(DSWActor* actor) { USER* u = actor->u(); - SPRITEp sp = u->s(); + SPRITEp sp = &actor->s(); short rnd; rnd = RandomRange(1000); diff --git a/source/games/sw/src/ninja.cpp b/source/games/sw/src/ninja.cpp index 21c023532..5f4278d85 100644 --- a/source/games/sw/src/ninja.cpp +++ b/source/games/sw/src/ninja.cpp @@ -2367,7 +2367,7 @@ void InitPlayerSprite(PLAYERp pp) pp->posy, pp->posz, pp->angle.ang.asbuild(), 0); pp->PlayerSprite = actor->GetSpriteIndex(); - pp->SpriteP = sp = &actor->s(); + sp = &actor->s(); pp->pnum = pnum; SET(sp->cstat, CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN); diff --git a/source/games/sw/src/save.cpp b/source/games/sw/src/save.cpp index ff4881fa0..9706b122e 100644 --- a/source/games/sw/src/save.cpp +++ b/source/games/sw/src/save.cpp @@ -504,7 +504,6 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, PLAYERstruct& w, P arc #endif ("PlayerUnderSprite", w.PlayerUnderActor) - ("SpriteP", w.SpriteP) ("pnum", w.pnum) ("LadderSector", w.LadderSector) ("lx", w.lx) @@ -581,6 +580,10 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, PLAYERstruct& w, P ("keypressbits", w.KeyPressBits) ("chops", w.Chops); + if (arc.isWriting()) // we need this for loading saves in older builds for debugging. + arc("SpriteP", w.PlayerSprite); + + SerializeCodePtr(arc, "DoPlayerAction", (void**)&w.DoPlayerAction); arc.EndObject(); } @@ -869,7 +872,6 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, USER& w, USER* def ("active_range", w.active_range, def->active_range) ("SpriteNum", w.SpriteNum, def->SpriteNum) ("Attach", w.attachActor, def->attachActor) - ("SpriteP", w.SpriteP, def->SpriteP) ("PlayerP", w.PlayerP, def->PlayerP) ("Sibling", w.Sibling, def->Sibling) ("xchange", w.xchange, def->xchange) @@ -927,6 +929,10 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, USER& w, USER* def ("rotator", w.rotator) ("oz", w.oz, def->oz); + if (arc.isWriting()) // we need this for loading saves in older builds for debugging. + arc("SpriteP", w.SpriteNum, def->SpriteNum); + + SerializeCodePtr(arc, "ActorActionFunc", (void**)&w.ActorActionFunc); arc.EndObject(); diff --git a/source/games/sw/src/sprite.cpp b/source/games/sw/src/sprite.cpp index 9bfbc3306..94d6d157c 100644 --- a/source/games/sw/src/sprite.cpp +++ b/source/games/sw/src/sprite.cpp @@ -888,7 +888,6 @@ USERp SpawnUser(DSWActor* actor, short id, STATEp state) u->targetActor = Player[0].Actor(); u->Radius = 220; u->Sibling = -1; - u->SpriteP = &actor->s(); u->SpriteNum = actor->GetSpriteIndex(); u->WaitTics = 0; u->OverlapZ = Z(4); @@ -5306,7 +5305,7 @@ DoGet(DSWActor* actor) USER* u = actor->u(); int SpriteNum = u->SpriteNum; USERp pu; - SPRITEp sp = u->SpriteP; + SPRITEp sp = &actor->s(); PLAYERp pp; short pnum, key_num; int dist, a,b,c; @@ -5684,7 +5683,7 @@ KeyMain: if (!cl_weaponswitch) break; - if (User[pp->PlayerSprite]->WeaponNum <= WPN_STAR && User[pp->PlayerSprite]->WeaponNum != WPN_SWORD) + if (pu->WeaponNum <= WPN_STAR && pu->WeaponNum != WPN_SWORD) break; InitWeaponStar(pp); break; @@ -5712,7 +5711,7 @@ KeyMain: if (!cl_weaponswitch) break; - if (User[pp->PlayerSprite]->WeaponNum > WPN_MINE && User[pp->PlayerSprite]->WeaponNum != WPN_SWORD) + if (pu->WeaponNum > WPN_MINE && pu->WeaponNum != WPN_SWORD) break; InitWeaponMine(pp); break; @@ -5756,7 +5755,7 @@ KeyMain: if (!cl_weaponswitch) break; - if (User[pp->PlayerSprite]->WeaponNum > WPN_UZI && User[pp->PlayerSprite]->WeaponNum != WPN_SWORD) + if (pu->WeaponNum > WPN_UZI && pu->WeaponNum != WPN_SWORD) break; InitWeaponUzi(pp); @@ -5798,7 +5797,7 @@ KeyMain: if (!cl_weaponswitch) break; - if (User[pp->PlayerSprite]->WeaponNum > WPN_MICRO && User[pp->PlayerSprite]->WeaponNum != WPN_SWORD) + if (pu->WeaponNum > WPN_MICRO && pu->WeaponNum != WPN_SWORD) break; InitWeaponMicro(pp); break; @@ -5867,7 +5866,7 @@ KeyMain: if (!cl_weaponswitch) break; - if (User[pp->PlayerSprite]->WeaponNum > WPN_GRENADE && User[pp->PlayerSprite]->WeaponNum != WPN_SWORD) + if (pu->WeaponNum > WPN_GRENADE && pu->WeaponNum != WPN_SWORD) break; InitWeaponGrenade(pp); break; @@ -5941,7 +5940,7 @@ KeyMain: if (!cl_weaponswitch) break; - if (User[pp->PlayerSprite]->WeaponNum > WPN_RAIL && User[pp->PlayerSprite]->WeaponNum != WPN_SWORD) + if (pu->WeaponNum > WPN_RAIL && pu->WeaponNum != WPN_SWORD) break; InitWeaponRail(pp); break; @@ -5983,7 +5982,7 @@ KeyMain: if (!cl_weaponswitch) break; - if (User[pp->PlayerSprite]->WeaponNum > WPN_SHOTGUN && User[pp->PlayerSprite]->WeaponNum != WPN_SWORD) + if (pu->WeaponNum > WPN_SHOTGUN && pu->WeaponNum != WPN_SWORD) break; InitWeaponShotgun(pp); break; @@ -6051,7 +6050,7 @@ KeyMain: if (!cl_weaponswitch) break; - if (User[pp->PlayerSprite]->WeaponNum > WPN_HOTHEAD && User[pp->PlayerSprite]->WeaponNum != WPN_SWORD) + if (pu->WeaponNum > WPN_HOTHEAD && pu->WeaponNum != WPN_SWORD) break; InitWeaponHothead(pp); break; @@ -6097,7 +6096,7 @@ KeyMain: if (!cl_weaponswitch) break; - if (User[pp->PlayerSprite]->WeaponNum > WPN_HEART && User[pp->PlayerSprite]->WeaponNum != WPN_SWORD) + if (pu->WeaponNum > WPN_HEART && pu->WeaponNum != WPN_SWORD) break; InitWeaponHeart(pp); @@ -6334,7 +6333,6 @@ int StateControl(DSWActor* actor) } else { - //u->SpriteP->picnum = u->State->Pic; if (u->RotNum > 1) sp->picnum = u->Rot[0]->Pic; else diff --git a/source/games/sw/src/swactor.h b/source/games/sw/src/swactor.h index ec129df93..5e8971526 100644 --- a/source/games/sw/src/swactor.h +++ b/source/games/sw/src/swactor.h @@ -27,7 +27,6 @@ public: { User[index].Alloc(); User[index]->SpriteNum = GetSpriteIndex(); - User[index]->SpriteP = &sprite[index]; return User[index].Data(); }