Class DiplomacyColdData
ENGINE LAYER - Cold data for diplomatic relations (rarely accessed)
Architecture:
- Separate from hot RelationData struct
- Only loaded when needed (UI, calculations, save/load)
- Modifiers and history stored here
- Managed heap (Dictionary) storage acceptable for cold data
Memory: Variable (~200 bytes + modifiers)
Storage Pattern: Dictionary{(ushort, ushort), DiplomacyColdData} coldData;
- Same key as RelationData
- Only created when modifiers exist
public class DiplomacyColdData
- Inheritance
-
objectDiplomacyColdData
Constructors
DiplomacyColdData()
public DiplomacyColdData()
Fields
customData
Game-specific extension data Allows GAME layer to attach additional data without modifying ENGINE Example: treaty information, trade agreement details, etc.
public Dictionary<string, object> customData
Field Value
- Dictionary<string, object>
lastInteractionTick
Last tick when this relationship changed Used for decay calculations and debugging
public int lastInteractionTick
Field Value
- int
modifiers
Active opinion modifiers affecting this relationship List for efficient iteration during decay
public List<OpinionModifier> modifiers
Field Value
- List<OpinionModifier>
Methods
AddModifier(OpinionModifier)
Add a modifier to this relationship
public void AddModifier(OpinionModifier modifier)
Parameters
modifierOpinionModifier
CalculateModifierTotal(int)
Calculate total opinion from all active modifiers
public FixedPoint64 CalculateModifierTotal(int currentTick)
Parameters
currentTickint
Returns
HasActiveModifiers(int)
Check if this cold data has any active modifiers Used to determine if cold data can be removed
public bool HasActiveModifiers(int currentTick)
Parameters
currentTickint
Returns
- bool
RemoveDecayedModifiers(int)
Remove all fully decayed modifiers Returns number of modifiers removed
public int RemoveDecayedModifiers(int currentTick)
Parameters
currentTickint
Returns
- int