diff --git a/src/Ext/Bullet/Trajectories/BombardTrajectory.cpp b/src/Ext/Bullet/Trajectories/BombardTrajectory.cpp index 4c40837a3..507109da1 100644 --- a/src/Ext/Bullet/Trajectories/BombardTrajectory.cpp +++ b/src/Ext/Bullet/Trajectories/BombardTrajectory.cpp @@ -29,7 +29,8 @@ bool BombardTrajectoryType::Save(PhobosStreamWriter& Stm) const void BombardTrajectoryType::Read(CCINIClass* const pINI, const char* pSection) { - this->Height = pINI->ReadDouble(pSection, "Trajectory.Bombard.Height", 0.0); + INI_EX exINI(pINI); + this->Height.Read(exINI, pSection, "Trajectory.Bombard.Height"); } template @@ -61,7 +62,7 @@ bool BombardTrajectory::Save(PhobosStreamWriter& Stm) const void BombardTrajectory::OnUnlimbo(BulletClass* pBullet, CoordStruct* pCoord, BulletVelocity* pVelocity) { - this->Height = this->GetTrajectoryType(pBullet)->Height + pBullet->TargetCoords.Z; + this->Height += pBullet->TargetCoords.Z; pBullet->Velocity.X = static_cast(pBullet->TargetCoords.X - pBullet->SourceCoords.X); pBullet->Velocity.Y = static_cast(pBullet->TargetCoords.Y - pBullet->SourceCoords.Y); diff --git a/src/Ext/Bullet/Trajectories/BombardTrajectory.h b/src/Ext/Bullet/Trajectories/BombardTrajectory.h index de5b8a4fe..75c792087 100644 --- a/src/Ext/Bullet/Trajectories/BombardTrajectory.h +++ b/src/Ext/Bullet/Trajectories/BombardTrajectory.h @@ -15,7 +15,7 @@ class BombardTrajectoryType final : public PhobosTrajectoryType virtual void Read(CCINIClass* const pINI, const char* pSection) override; - double Height; + Valueable Height; private: template @@ -27,9 +27,9 @@ class BombardTrajectory final : public PhobosTrajectory public: BombardTrajectory(noinit_t) :PhobosTrajectory { noinit_t{} } { } - BombardTrajectory(PhobosTrajectoryType const* pType) : PhobosTrajectory(TrajectoryFlag::Bombard) + BombardTrajectory(BombardTrajectoryType const* trajType) : PhobosTrajectory(TrajectoryFlag::Bombard) , IsFalling { false } - , Height { 0.0 } + , Height { trajType->Height } {} virtual bool Load(PhobosStreamReader& Stm, bool RegisterForChange) override; diff --git a/src/Ext/Bullet/Trajectories/PhobosTrajectory.cpp b/src/Ext/Bullet/Trajectories/PhobosTrajectory.cpp index 89854411f..6e433573c 100644 --- a/src/Ext/Bullet/Trajectories/PhobosTrajectory.cpp +++ b/src/Ext/Bullet/Trajectories/PhobosTrajectory.cpp @@ -9,7 +9,7 @@ #include "BombardTrajectory.h" #include "StraightTrajectory.h" - +#pragma region RedoAllThesePleaseItsInFactVerySimpleJustFollowTemplateDef_h bool PhobosTrajectoryType::Load(PhobosStreamReader& Stm, bool RegisterForChange) { Stm.Process(this->Flag, false); @@ -56,7 +56,7 @@ PhobosTrajectoryType* PhobosTrajectoryType::LoadFromStream(PhobosStreamReader& S if (pType) { Stm.Process(flag, false); - + auto old = pType; switch (flag) { case TrajectoryFlag::Straight: @@ -71,6 +71,7 @@ PhobosTrajectoryType* PhobosTrajectoryType::LoadFromStream(PhobosStreamReader& S pType->Flag = flag; pType->Load(Stm, false); + PhobosSwizzle::RegisterChange(old, pType); } return pType; @@ -128,7 +129,7 @@ PhobosTrajectory* PhobosTrajectory::LoadFromStream(PhobosStreamReader& Stm) if (pTraj) { Stm.Process(flag, false); - + auto old = pTraj; switch (flag) { case TrajectoryFlag::Straight: @@ -143,6 +144,7 @@ PhobosTrajectory* PhobosTrajectory::LoadFromStream(PhobosStreamReader& Stm) pTraj->Flag = flag; pTraj->Load(Stm, false); + PhobosSwizzle::RegisterChange(old, pTraj); } return pTraj; @@ -169,7 +171,7 @@ PhobosTrajectory* PhobosTrajectory::ProcessFromStream(PhobosStreamWriter& Stm, P WriteToStream(Stm, pTraj); return pTraj; } - +#pragma endregion DEFINE_HOOK(0x4666F7, BulletClass_AI_Trajectories, 0x6) { diff --git a/src/Ext/Bullet/Trajectories/StraightTrajectory.cpp b/src/Ext/Bullet/Trajectories/StraightTrajectory.cpp index 9a336fffe..5e75fa296 100644 --- a/src/Ext/Bullet/Trajectories/StraightTrajectory.cpp +++ b/src/Ext/Bullet/Trajectories/StraightTrajectory.cpp @@ -74,13 +74,10 @@ bool StraightTrajectory::Save(PhobosStreamWriter& Stm) const void StraightTrajectory::OnUnlimbo(BulletClass* pBullet, CoordStruct* pCoord, BulletVelocity* pVelocity) { auto const pType = this->GetTrajectoryType(pBullet); - this->DetonationDistance = pType->DetonationDistance; if (pType->ApplyRangeModifiers) this->DetonationDistance = Leptons(WeaponTypeExt::GetRangeWithModifiers(pBullet->WeaponType, pBullet->Owner, this->DetonationDistance)); - this->TargetSnapDistance = pType->TargetSnapDistance; - this->PassThrough = pType->PassThrough; this->FirerZPosition = this->GetFirerZPosition(pBullet); this->TargetZPosition = this->GetTargetZPosition(pBullet); diff --git a/src/Ext/Bullet/Trajectories/StraightTrajectory.h b/src/Ext/Bullet/Trajectories/StraightTrajectory.h index 98dafab9c..3144236f2 100644 --- a/src/Ext/Bullet/Trajectories/StraightTrajectory.h +++ b/src/Ext/Bullet/Trajectories/StraightTrajectory.h @@ -32,10 +32,10 @@ class StraightTrajectory final : public PhobosTrajectory public: StraightTrajectory(noinit_t) :PhobosTrajectory { noinit_t{} } { } - StraightTrajectory(PhobosTrajectoryType const* pType) : PhobosTrajectory(TrajectoryFlag::Straight) - , DetonationDistance { Leptons(102) } - , TargetSnapDistance { Leptons(128) } - , PassThrough { false } + StraightTrajectory(StraightTrajectoryType const* trajType) : PhobosTrajectory(TrajectoryFlag::Straight) + , DetonationDistance { trajType->DetonationDistance } + , TargetSnapDistance { trajType->TargetSnapDistance } + , PassThrough { trajType->PassThrough } , FirerZPosition { 0 } , TargetZPosition { 0 } {}