From 2bcc552ce024cc7c8614dc6bdb77d34aff5ce107 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 13 Sep 2022 19:58:17 +0200 Subject: [PATCH] - replace FireProj struct with a second temp_pos vector MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We’re going to need this anyway for some SE’s. --- source/games/duke/src/actors_d.cpp | 6 ++---- source/games/duke/src/savegame.cpp | 19 ++----------------- source/games/duke/src/types.h | 10 +--------- 3 files changed, 5 insertions(+), 30 deletions(-) diff --git a/source/games/duke/src/actors_d.cpp b/source/games/duke/src/actors_d.cpp index 3ef1f43e6..4d7ab769f 100644 --- a/source/games/duke/src/actors_d.cpp +++ b/source/games/duke/src/actors_d.cpp @@ -1319,10 +1319,8 @@ static bool movefireball(DDukeActor* actor) { if (trail) { - FireProj* proj = &trail->fproj; ball->spr.pos = trail->temp_pos; - ball->set_int_xvel(proj->vel.X); - ball->set_int_zvel(proj->vel.Z); + ball->vel = trail->temp_pos2; } } ball->spr.yrepeat = ball->spr.xrepeat = (uint8_t)(actor->spr.xrepeat * siz); @@ -1330,7 +1328,7 @@ static bool movefireball(DDukeActor* actor) ball->spr.extra = 0; ball->temp_pos = ball->spr.pos; - ball->fproj.vel = { ball->int_xvel(), 0, ball->int_zvel()}; + ball->temp_pos2 = ball->vel; ChangeActorStat(ball, STAT_PROJECTILE); } diff --git a/source/games/duke/src/savegame.cpp b/source/games/duke/src/savegame.cpp index 3c55851e4..ef02587d6 100644 --- a/source/games/duke/src/savegame.cpp +++ b/source/games/duke/src/savegame.cpp @@ -47,20 +47,6 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, GameVarValue& w, G void lava_serialize(FSerializer& arc); void SerializeGameVars(FSerializer &arc); -static FSerializer& Serialize(FSerializer& arc, const char* key, FireProj& p, FireProj* def) -{ - if (arc.BeginObject(key)) - { - arc - ("xv", p.vel.X) - ("yv", p.vel.Y) - ("zv", p.vel.Z) - .EndObject(); - } - return arc; -} - - FSerializer& Serialize(FSerializer& arc, const char* keyname, CraneDef& w, CraneDef* def) { if (arc.BeginObject(keyname)) @@ -314,12 +300,11 @@ void DDukeActor::Serialize(FSerializer& arc) .Array("temo_wall", temp_walls, 2) ("temp_angle", temp_angle) ("temp_pos", temp_pos) + ("temp_pos2", temp_pos2) ("temp_sect", temp_sect) ("uservars", uservars) ("flags1", flags1) - ("flags2", flags2) - - ("fireproj", fproj); + ("flags2", flags2); } diff --git a/source/games/duke/src/types.h b/source/games/duke/src/types.h index 1b733d8e7..75e3e3830 100644 --- a/source/games/duke/src/types.h +++ b/source/games/duke/src/types.h @@ -21,11 +21,6 @@ struct STATUSBARTYPE bool gotweapon[MAX_WEAPONS]; }; -struct FireProj -{ - vec3_t vel; -}; - // Todo - put more state in here struct ActorInfo { @@ -64,7 +59,7 @@ public: walltype* temp_walls[2]; // SE20 + SE128 sectortype* temp_sect, *actorstayput; DAngle temp_angle; // only used by TRIPBOMB - DVector3 temp_pos; // used by TRIPBOMB, SE_26 and FIREBALL. + DVector3 temp_pos, temp_pos2; // used by TRIPBOMB, SE_26 and FIREBALL. TObjPtr temp_actor, seek_actor; @@ -73,9 +68,6 @@ public: EDukeFlags1 flags1; EDukeFlags2 flags2; - // Todo: Once we start assigning subclasses to actors, this one needs to be moved to the proper FIREBALL subclass. - FireProj fproj; - DDukeActor() = default; size_t PropagateMark() override; const ActorInfo* actorInfo() const;