Table of Contents

Class DiplomacyWarManager

Namespace
Core.Diplomacy
Assembly
Core.dll

ENGINE LAYER - Manages war state and war-related queries

RESPONSIBILITY:

  • War state queries (IsAtWar, GetEnemies, GetAllWars)
  • War declarations and peace treaties
  • War index management (warsByCountry for fast lookups)

PATTERN: Stateless manager (receives data references from DiplomacySystem)

  • Does NOT own NativeCollections (passed as parameters)
  • Manages activeWars HashSet and warsByCountry index
  • Emits events through GameState.EventBus

PERFORMANCE:

  • IsAtWar: O(1) HashSet lookup
  • GetEnemies: O(k) where k = enemies for this country
  • DeclareWar: O(1) + event emission
public static class DiplomacyWarManager
Inheritance
object
DiplomacyWarManager

Methods

DeclareWar(ushort, ushort, int, NativeParallelHashMap<ulong, RelationData>, NativeParallelHashSet<ulong>, NativeParallelMultiHashMap<ushort, ushort>, GameState)

Declare war between two countries Called by DeclareWarCommand after validation

public static void DeclareWar(ushort attackerID, ushort defenderID, int currentTick, NativeParallelHashMap<ulong, RelationData> relations, NativeParallelHashSet<ulong> activeWars, NativeParallelMultiHashMap<ushort, ushort> warsByCountry, GameState gameState)

Parameters

attackerID ushort
defenderID ushort
currentTick int
relations NativeParallelHashMap<ulong, RelationData>
activeWars NativeParallelHashSet<ulong>
warsByCountry NativeParallelMultiHashMap<ushort, ushort>
gameState GameState

GetAllWars(NativeParallelHashSet<ulong>)

Get all active wars as country pairs Used for debugging and UI

public static List<(ushort, ushort)> GetAllWars(NativeParallelHashSet<ulong> activeWars)

Parameters

activeWars NativeParallelHashSet<ulong>

Returns

List<(ushort, ushort)>

GetEnemies(ushort, NativeParallelMultiHashMap<ushort, ushort>)

Get all countries at war with the given country Optimized with warsByCountry index

public static List<ushort> GetEnemies(ushort countryID, NativeParallelMultiHashMap<ushort, ushort> warsByCountry)

Parameters

countryID ushort
warsByCountry NativeParallelMultiHashMap<ushort, ushort>

Returns

List<ushort>

GetWarCount(NativeParallelHashSet<ulong>)

Get count of active wars

public static int GetWarCount(NativeParallelHashSet<ulong> activeWars)

Parameters

activeWars NativeParallelHashSet<ulong>

Returns

int

HasAnyWar(ushort, NativeParallelMultiHashMap<ushort, ushort>)

Check if a country is at war with anyone. O(1) check using warsByCountry index.

public static bool HasAnyWar(ushort countryID, NativeParallelMultiHashMap<ushort, ushort> warsByCountry)

Parameters

countryID ushort
warsByCountry NativeParallelMultiHashMap<ushort, ushort>

Returns

bool

IsAtWar(ushort, ushort, NativeParallelHashSet<ulong>)

Check if two countries are at war O(1) HashSet lookup

public static bool IsAtWar(ushort country1, ushort country2, NativeParallelHashSet<ulong> activeWars)

Parameters

country1 ushort
country2 ushort
activeWars NativeParallelHashSet<ulong>

Returns

bool

MakePeace(ushort, ushort, int, NativeParallelHashMap<ulong, RelationData>, NativeParallelHashSet<ulong>, NativeParallelMultiHashMap<ushort, ushort>, GameState)

Make peace between two countries Called by MakePeaceCommand after validation

public static void MakePeace(ushort country1, ushort country2, int currentTick, NativeParallelHashMap<ulong, RelationData> relations, NativeParallelHashSet<ulong> activeWars, NativeParallelMultiHashMap<ushort, ushort> warsByCountry, GameState gameState)

Parameters

country1 ushort
country2 ushort
currentTick int
relations NativeParallelHashMap<ulong, RelationData>
activeWars NativeParallelHashSet<ulong>
warsByCountry NativeParallelMultiHashMap<ushort, ushort>
gameState GameState