Table of Contents

Class CustomSystemSerializers

Namespace
Core.SaveLoad
Assembly
Core.dll

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
object
CustomSystemSerializers

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

reader BinaryReader
resourceSystem ResourceSystem

LoadTimeManager(BinaryReader, TimeManager)

Load TimeManager data

public static void LoadTimeManager(BinaryReader reader, TimeManager timeManager)

Parameters

reader BinaryReader
timeManager TimeManager

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

writer BinaryWriter
resourceSystem ResourceSystem

SaveTimeManager(BinaryWriter, TimeManager)

Save TimeManager data Saves: tick, date/time, speed, pause state, accumulator

public static void SaveTimeManager(BinaryWriter writer, TimeManager timeManager)

Parameters

writer BinaryWriter
timeManager TimeManager