Class DiplomacyWarManager
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
-
objectDiplomacyWarManager
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
attackerIDushortdefenderIDushortcurrentTickintrelationsNativeParallelHashMap<ulong, RelationData>activeWarsNativeParallelHashSet<ulong>warsByCountryNativeParallelMultiHashMap<ushort, ushort>gameStateGameState
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
activeWarsNativeParallelHashSet<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
countryIDushortwarsByCountryNativeParallelMultiHashMap<ushort, ushort>
Returns
- List<ushort>
GetWarCount(NativeParallelHashSet<ulong>)
Get count of active wars
public static int GetWarCount(NativeParallelHashSet<ulong> activeWars)
Parameters
activeWarsNativeParallelHashSet<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
countryIDushortwarsByCountryNativeParallelMultiHashMap<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
country1ushortcountry2ushortactiveWarsNativeParallelHashSet<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
country1ushortcountry2ushortcurrentTickintrelationsNativeParallelHashMap<ulong, RelationData>activeWarsNativeParallelHashSet<ulong>warsByCountryNativeParallelMultiHashMap<ushort, ushort>gameStateGameState