Class CustomSystemSerializers
ENGINE LAYER - Custom serialization logic for specific systems
Purpose: Some systems (TimeManager, ResourceSystem) have custom serialization needs that don't fit the generic SaveState/LoadState pattern.
This class centralizes that custom logic, keeping SaveManager clean.
Systems with generic SaveState/LoadState:
- ProvinceSystem, ModifierSystem, CountrySystem, UnitSystem (These use SystemSerializer directly, no custom logic needed)
Systems with custom serialization:
- TimeManager (multiple fields, not a single SaveState method)
- ResourceSystem (iterates all resources, special capacity handling)
public static class CustomSystemSerializers
- Inheritance
-
objectCustomSystemSerializers
Methods
LoadResourceSystem(BinaryReader, ResourceSystem)
Load ResourceSystem data Assumes ResourceSystem is already initialized with resource definitions from GAME layer
public static void LoadResourceSystem(BinaryReader reader, ResourceSystem resourceSystem)
Parameters
readerBinaryReaderresourceSystemResourceSystem
LoadTimeManager(BinaryReader, TimeManager)
Load TimeManager data
public static void LoadTimeManager(BinaryReader reader, TimeManager timeManager)
Parameters
readerBinaryReadertimeManagerTimeManager
SaveResourceSystem(BinaryWriter, ResourceSystem)
Save ResourceSystem data Saves: maxCountries, resource storage arrays Skips: resourceDefinitions (will be re-registered by GAME layer on load)
public static void SaveResourceSystem(BinaryWriter writer, ResourceSystem resourceSystem)
Parameters
writerBinaryWriterresourceSystemResourceSystem
SaveTimeManager(BinaryWriter, TimeManager)
Save TimeManager data Saves: tick, date/time, speed, pause state, accumulator
public static void SaveTimeManager(BinaryWriter writer, TimeManager timeManager)
Parameters
writerBinaryWritertimeManagerTimeManager