From 254e7f0decf83e1ca92c60449325cac2d32c830c Mon Sep 17 00:00:00 2001 From: OmniBlade Date: Tue, 18 Jun 2024 10:37:04 +0100 Subject: [PATCH] [TD] Fixes loading for a number of classes. Also fixes dino missions. --- common/region.h | 9 ++++++--- tiberiandawn/building.h | 5 ++++- tiberiandawn/credits.h | 3 +++ tiberiandawn/door.h | 3 ++- tiberiandawn/house.cpp | 3 +++ tiberiandawn/house.h | 31 ++++++++++++++++++++++++++++--- tiberiandawn/mission.h | 1 + tiberiandawn/saveload.cpp | 5 +++++ tiberiandawn/super.h | 4 ++++ tiberiandawn/team.h | 3 ++- tiberiandawn/techno.h | 4 +++- tiberiandawn/turret.h | 4 +++- 12 files changed, 64 insertions(+), 11 deletions(-) diff --git a/common/region.h b/common/region.h index 3085328e..0cb5ab05 100644 --- a/common/region.h +++ b/common/region.h @@ -38,9 +38,8 @@ class RegionClass { public: - RegionClass(void) - { - Threat = 0; + RegionClass(void){ + //Threat = 0; }; ~RegionClass(void){}; int operator!=(RegionClass const& region) @@ -75,6 +74,10 @@ class RegionClass { return Threat; }; + void Init() + { + Threat = 0; + } protected: int Threat; diff --git a/tiberiandawn/building.h b/tiberiandawn/building.h index f6a5c427..3cff8a95 100644 --- a/tiberiandawn/building.h +++ b/tiberiandawn/building.h @@ -35,6 +35,7 @@ #ifndef BUILDING_H #define BUILDING_H +#include "ftimer.h" #include "tarcom.h" #include "radio.h" #include "cargo.h" @@ -175,7 +176,9 @@ class BuildingClass : public TechnoClass : Class(0){}; BuildingClass(NoInitClass const& x) : TechnoClass(x) - , Class(this->Class){}; + , Class(this->Class) + , CountDown(x) + , PlacementDelay(x){}; BuildingClass(StructType type, HousesType house); virtual ~BuildingClass(void); virtual RTTIType What_Am_I(void) const diff --git a/tiberiandawn/credits.h b/tiberiandawn/credits.h index 152fe945..2b867668 100644 --- a/tiberiandawn/credits.h +++ b/tiberiandawn/credits.h @@ -50,6 +50,9 @@ class CreditClass ** Constructors, Destructors, and overloaded operators. */ CreditClass(void); + CreditClass(NoInitClass const&) + { + } /*--------------------------------------------------------------------- ** Member function prototypes. diff --git a/tiberiandawn/door.h b/tiberiandawn/door.h index 9e363d4f..27b1cc62 100644 --- a/tiberiandawn/door.h +++ b/tiberiandawn/door.h @@ -68,7 +68,8 @@ class DoorClass public: DoorClass(void); - DoorClass(NoInitClass const&){}; + DoorClass(NoInitClass const& x) + : Control(x){}; bool Time_To_Redraw(void) { diff --git a/tiberiandawn/house.cpp b/tiberiandawn/house.cpp index 1115d860..7e9f27c3 100644 --- a/tiberiandawn/house.cpp +++ b/tiberiandawn/house.cpp @@ -367,6 +367,9 @@ HouseClass::HouseClass(HousesType house) , CapturedBuildings() , TotalCrates() { + for (int i = 0; i < MAP_TOTAL_REGIONS; ++i) { + Regions[i].Init(); + } for (HousesType i = HOUSE_FIRST; i < HOUSE_COUNT; i++) { UnitsKilled[i] = 0; diff --git a/tiberiandawn/house.h b/tiberiandawn/house.h index 8e0d3b09..1ffcb36a 100644 --- a/tiberiandawn/house.h +++ b/tiberiandawn/house.h @@ -421,10 +421,35 @@ class HouseClass { } HouseClass(void) - : Class(0){}; + : Class(0) + { + for (int i = 0; i < MAP_TOTAL_REGIONS; ++i) { + Regions[i].Init(); + } + } HouseClass(HousesType house); - HouseClass(NoInitClass const&) - : Class(this->Class){}; + HouseClass(NoInitClass const& noinit) + : Class(this->Class) + , FreeHarvester(noinit) + , IonCannon(noinit) + , AirStrike(noinit) + , NukeStrike(noinit) + , AlertTime(noinit) + , BorrowedTime(noinit) + , BlitzTime(noinit) + , VisibleCredits(noinit) + , ScreenShakeTime(noinit) + , DamageTime(noinit) + , TeamTime(noinit) + , TriggerTime(noinit) + , SpeakAttackDelay(noinit) + , SpeakPowerDelay(noinit) + , SpeakMoneyDelay(noinit) + , SpeakMaxedDelay(noinit) + , Attack(noinit) + , AITimer(noinit) + { + } operator HousesType(void) const; /*--------------------------------------------------------------------- diff --git a/tiberiandawn/mission.h b/tiberiandawn/mission.h index 47b802cf..64b2df21 100644 --- a/tiberiandawn/mission.h +++ b/tiberiandawn/mission.h @@ -67,6 +67,7 @@ class MissionClass : public ObjectClass MissionClass(void); MissionClass(NoInitClass const& x) : ObjectClass(x) + , Timer(x) { } virtual ~MissionClass(void){}; diff --git a/tiberiandawn/saveload.cpp b/tiberiandawn/saveload.cpp index 12c562d8..425890b0 100644 --- a/tiberiandawn/saveload.cpp +++ b/tiberiandawn/saveload.cpp @@ -638,6 +638,7 @@ bool Save_Misc_Values(FileClass& file) // This is new... file.Write(ActionMovie, sizeof(ActionMovie)); file.Write(&TempleIoned, sizeof(TempleIoned)); + file.Write(&AreThingiesEnabled, sizeof(AreThingiesEnabled)); return (true); } @@ -752,6 +753,10 @@ bool Load_Misc_Values(FileClass& file) file.Read(&TempleIoned, sizeof(TempleIoned)); } + if (file.Seek(0, SEEK_CUR) < file.Size()) { + file.Read(&AreThingiesEnabled, sizeof(AreThingiesEnabled)); + } + return (true); } diff --git a/tiberiandawn/super.h b/tiberiandawn/super.h index 8e30e3e1..52a046f5 100644 --- a/tiberiandawn/super.h +++ b/tiberiandawn/super.h @@ -45,6 +45,10 @@ class SuperClass VoxType ready = VOX_NONE, VoxType impatient = VOX_NONE, VoxType suspend = VOX_NONE); + SuperClass(NoInitClass const& noinit) + : Control(noinit) + { + } bool Suspend(bool on); bool Enable(bool onetime = false, bool player = false, bool quiet = false); diff --git a/tiberiandawn/team.h b/tiberiandawn/team.h index 4435f531..305961b9 100644 --- a/tiberiandawn/team.h +++ b/tiberiandawn/team.h @@ -177,7 +177,8 @@ class TeamClass : public AbstractClass : AbstractClass(x) , SuspendTimer(x) , Class(this->Class) - , House(this->House){}; + , House(this->House) + , TimeOut(x){}; TeamClass(TeamTypeClass const* team, HouseClass* owner); virtual ~TeamClass(void); diff --git a/tiberiandawn/techno.h b/tiberiandawn/techno.h index 4216ed6c..73872694 100644 --- a/tiberiandawn/techno.h +++ b/tiberiandawn/techno.h @@ -226,7 +226,9 @@ class TechnoClass : public RadioClass, , CargoClass(x) , DoorClass(x) , CrewClass(x) - , House(this->House){}; + , House(this->House) + , CloakingDevice(x) + , PrimaryFacing(x){}; virtual ~TechnoClass(void){}; /* diff --git a/tiberiandawn/turret.h b/tiberiandawn/turret.h index f77a21f2..7f229953 100644 --- a/tiberiandawn/turret.h +++ b/tiberiandawn/turret.h @@ -67,7 +67,9 @@ class TurretClass : public DriveClass TurretClass(UnitType classid, HousesType house); TurretClass(void); TurretClass(NoInitClass const& x) - : DriveClass(x){}; + : DriveClass(x) + , Reload(x) + , SecondaryFacing(x){}; virtual ~TurretClass(void); BulletClass* Fire_At(TARGET target, int which);