From 8bfedc327ff895d57873ce8e655c14eea0b12cea Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Thu, 1 Sep 2022 00:30:16 +0200 Subject: [PATCH] - add_int_zvel --- source/core/coreactor.h | 5 +++++ source/games/duke/src/actors.cpp | 30 ++++++++++++++--------------- source/games/duke/src/actors_d.cpp | 10 +++++----- source/games/duke/src/actors_r.cpp | 10 +++++----- source/games/duke/src/player_d.cpp | 2 +- source/games/duke/src/player_r.cpp | 2 +- source/games/exhumed/src/move.cpp | 6 +++--- source/games/exhumed/src/object.cpp | 2 +- source/games/sw/src/jweapon.cpp | 2 +- source/games/sw/src/weapon.cpp | 10 +++++----- 10 files changed, 42 insertions(+), 37 deletions(-) diff --git a/source/core/coreactor.h b/source/core/coreactor.h index 6df662343..e4158e484 100644 --- a/source/core/coreactor.h +++ b/source/core/coreactor.h @@ -120,6 +120,11 @@ public: { spr. zvel = v; } + + void add_int_zvel(int v) + { + spr.zvel += v; + } // Same as above but with inverted y and z axes to match the renderer's coordinate system. double interpolatedx(double const smoothratio, int const scale = 16) diff --git a/source/games/duke/src/actors.cpp b/source/games/duke/src/actors.cpp index 250a42f5f..4c30249ff 100644 --- a/source/games/duke/src/actors.cpp +++ b/source/games/duke/src/actors.cpp @@ -1324,7 +1324,7 @@ void movetongue(DDukeActor *actor, int tongue, int jaw) auto q = EGS(actor->sector(), actor->int_pos().X + MulScale(k, bcos(actor->int_ang()), 9), actor->int_pos().Y + MulScale(k, bsin(actor->int_ang()), 9), - actor->int_pos().Z + ((k * Sgn(actor->int_zvel())) * abs(actor->spr.zvel / 12)), tongue, -40 + (k << 1), + actor->int_pos().Z + ((k * Sgn(actor->int_zvel())) * abs(actor->int_zvel() / 12)), tongue, -40 + (k << 1), 8, 8, 0, 0, 0, actor, 5); if (q) { @@ -1336,7 +1336,7 @@ void movetongue(DDukeActor *actor, int tongue, int jaw) auto spawned = EGS(actor->sector(), actor->int_pos().X + MulScale(k, bcos(actor->int_ang()), 9), actor->int_pos().Y + MulScale(k, bsin(actor->int_ang()), 9), - actor->int_pos().Z + ((k * Sgn(actor->int_zvel())) * abs(actor->spr.zvel / 12)), jaw, -40, + actor->int_pos().Z + ((k * Sgn(actor->int_zvel())) * abs(actor->int_zvel() / 12)), jaw, -40, 32, 32, 0, 0, 0, actor, 5); if (spawned) { @@ -1568,7 +1568,7 @@ void forcesphere(DDukeActor* actor, int forcesphere) if (actor->temp_data[3] > 0) { if (actor->int_zvel() < 6144) - actor->spr.zvel += 192; + actor->add_int_zvel( 192); actor->spr.pos.Z += actor->spr.zvel * inttoworld; if (actor->spr.pos.Z > sectp->floorz) actor->spr.pos.Z = sectp->floorz; @@ -2102,11 +2102,11 @@ bool money(DDukeActor* actor, int BLOODPOOL) if (sectp->lotag == 2) { if (actor->int_zvel() < 64) - actor->spr.zvel += (gs.gravity >> 5) + (krand() & 7); + actor->add_int_zvel( (gs.gravity >> 5) + (krand() & 7)); } else if (actor->int_zvel() < 144) - actor->spr.zvel += (gs.gravity >> 5) + (krand() & 7); + actor->add_int_zvel( (gs.gravity >> 5) + (krand() & 7)); } ssp(actor, CLIPMASK0); @@ -2213,10 +2213,10 @@ bool jibs(DDukeActor *actor, int JIBS6, bool timeout, bool callsetsprite, bool f if (sectp->lotag == 2) { if (actor->int_zvel() < 1024) - actor->spr.zvel += 48; + actor->add_int_zvel( 48); else actor->set_int_zvel(1024); } - else actor->spr.zvel += gs.gravity - 50; + else actor->add_int_zvel( gs.gravity - 50); } actor->add_int_pos({ MulScale(actor->spr.xvel, bcos(actor->int_ang()), 14), MulScale(actor->spr.xvel, bsin(actor->int_ang()), 14), 0 }); @@ -2381,7 +2381,7 @@ void shell(DDukeActor* actor, bool morecheck) actor->temp_data[0]++; actor->temp_data[0] &= 3; } - if (actor->int_zvel() < 128) actor->spr.zvel += (gs.gravity / 13); // 8 + if (actor->int_zvel() < 128) actor->add_int_zvel( (gs.gravity / 13)); // 8 else actor->spr.zvel -= 64; if (actor->spr.xvel > 0) actor->spr.xvel -= 4; @@ -2396,7 +2396,7 @@ void shell(DDukeActor* actor, bool morecheck) actor->temp_data[0]++; actor->temp_data[0] &= 3; } - if (actor->int_zvel() < 512) actor->spr.zvel += (gs.gravity / 3); // 52; + if (actor->int_zvel() < 512) actor->add_int_zvel( (gs.gravity / 3)); // 52; if (actor->spr.xvel > 0) actor->spr.xvel--; else @@ -2493,7 +2493,7 @@ void scrap(DDukeActor* actor, int SCRAP1, int SCRAP6) else actor->temp_data[0]++; } } - if (actor->int_zvel() < 4096) actor->spr.zvel += gs.gravity - 50; + if (actor->int_zvel() < 4096) actor->add_int_zvel( gs.gravity - 50); actor->add_int_pos({ MulScale(actor->spr.xvel, bcos(actor->int_ang()), 14), MulScale(actor->spr.xvel, bsin(actor->int_ang()), 14), actor->spr.zvel }); } else @@ -3352,7 +3352,7 @@ void handle_se05(DDukeActor* actor, int FIRELASER) actor->temp_data[3]++; if (actor->temp_data[3] == 5) { - actor->spr.zvel += 1024; + actor->add_int_zvel( 1024); FTA(7, &ps[myconnectindex]); } } @@ -4235,7 +4235,7 @@ void handle_se22(DDukeActor* actor) void handle_se26(DDukeActor* actor) { auto sc = actor->sector(); - double zvel = actor->spr.zvel * zinttoworld; + double zvel = actor->int_zvel() * zinttoworld; actor->spr.xvel = 32; DVector2 vect = 2 * actor->spr.angle.ToVector(); // was: (32 * bsin) >> 14 @@ -4850,7 +4850,7 @@ void makeitfall(DDukeActor* actor) if( actor->sector()->lotag == 2 && actor->int_zvel() > 3122 ) actor->set_int_zvel(3144); if(actor->int_zvel() < 6144) - actor->spr.zvel += c; + actor->add_int_zvel( c); else actor->set_int_zvel(6144); actor->add_int_z(actor->int_zvel()); } @@ -4985,7 +4985,7 @@ void alterang(int ang, DDukeActor* actor, int playernum) aang = actor->int_ang(); actor->spr.xvel += (*moveptr - actor->spr.xvel) / 5; - if (actor->int_zvel() < 648) actor->spr.zvel += ((*(moveptr + 1) << 4) - actor->int_zvel()) / 5; + if (actor->int_zvel() < 648) actor->add_int_zvel( ((*(moveptr + 1) << 4) - actor->int_zvel()) / 5); if (isRRRA() && (ang & windang)) actor->set_int_ang(WindDir); @@ -5079,7 +5079,7 @@ void fall_common(DDukeActor *actor, int playernum, int JIBS6, int DRONE, int BLO if (actor->spr.pos.Z < actor->floorz - FOURSLEIGHT_F) { - actor->spr.zvel += c; + actor->add_int_zvel( c); actor->add_int_z(actor->int_zvel()); if (actor->int_zvel() > 6144) actor->set_int_zvel(6144); diff --git a/source/games/duke/src/actors_d.cpp b/source/games/duke/src/actors_d.cpp index 924254744..8e15e7215 100644 --- a/source/games/duke/src/actors_d.cpp +++ b/source/games/duke/src/actors_d.cpp @@ -772,7 +772,7 @@ void movefallers_d(void) if (act->spr.pos.Z < sectp->floorz - 1) { - act->spr.zvel += x; + act->add_int_zvel( x); if (act->int_zvel() > 6144) act->set_int_zvel(6144); act->add_int_z(act->int_zvel()); @@ -1340,7 +1340,7 @@ static bool movefireball(DDukeActor* actor) actor->temp_data[0]++; } if (actor->int_zvel() < 15000) - actor->spr.zvel += 200; + actor->add_int_zvel( 200); return false; } @@ -1576,7 +1576,7 @@ static void weaponcommon_d(DDukeActor* proj) vec3_t offset = { MulScale(k, bcos(proj->int_ang()), 9), MulScale(k, bsin(proj->int_ang()), 9), - (k * Sgn(proj->int_zvel())) * abs(proj->spr.zvel / 24) + (k * Sgn(proj->int_zvel())) * abs(proj->int_zvel() / 24) }; auto spawned = EGS(proj->sector(), @@ -1594,7 +1594,7 @@ static void weaponcommon_d(DDukeActor* proj) } } else if (proj->spr.picnum == SPIT) if (proj->int_zvel() < 6144) - proj->spr.zvel += gs.gravity - 112; + proj->add_int_zvel( gs.gravity - 112); if (coll.type != 0) { @@ -3552,7 +3552,7 @@ void move_d(DDukeActor *actor, int playernum, int xvel) auto moveptr = &ScriptCode[actor->temp_data[1]]; if (a & geth) actor->spr.xvel += (*moveptr - actor->spr.xvel) >> 1; - if (a & getv) actor->spr.zvel += ((*(moveptr + 1) << 4) - actor->int_zvel()) >> 1; + if (a & getv) actor->add_int_zvel( ((*(moveptr + 1) << 4) - actor->int_zvel()) >> 1); if (a & dodgebullet) dodge(actor); diff --git a/source/games/duke/src/actors_r.cpp b/source/games/duke/src/actors_r.cpp index 5572d1def..a3c441b75 100644 --- a/source/games/duke/src/actors_r.cpp +++ b/source/games/duke/src/actors_r.cpp @@ -690,7 +690,7 @@ void movefallers_r(void) if (act->spr.pos.Z < sectp->floorz - 1) { - act->spr.zvel += x; + act->add_int_zvel( x); if (act->int_zvel() > 6144) act->set_int_zvel(6144); act->add_int_z(act->int_zvel()); @@ -956,7 +956,7 @@ static void chickenarrow(DDukeActor* actor) if (actor->spr.hitag > 180) if (actor->spr.zvel <= 0) - actor->spr.zvel += 200; + actor->add_int_zvel( 200); } } @@ -1264,7 +1264,7 @@ static void weaponcommon_r(DDukeActor *proj) auto x = EGS(proj->sector(), proj->int_pos().X + MulScale(k, bcos(proj->int_ang()), 9), proj->int_pos().Y + MulScale(k, bsin(proj->int_ang()), 9), - proj->int_pos().Z + ((k * Sgn(proj->int_zvel())) * abs(proj->spr.zvel / 24)), FIRELASER, -40 + (k << 2), + proj->int_pos().Z + ((k * Sgn(proj->int_zvel())) * abs(proj->int_zvel() / 24)), FIRELASER, -40 + (k << 2), proj->spr.xrepeat, proj->spr.yrepeat, 0, 0, 0, proj->GetOwner(), 5); if (x) @@ -1275,7 +1275,7 @@ static void weaponcommon_r(DDukeActor *proj) } } else if (proj->spr.picnum == SPIT) if (proj->int_zvel() < 6144) - proj->spr.zvel += gs.gravity - 112; + proj->add_int_zvel( gs.gravity - 112); if (coll.type != 0) { @@ -3621,7 +3621,7 @@ void move_r(DDukeActor *actor, int pnum, int xvel) auto moveptr = &ScriptCode[actor->temp_data[1]]; if (a & geth) actor->spr.xvel += (*moveptr - actor->spr.xvel) >> 1; - if (a & getv) actor->spr.zvel += ((*(moveptr + 1) << 4) - actor->int_zvel()) >> 1; + if (a & getv) actor->add_int_zvel( ((*(moveptr + 1) << 4) - actor->int_zvel()) >> 1); if (a & dodgebullet) dodge(actor); diff --git a/source/games/duke/src/player_d.cpp b/source/games/duke/src/player_d.cpp index 86db7a08a..70b989f87 100644 --- a/source/games/duke/src/player_d.cpp +++ b/source/games/duke/src/player_d.cpp @@ -805,7 +805,7 @@ static void shootrpg(DDukeActor *actor, int p, int sx, int sy, int sz, int sa, i { spawned->spr.extra >>= 2; spawned->add_int_ang(16 - (krand() & 31)); - spawned->spr.zvel += 256 - (krand() & 511); + spawned->add_int_zvel( 256 - (krand() & 511)); if (ps[p].hbomb_hold_delay) { diff --git a/source/games/duke/src/player_r.cpp b/source/games/duke/src/player_r.cpp index 5f37acc44..1d5d733b0 100644 --- a/source/games/duke/src/player_r.cpp +++ b/source/games/duke/src/player_r.cpp @@ -716,7 +716,7 @@ static void shootrpg(DDukeActor* actor, int p, int sx, int sy, int sz, int sa, i { spawned->spr.extra >>= 2; spawned->add_int_ang(16 - (krand() & 31)); - spawned->spr.zvel += 256 - (krand() & 511); + spawned->add_int_zvel( 256 - (krand() & 511)); if (ps[p].hbomb_hold_delay) { diff --git a/source/games/exhumed/src/move.cpp b/source/games/exhumed/src/move.cpp index 97023c3cf..e245cf668 100644 --- a/source/games/exhumed/src/move.cpp +++ b/source/games/exhumed/src/move.cpp @@ -575,7 +575,7 @@ void Gravity(DExhumedActor* pActor) if (pActor->spr.zvel <= 1024) { if (pActor->int_zvel() < 2048) { - pActor->spr.zvel += 512; + pActor->add_int_zvel( 512); } } else @@ -594,7 +594,7 @@ void Gravity(DExhumedActor* pActor) } else if (pActor->int_zvel() < 0) { - pActor->spr.zvel += 64; + pActor->add_int_zvel( 64); if (pActor->int_zvel() > 0) { pActor->set_int_zvel(0); } @@ -603,7 +603,7 @@ void Gravity(DExhumedActor* pActor) } else { - pActor->spr.zvel += 512; + pActor->add_int_zvel( 512); if (pActor->int_zvel() > 16384) { pActor->set_int_zvel(16384); } diff --git a/source/games/exhumed/src/object.cpp b/source/games/exhumed/src/object.cpp index ab4179779..51fb6a34d 100644 --- a/source/games/exhumed/src/object.cpp +++ b/source/games/exhumed/src/object.cpp @@ -1434,7 +1434,7 @@ void AISpark::Tick(RunListEvent* ev) return; } - pActor->spr.zvel += 128; + pActor->add_int_zvel( 128); auto nMov = movesprite(pActor, pActor->spr.xvel << 12, pActor->spr.yvel << 12, pActor->int_zvel(), 2560, -2560, CLIPMASK1); if (!nMov.type && !nMov.exbits) { diff --git a/source/games/sw/src/jweapon.cpp b/source/games/sw/src/jweapon.cpp index b76eabcc7..8808a00db 100644 --- a/source/games/sw/src/jweapon.cpp +++ b/source/games/sw/src/jweapon.cpp @@ -264,7 +264,7 @@ int DoWallBloodDrip(DSWActor* actor) // if you are between the ceiling and floor fall fast if (actor->spr.pos.Z > actor->user.pos.Y && actor->spr.pos.Z < actor->user.pos.Z) { - actor->spr.zvel += 300; + actor->add_int_zvel( 300); actor->add_int_z(actor->int_zvel()); } else diff --git a/source/games/sw/src/weapon.cpp b/source/games/sw/src/weapon.cpp index f4c2fd97d..3a5884558 100644 --- a/source/games/sw/src/weapon.cpp +++ b/source/games/sw/src/weapon.cpp @@ -9135,7 +9135,7 @@ int DoRail(DSWActor* actor) actorNew->spr.xvel += (RandomRange(140)-RandomRange(140)); actorNew->spr.yvel += (RandomRange(140)-RandomRange(140)); - actorNew->spr.zvel += (RandomRange(140)-RandomRange(140)); + actorNew->add_int_zvel( (RandomRange(140)-RandomRange(140))); actorNew->user.RotNum = 5; NewStateGroup(actorNew, sg_RailPuff); @@ -9292,7 +9292,7 @@ int SpawnExtraMicroMini(DSWActor* actor) actorNew->set_int_ang(NORM_ANGLE(actorNew->int_ang() + RandomRange(64) - 32)); actorNew->set_int_zvel(actor->int_zvel()); - actorNew->spr.zvel += RandomRange(Z(16)) - Z(8); + actorNew->add_int_zvel( RandomRange(Z(16)) - Z(8)); UpdateChange(actorNew); return 0; @@ -13428,7 +13428,7 @@ int InitMicro(PLAYER* pp) actorNew->spr.clipdist = 64L>>2; // randomize zvelocity - actorNew->spr.zvel += RandomRange(Z(8)) - Z(5); + actorNew->add_int_zvel( RandomRange(Z(8)) - Z(5)); actorNew->user.RotNum = 5; NewStateGroup(actorNew, &sg_Micro[0]); @@ -14991,7 +14991,7 @@ int InitTurretMicro(DSWActor* actor, PLAYER* pp) actorNew->spr.clipdist = 64L>>2; // randomize zvelocity - actorNew->spr.zvel += RandomRange(Z(8)) - Z(5); + actorNew->add_int_zvel( RandomRange(Z(8)) - Z(5)); actorNew->user.RotNum = 5; NewStateGroup(actorNew, &sg_Micro[0]); @@ -16720,7 +16720,7 @@ int SpawnSmokePuff(DSWActor* actor) int DoBubble(DSWActor* actor) { actor->add_int_z(-actor->int_zvel()); - actor->spr.zvel += 32; + actor->add_int_zvel( 32); if (actor->int_zvel() > 768) actor->set_int_zvel(768);