diff --git a/src/actor.h b/src/actor.h index 50cd2704c..b46917a4a 100644 --- a/src/actor.h +++ b/src/actor.h @@ -583,7 +583,7 @@ public: void Destroy (); ~AActor (); - void Serialize(FArchive &arc); + DECLARE_OLD_SERIAL void Serialize(FSerializer &arc); void PostSerialize(); @@ -990,7 +990,7 @@ public: double Speed; double FloatSpeed; - WORD sprite; // used to find patch_t and flip value + int sprite; // used to find patch_t and flip value BYTE frame; // sprite frame to draw DVector2 Scale; // Scaling values; 1 is normal size FRenderStyle RenderStyle; // Style to draw this actor with diff --git a/src/dobject.h b/src/dobject.h index d42228172..7e0c49db6 100644 --- a/src/dobject.h +++ b/src/dobject.h @@ -438,6 +438,8 @@ template<class T> inline void GC::Mark(TObjPtr<T> &obj) GC::Mark(&obj.o); } +#define DECLARE_OLD_SERIAL virtual void Serialize(FArchive &arc); + class DObject { public: @@ -467,7 +469,7 @@ public: inline bool IsA (const PClass *type) const; void SerializeUserVars(FArchive &arc); - virtual void Serialize(FArchive &arc); + DECLARE_OLD_SERIAL void SerializeUserVars(FSerializer &arc); virtual void Serialize(FSerializer &arc); diff --git a/src/fragglescript/t_func.cpp b/src/fragglescript/t_func.cpp index 8e2c31f2d..7e4b933f1 100644 --- a/src/fragglescript/t_func.cpp +++ b/src/fragglescript/t_func.cpp @@ -1781,7 +1781,7 @@ public: DLightLevel(sector_t * s,int destlevel,int speed); void Serialize(FArchive &arc); - void Serialize(FArchive &arc); + //void Serialize(FArchive &arc); void Tick (); void Destroy() { Super::Destroy(); m_Sector->lightingdata=NULL; } }; diff --git a/src/g_doom/a_doomglobal.h b/src/g_doom/a_doomglobal.h index bcaaff887..e18917f01 100644 --- a/src/g_doom/a_doomglobal.h +++ b/src/g_doom/a_doomglobal.h @@ -29,7 +29,8 @@ public: void Tick (); void SetWeapon (EMarineWeapon); void SetSprite (PClassActor *source); - void Serialize(FArchive &arc); + DECLARE_OLD_SERIAL + void Serialize(FSerializer &arc); int CurrentWeapon; diff --git a/src/g_doom/a_doommisc.cpp b/src/g_doom/a_doommisc.cpp index 93e7abdaa..c281173af 100644 --- a/src/g_doom/a_doommisc.cpp +++ b/src/g_doom/a_doommisc.cpp @@ -18,6 +18,7 @@ #include "portal.h" #include "d_player.h" #include "p_maputl.h" +#include "serializer.h" #include "g_shared/a_pickups.h" // Include all the other Doom stuff here to reduce compile time diff --git a/src/g_doom/a_scriptedmarine.cpp b/src/g_doom/a_scriptedmarine.cpp index a014891ea..2c293a2de 100644 --- a/src/g_doom/a_scriptedmarine.cpp +++ b/src/g_doom/a_scriptedmarine.cpp @@ -21,19 +21,14 @@ static FRandom pr_m_fireshotgun2 ("SMarineFireSSG"); IMPLEMENT_CLASS (AScriptedMarine) -void AScriptedMarine::Serialize(FArchive &arc) +void AScriptedMarine::Serialize(FSerializer &arc) { Super::Serialize (arc); - if (arc.IsStoring ()) - { - arc.WriteSprite (SpriteOverride); - } - else - { - SpriteOverride = arc.ReadSprite (); - } - arc << CurrentWeapon; + auto def = (AScriptedMarine*)GetDefault(); + + arc.Sprite("spriteoverride", SpriteOverride, &def->SpriteOverride) + ("currentweapon", CurrentWeapon, def->CurrentWeapon); } void AScriptedMarine::Activate (AActor *activator) diff --git a/src/g_heretic/a_hereticmisc.cpp b/src/g_heretic/a_hereticmisc.cpp index 95c2ae6d0..199b3f1c4 100644 --- a/src/g_heretic/a_hereticmisc.cpp +++ b/src/g_heretic/a_hereticmisc.cpp @@ -18,6 +18,7 @@ #include "d_player.h" #include "a_morph.h" #include "p_spec.h" +#include "serializer.h" // Include all the other Heretic stuff here to reduce compile time #include "a_chicken.cpp" diff --git a/src/g_heretic/a_hereticweaps.cpp b/src/g_heretic/a_hereticweaps.cpp index fa35bf1f9..dd6231288 100644 --- a/src/g_heretic/a_hereticweaps.cpp +++ b/src/g_heretic/a_hereticweaps.cpp @@ -866,16 +866,18 @@ class ARainTracker : public AInventory { DECLARE_CLASS (ARainTracker, AInventory) public: - void Serialize(FArchive &arc); - AActor *Rain1, *Rain2; + DECLARE_OLD_SERIAL + void Serialize(FSerializer &arc); + TObjPtr<AActor> Rain1, Rain2; }; IMPLEMENT_CLASS (ARainTracker) -void ARainTracker::Serialize(FArchive &arc) +void ARainTracker::Serialize(FSerializer &arc) { Super::Serialize (arc); - arc << Rain1 << Rain2; + arc("rain1", Rain1) + ("rain2", Rain2); } //---------------------------------------------------------------------------- diff --git a/src/g_hexen/a_heresiarch.cpp b/src/g_hexen/a_heresiarch.cpp index acddc588b..10f6168a9 100644 --- a/src/g_hexen/a_heresiarch.cpp +++ b/src/g_hexen/a_heresiarch.cpp @@ -64,19 +64,21 @@ class AHeresiarch : public AActor { DECLARE_CLASS (AHeresiarch, AActor) public: - const PClass *StopBall; + PClassActor *StopBall; DAngle BallAngle; - void Serialize(FArchive &arc); + DECLARE_OLD_SERIAL + void Serialize(FSerializer &arc); void Die (AActor *source, AActor *inflictor, int dmgflags); }; IMPLEMENT_CLASS (AHeresiarch) -void AHeresiarch::Serialize(FArchive &arc) +void AHeresiarch::Serialize(FSerializer &arc) { Super::Serialize (arc); - arc << StopBall << BallAngle; + arc("stopball", StopBall) + ("ballangle", BallAngle); } void AHeresiarch::Die (AActor *source, AActor *inflictor, int dmgflags) @@ -105,10 +107,13 @@ public: DAngle AngleOffset; DAngle OldAngle; - void Serialize(FArchive &arc) + DECLARE_OLD_SERIAL + + void Serialize(FSerializer &arc) { Super::Serialize (arc); - arc << AngleOffset << OldAngle; + arc("angleoffset", AngleOffset) + ("oldangle", OldAngle); } bool SpecialBlastHandling (AActor *source, double strength) diff --git a/src/g_hexen/a_hexenmisc.cpp b/src/g_hexen/a_hexenmisc.cpp index c1d41e762..122129ede 100644 --- a/src/g_hexen/a_hexenmisc.cpp +++ b/src/g_hexen/a_hexenmisc.cpp @@ -24,6 +24,7 @@ #include "r_utility.h" #include "p_maputl.h" #include "p_spec.h" +#include "serializer.h" // Include all the Hexen stuff here to reduce compile time #include "a_bats.cpp" diff --git a/src/g_hexen/a_spike.cpp b/src/g_hexen/a_spike.cpp index ced6c43a6..3be6a3101 100644 --- a/src/g_hexen/a_spike.cpp +++ b/src/g_hexen/a_spike.cpp @@ -22,7 +22,8 @@ class AThrustFloor : public AActor DECLARE_CLASS (AThrustFloor, AActor) HAS_OBJECT_POINTERS public: - void Serialize(FArchive &arc); + DECLARE_OLD_SERIAL + void Serialize(FSerializer &arc); void Activate (AActor *activator); void Deactivate (AActor *activator); @@ -34,10 +35,10 @@ IMPLEMENT_POINTY_CLASS (AThrustFloor) DECLARE_POINTER (DirtClump) END_POINTERS -void AThrustFloor::Serialize(FArchive &arc) +void AThrustFloor::Serialize(FSerializer &arc) { Super::Serialize (arc); - arc << DirtClump; + arc("dirtclump", DirtClump); } void AThrustFloor::Activate (AActor *activator) diff --git a/src/g_raven/a_minotaur.cpp b/src/g_raven/a_minotaur.cpp index 281e1db49..909b317e7 100644 --- a/src/g_raven/a_minotaur.cpp +++ b/src/g_raven/a_minotaur.cpp @@ -14,6 +14,7 @@ #include "farchive.h" #include "a_pickups.h" #include "d_player.h" +#include "serializer.h" #define MAULATORTICS (25*35) @@ -79,10 +80,10 @@ void AMinotaurFriend::BeginPlay () StartTime = -1; } -void AMinotaurFriend::Serialize(FArchive &arc) +void AMinotaurFriend::Serialize(FSerializer &arc) { Super::Serialize (arc); - arc << StartTime; + arc("starttime", StartTime); } void AMinotaurFriend::Die (AActor *source, AActor *inflictor, int dmgflags) diff --git a/src/g_raven/ravenshared.h b/src/g_raven/ravenshared.h index 824bc7c86..dd5b74781 100644 --- a/src/g_raven/ravenshared.h +++ b/src/g_raven/ravenshared.h @@ -23,7 +23,8 @@ public: void Die (AActor *source, AActor *inflictor, int dmgflags); bool OkayToSwitchTarget (AActor *other); void BeginPlay (); - void Serialize(FArchive &arc); + DECLARE_OLD_SERIAL + void Serialize(FSerializer &arc); }; #endif //__RAVENSHARED_H__ diff --git a/src/g_shared/a_armor.cpp b/src/g_shared/a_armor.cpp index b221c07b9..e05b564f3 100644 --- a/src/g_shared/a_armor.cpp +++ b/src/g_shared/a_armor.cpp @@ -7,6 +7,7 @@ #include "g_level.h" #include "d_player.h" #include "farchive.h" +#include "serializer.h" IMPLEMENT_CLASS (AArmor) @@ -21,10 +22,17 @@ IMPLEMENT_CLASS (AHexenArmor) // //=========================================================================== -void ABasicArmor::Serialize(FArchive &arc) +void ABasicArmor::Serialize(FSerializer &arc) { Super::Serialize (arc); - arc << SavePercent << BonusCount << MaxAbsorb << MaxFullAbsorb << AbsorbCount << ArmorType << ActualSaveAmount; + auto def = (ABasicArmor *)GetDefault(); + arc("savepercent", SavePercent, def->SavePercent) + ("bonuscount", BonusCount, def->BonusCount) + ("maxabsorb", MaxAbsorb, def->MaxAbsorb) + ("maxfullabsorb", MaxFullAbsorb, def->MaxFullAbsorb) + ("absorbcount", AbsorbCount, def->AbsorbCount) + ("armortype", ArmorType, def->ArmorType) + ("actualsaveamount", ActualSaveAmount, def->ActualSaveAmount); } //=========================================================================== @@ -192,11 +200,15 @@ void ABasicArmor::AbsorbDamage (int damage, FName damageType, int &newdamage) // //=========================================================================== -void ABasicArmorPickup::Serialize(FArchive &arc) +void ABasicArmorPickup::Serialize(FSerializer &arc) { Super::Serialize (arc); - arc << SavePercent << SaveAmount << MaxAbsorb << MaxFullAbsorb; - arc << DropTime; + + auto def = (ABasicArmorPickup *)GetDefault(); + arc("savepercent", SavePercent, def->SavePercent) + ("saveamount", SaveAmount, def->SaveAmount) + ("maxabsorb", MaxAbsorb, def->MaxAbsorb) + ("maxfullabsorb", MaxFullAbsorb, def->MaxFullAbsorb); } //=========================================================================== @@ -274,11 +286,17 @@ bool ABasicArmorPickup::Use (bool pickup) // //=========================================================================== -void ABasicArmorBonus::Serialize(FArchive &arc) +void ABasicArmorBonus::Serialize(FSerializer &arc) { Super::Serialize (arc); - arc << SavePercent << SaveAmount << MaxSaveAmount << BonusCount << BonusMax - << MaxAbsorb << MaxFullAbsorb; + auto def = (ABasicArmorBonus *)GetDefault(); + arc("savepercent", SavePercent, def->SavePercent) + ("saveamount", SaveAmount, def->SaveAmount) + ("maxsaveamount", MaxSaveAmount, def->MaxSaveAmount) + ("bonuscount", BonusCount, def->BonusCount) + ("bonusmax", BonusMax, def->BonusMax) + ("maxabsorb", MaxAbsorb, def->MaxAbsorb) + ("maxfullabsorb", MaxFullAbsorb, def->MaxFullAbsorb); } //=========================================================================== @@ -371,13 +389,12 @@ bool ABasicArmorBonus::Use (bool pickup) // //=========================================================================== -void AHexenArmor::Serialize(FArchive &arc) +void AHexenArmor::Serialize(FSerializer &arc) { Super::Serialize (arc); - arc << Slots[0] << Slots[1] << Slots[2] << Slots[3] - << Slots[4] - << SlotsIncrement[0] << SlotsIncrement[1] << SlotsIncrement[2] - << SlotsIncrement[3]; + auto def = (AHexenArmor *)GetDefault(); + arc.Array("slots", Slots, def->Slots, 5, true) + .Array("slotsincrement", SlotsIncrement, def->SlotsIncrement, 4); } //=========================================================================== diff --git a/src/g_shared/a_pickups.cpp b/src/g_shared/a_pickups.cpp index 1a8202916..1ce531eea 100644 --- a/src/g_shared/a_pickups.cpp +++ b/src/g_shared/a_pickups.cpp @@ -21,6 +21,7 @@ #include "farchive.h" #include "d_player.h" #include "p_spec.h" +#include "serializer.h" static FRandom pr_restore ("RestorePos"); @@ -89,10 +90,12 @@ IMPLEMENT_CLASS (AAmmo) // //=========================================================================== -void AAmmo::Serialize(FArchive &arc) +void AAmmo::Serialize(FSerializer &arc) { Super::Serialize (arc); - arc << BackpackAmount << BackpackMaxAmount; + auto def = (AAmmo*)GetDefault(); + arc("backpackamount", BackpackAmount, def->BackpackAmount) + ("backpackmaxamount", BackpackMaxAmount, def->BackpackMaxAmount); } //=========================================================================== @@ -514,10 +517,21 @@ void AInventory::Tick () // //=========================================================================== -void AInventory::Serialize(FArchive &arc) +void AInventory::Serialize(FSerializer &arc) { Super::Serialize (arc); - arc << Owner << Amount << MaxAmount << RespawnTics << ItemFlags << Icon << PickupSound << SpawnPointClass; + + auto def = (AInventory*)GetDefault(); + arc("owner", Owner) + ("amount", Amount, def->Amount) + ("maxamount", MaxAmount, def->MaxAmount) + ("interhubamount", InterHubAmount, def->InterHubAmount) + ("respawntics", RespawnTics, def->RespawnTics) + ("itemflags", ItemFlags, def->ItemFlags) + ("icon", Icon, def->Icon) + ("pickupsound", PickupSound, def->PickupSound) + ("spawnpointclass", SpawnPointClass, def->SpawnPointClass) + ("droptime", DropTime, def->DropTime); } //=========================================================================== @@ -1809,10 +1823,11 @@ bool AHealthPickup::Use (bool pickup) // //=========================================================================== -void AHealthPickup::Serialize(FArchive &arc) +void AHealthPickup::Serialize(FSerializer &arc) { Super::Serialize(arc); - arc << autousemode; + auto def = (AHealthPickup*)GetDefault(); + arc("autousemode", autousemode, def->autousemode); } // Backpack ----------------------------------------------------------------- @@ -1823,10 +1838,11 @@ void AHealthPickup::Serialize(FArchive &arc) // //=========================================================================== -void ABackpackItem::Serialize(FArchive &arc) +void ABackpackItem::Serialize(FSerializer &arc) { Super::Serialize (arc); - arc << bDepleted; + auto def = (ABackpackItem*)GetDefault(); + arc("bdepleted", bDepleted, def->bDepleted); } //=========================================================================== diff --git a/src/g_shared/a_pickups.h b/src/g_shared/a_pickups.h index 9122ffd12..303cd3431 100644 --- a/src/g_shared/a_pickups.h +++ b/src/g_shared/a_pickups.h @@ -153,7 +153,8 @@ class AInventory : public AActor HAS_OBJECT_POINTERS public: virtual void Touch (AActor *toucher); - virtual void Serialize(FArchive &arc); + DECLARE_OLD_SERIAL + virtual void Serialize(FSerializer &arc); virtual void MarkPrecacheSounds() const; virtual void BeginPlay (); @@ -185,7 +186,7 @@ public: int RespawnTics; // Tics from pickup time to respawn time FTextureID Icon; // Icon to show on status bar or HUD int DropTime; // Countdown after dropping - const PClass *SpawnPointClass; // For respawning like Heretic's mace + PClassActor *SpawnPointClass; // For respawning like Heretic's mace DWORD ItemFlags; PClassActor *PickupFlash; // actor to spawn as pickup flash @@ -254,7 +255,8 @@ class AAmmo : public AInventory { DECLARE_CLASS_WITH_META(AAmmo, AInventory, PClassAmmo) public: - void Serialize(FArchive &arc); + DECLARE_OLD_SERIAL + void Serialize(FSerializer &arc); AInventory *CreateCopy (AActor *other); bool HandlePickup (AInventory *item); PClassActor *GetParentAmmo () const; @@ -311,7 +313,8 @@ public: bool bAltFire; // Set when this weapon's alternate fire is used. virtual void MarkPrecacheSounds() const; - virtual void Serialize(FArchive &arc); + DECLARE_OLD_SERIAL + virtual void Serialize(FSerializer &arc); virtual bool ShouldStay (); virtual void AttachToOwner (AActor *other); virtual bool HandlePickup (AInventory *item); @@ -395,7 +398,8 @@ class AWeaponGiver : public AWeapon public: bool TryPickup(AActor *&toucher); - void Serialize(FArchive &arc); + DECLARE_OLD_SERIAL + void Serialize(FSerializer &arc); double DropAmmoFactor; }; @@ -431,7 +435,8 @@ class AHealthPickup : public AInventory public: int autousemode; - virtual void Serialize(FArchive &arc); + DECLARE_OLD_SERIAL + virtual void Serialize(FSerializer &arc); virtual AInventory *CreateCopy (AActor *other); virtual AInventory *CreateTossable (); virtual bool HandlePickup (AInventory *item); @@ -451,7 +456,8 @@ class ABasicArmor : public AArmor { DECLARE_CLASS (ABasicArmor, AArmor) public: - virtual void Serialize(FArchive &arc); + DECLARE_OLD_SERIAL + virtual void Serialize(FSerializer &arc); virtual void Tick (); virtual AInventory *CreateCopy (AActor *other); virtual bool HandlePickup (AInventory *item); @@ -471,7 +477,8 @@ class ABasicArmorPickup : public AArmor { DECLARE_CLASS (ABasicArmorPickup, AArmor) public: - virtual void Serialize(FArchive &arc); + DECLARE_OLD_SERIAL + virtual void Serialize(FSerializer &arc); virtual AInventory *CreateCopy (AActor *other); virtual bool Use (bool pickup); @@ -486,7 +493,8 @@ class ABasicArmorBonus : public AArmor { DECLARE_CLASS (ABasicArmorBonus, AArmor) public: - virtual void Serialize(FArchive &arc); + DECLARE_OLD_SERIAL + virtual void Serialize(FSerializer &arc); virtual AInventory *CreateCopy (AActor *other); virtual bool Use (bool pickup); @@ -505,7 +513,8 @@ class AHexenArmor : public AArmor { DECLARE_CLASS (AHexenArmor, AArmor) public: - virtual void Serialize(FArchive &arc); + DECLARE_OLD_SERIAL + virtual void Serialize(FSerializer &arc); virtual AInventory *CreateCopy (AActor *other); virtual AInventory *CreateTossable (); virtual bool HandlePickup (AInventory *item); @@ -533,7 +542,7 @@ class APuzzleItem : public AInventory { DECLARE_CLASS_WITH_META(APuzzleItem, AInventory, PClassPuzzleItem) public: - void Serialize(FArchive &arc); + DECLARE_OLD_SERIAL bool ShouldStay (); bool Use (bool pickup); bool HandlePickup (AInventory *item); @@ -555,7 +564,8 @@ class ABackpackItem : public AInventory { DECLARE_CLASS (ABackpackItem, AInventory) public: - void Serialize(FArchive &arc); + DECLARE_OLD_SERIAL + void Serialize(FSerializer &arc); bool HandlePickup (AInventory *item); AInventory *CreateCopy (AActor *other); AInventory *CreateTossable (); diff --git a/src/g_shared/a_puzzleitems.cpp b/src/g_shared/a_puzzleitems.cpp index 774585ae9..512d83b49 100644 --- a/src/g_shared/a_puzzleitems.cpp +++ b/src/g_shared/a_puzzleitems.cpp @@ -20,12 +20,6 @@ void PClassPuzzleItem::DeriveData(PClass *newclass) IMPLEMENT_CLASS(APuzzleItem) -void APuzzleItem::Serialize(FArchive &arc) -{ - Super::Serialize (arc); - arc << PuzzleItemNumber; -} - bool APuzzleItem::HandlePickup (AInventory *item) { // Can't carry more than 1 of each puzzle item in coop netplay diff --git a/src/g_shared/a_weapons.cpp b/src/g_shared/a_weapons.cpp index ed7c02531..eb73b22f2 100644 --- a/src/g_shared/a_weapons.cpp +++ b/src/g_shared/a_weapons.cpp @@ -18,6 +18,7 @@ #include "g_level.h" #include "d_net.h" #include "farchive.h" +#include "serializer.h" #define BONUSADD 6 @@ -73,28 +74,45 @@ void PClassWeapon::ReplaceClassRef(PClass *oldclass, PClass *newclass) // //=========================================================================== -void AWeapon::Serialize(FArchive &arc) +void AWeapon::Serialize(FSerializer &arc) { Super::Serialize (arc); - arc << WeaponFlags - << AmmoType1 << AmmoType2 - << AmmoGive1 << AmmoGive2 - << MinAmmo1 << MinAmmo2 - << AmmoUse1 << AmmoUse2 - << Kickback - << YAdjust - << UpSound << ReadySound - << SisterWeaponType - << ProjectileType << AltProjectileType - << SelectionOrder - << MoveCombatDist - << Ammo1 << Ammo2 << SisterWeapon << GivenAsMorphWeapon - << bAltFire - << ReloadCounter - << BobStyle << BobSpeed << BobRangeX << BobRangeY - << FOVScale - << Crosshair - << MinSelAmmo1 << MinSelAmmo2; + auto def = (AWeapon*)GetDefault(); + arc("weaponflags", WeaponFlags, def->WeaponFlags) + ("ammogive1", AmmoGive1, def->AmmoGive1) + ("ammogive2", AmmoGive2, def->AmmoGive2) + ("minammo1", MinAmmo1, def->MinAmmo1) + ("minammo2", MinAmmo2, def->MinAmmo2) + ("ammouse1", AmmoUse1, def->AmmoUse1) + ("ammouse2", AmmoUse2, def->AmmoUse2) + ("kickback", Kickback, Kickback) + ("yadjust", YAdjust, def->YAdjust) + ("upsound", UpSound, def->UpSound) + ("readysound", ReadySound, def->ReadySound) + ("selectionorder", SelectionOrder, def->SelectionOrder) + ("ammo1", Ammo1) + ("ammo2", Ammo2) + ("sisterweapon", SisterWeapon) + ("givenasmorphweapon", GivenAsMorphWeapon, def->GivenAsMorphWeapon) + ("altfire", bAltFire, def->bAltFire) + ("reloadcounter", ReloadCounter, def->ReloadCounter) + ("bobstyle", BobStyle, def->BobStyle) + ("bobspeed", BobSpeed, def->BobSpeed) + ("bobrangex", BobRangeX, def->BobRangeX) + ("bobrangey", BobRangeY, def->BobRangeY) + ("fovscale", FOVScale, def->FOVScale) + ("crosshair", Crosshair, def->Crosshair) + ("minselammo1", MinSelAmmo1, def->MinSelAmmo1) + ("minselammo2", MinSelAmmo2, def->MinSelAmmo2); + /* these can never change + ("ammotype1", AmmoType1, def->AmmoType1) + ("ammotype2", AmmoType2, def->AmmoType2) + ("sisterweapontype", SisterWeaponType, def->SisterWeaponType) + ("projectiletype", ProjectileType, def->ProjectileType) + ("altprojectiletype", AltProjectileType, def->AltProjectileType) + ("movecombatdist", MoveCombatDist, def->MoveCombatDist) + */ + } //=========================================================================== @@ -737,10 +755,11 @@ FState *AWeapon::GetStateForButtonName (FName button) IMPLEMENT_CLASS(AWeaponGiver) -void AWeaponGiver::Serialize(FArchive &arc) +void AWeaponGiver::Serialize(FSerializer &arc) { Super::Serialize(arc); - arc << DropAmmoFactor; + auto def = (AWeaponGiver *)GetDefault(); + arc("dropammofactor", DropAmmoFactor, def->DropAmmoFactor); } bool AWeaponGiver::TryPickup(AActor *&toucher) diff --git a/src/serializer.cpp b/src/serializer.cpp index 06625b054..fe4a76ba5 100644 --- a/src/serializer.cpp +++ b/src/serializer.cpp @@ -431,7 +431,7 @@ FSerializer &FSerializer::Terrain(const char *key, int &terrain, int *def) // //========================================================================== -FSerializer &FSerializer::Sprite(const char *key, uint16_t &spritenum, uint16_t *def) +FSerializer &FSerializer::Sprite(const char *key, int32_t &spritenum, int32_t *def) { if (isWriting()) { diff --git a/src/serializer.h b/src/serializer.h index f56f9c87a..b85405a1f 100644 --- a/src/serializer.h +++ b/src/serializer.h @@ -38,7 +38,7 @@ public: const char *GetOutput(unsigned *len = nullptr); FSerializer &Args(const char *key, int *args, int *defargs, int special); FSerializer &Terrain(const char *key, int &terrain, int *def = nullptr); - FSerializer &Sprite(const char *key, uint16_t &spritenum, uint16_t *def); + FSerializer &Sprite(const char *key, int32_t &spritenum, int32_t *def); FSerializer &StringPtr(const char *key, const char *&charptr); // This only retrieves the address but creates no permanent copy of the string. bool isReading() const { diff --git a/src/zzz_old.cpp b/src/zzz_old.cpp index 1a6064856..952afcdb8 100644 --- a/src/zzz_old.cpp +++ b/src/zzz_old.cpp @@ -1,5 +1,8 @@ #ifdef COMMON_STUFF +#include "a_doomglobal.h" +#include "ravenshared.h" + // For NULL states, which aren't owned by any actor, the owner // is recorded as AActor with the following state. AActor should // never actually have this many states of its own, so this @@ -699,29 +702,178 @@ void DObject::Serialize(FArchive &arc) } -class DLightLevel : public DLighting -{ - DECLARE_CLASS(DLightLevel, DLighting) - - unsigned char destlevel; - unsigned char speed; - - DLightLevel() {} - -public: - - DLightLevel(sector_t * s, int destlevel, int speed); - void Serialize(FArchive &arc); - void Serialize(FSerializer &arc); - void Tick(); - void Destroy() { Super::Destroy(); m_Sector->lightingdata = NULL; } -}; - -void DLightLevel::Serialize(FArchive &arc) +void AScriptedMarine::Serialize(FArchive &arc) { Super::Serialize(arc); - arc << destlevel << speed; - if (arc.IsLoading()) m_Sector->lightingdata = this; + + if (arc.IsStoring()) + { + arc.WriteSprite(SpriteOverride); + } + else + { + SpriteOverride = arc.ReadSprite(); + } + arc << CurrentWeapon; } + +class AHeresiarch : public AActor +{ + DECLARE_CLASS(AHeresiarch, AActor) +public: + PClassActor *StopBall; + DAngle BallAngle; + + DECLARE_OLD_SERIAL +}; + +void AHeresiarch::Serialize(FArchive &arc) +{ + Super::Serialize(arc); + arc << StopBall << BallAngle; +} + +class ASorcBall : public AActor +{ + DECLARE_CLASS(ASorcBall, AActor) +public: + DAngle AngleOffset; + DAngle OldAngle; + + DECLARE_OLD_SERIAL +}; + +void ASorcBall::Serialize(FArchive &arc) +{ + Super::Serialize(arc); + arc << AngleOffset << OldAngle; +} + +class AThrustFloor : public AActor +{ + DECLARE_CLASS(AThrustFloor, AActor) +public: + DECLARE_OLD_SERIAL + + TObjPtr<AActor> DirtClump; +}; + +void AThrustFloor::Serialize(FArchive &arc) +{ + Super::Serialize(arc); + arc << DirtClump; +} + +void AMinotaurFriend::Serialize(FArchive &arc) +{ + Super::Serialize(arc); + arc << StartTime; +} + +class ARainTracker : public AInventory +{ + DECLARE_CLASS(ARainTracker, AInventory) +public: + DECLARE_OLD_SERIAL + TObjPtr<AActor> Rain1, Rain2; +}; + +void ARainTracker::Serialize(FArchive &arc) +{ + Super::Serialize(arc); + arc << Rain1 << Rain2; +} + +void AInventory::Serialize(FArchive &arc) +{ + Super::Serialize(arc); + arc << Owner << Amount << MaxAmount << RespawnTics << ItemFlags << Icon << PickupSound << SpawnPointClass; +} + +void AHealthPickup::Serialize(FArchive &arc) +{ + Super::Serialize(arc); + arc << autousemode; +} + +void AAmmo::Serialize(FArchive &arc) +{ + Super::Serialize(arc); + arc << BackpackAmount << BackpackMaxAmount; +} + +void AWeapon::Serialize(FArchive &arc) +{ + Super::Serialize(arc); + arc << WeaponFlags + << AmmoType1 << AmmoType2 + << AmmoGive1 << AmmoGive2 + << MinAmmo1 << MinAmmo2 + << AmmoUse1 << AmmoUse2 + << Kickback + << YAdjust + << UpSound << ReadySound + << SisterWeaponType + << ProjectileType << AltProjectileType + << SelectionOrder + << MoveCombatDist + << Ammo1 << Ammo2 << SisterWeapon << GivenAsMorphWeapon + << bAltFire + << ReloadCounter + << BobStyle << BobSpeed << BobRangeX << BobRangeY + << FOVScale + << Crosshair + << MinSelAmmo1 << MinSelAmmo2; +} + +void ABackpackItem::Serialize(FArchive &arc) +{ + Super::Serialize(arc); + arc << bDepleted; +} + +void AWeaponGiver::Serialize(FArchive &arc) +{ + Super::Serialize(arc); + arc << DropAmmoFactor; +} + +void ABasicArmor::Serialize(FArchive &arc) +{ + Super::Serialize(arc); + arc << SavePercent << BonusCount << MaxAbsorb << MaxFullAbsorb << AbsorbCount << ArmorType << ActualSaveAmount; +} + +void ABasicArmorPickup::Serialize(FArchive &arc) +{ + Super::Serialize(arc); + arc << SavePercent << SaveAmount << MaxAbsorb << MaxFullAbsorb; + arc << DropTime;// in inventory! +} + +void ABasicArmorBonus::Serialize(FArchive &arc) +{ + Super::Serialize(arc); + arc << SavePercent << SaveAmount << MaxSaveAmount << BonusCount << BonusMax + << MaxAbsorb << MaxFullAbsorb; +} + +void AHexenArmor::Serialize(FArchive &arc) +{ + Super::Serialize(arc); + arc << Slots[0] << Slots[1] << Slots[2] << Slots[3] + << Slots[4] + << SlotsIncrement[0] << SlotsIncrement[1] << SlotsIncrement[2] + << SlotsIncrement[3]; +} + +void APuzzleItem::Serialize(FArchive &arc) +{ + Super::Serialize(arc); + arc << PuzzleItemNumber; +} + + + #endif \ No newline at end of file