static public ControllerMockSetupContext SetupSpoilsOfWarAdditionalPlayer(this ControllerMockSetupContext setupContext, Guid combatId, Guid attackingRegion, UInt32 attackingTroops) { DummyCombat combat = setupContext.ControllerMock.WorldRepository.SpoilsOfWar[combatId]; combat.SetupAddArmy(attackingRegion, setupContext.ControllerMock.RegionRepository.RegionData[attackingRegion].OwnerId, CombatArmyMode.Attacking, attackingTroops); return(setupContext); }
public void AddArmyToCombat(IBatchOperationHandle batchOperationHandleInterface, ICombat combat, IEnumerable <ICombatArmy> armies) { DummyCombat dummyCombat = combat as DummyCombat; foreach (ICombatArmy army in armies) { dummyCombat.SetupAddArmy(army.OriginRegionId, army.OwnerUserId, army.ArmyMode, army.NumberOfTroops); } }
static private ControllerMockSetupContext SetupInvasionPendingBorderClash(this ControllerMockSetupContext setupContext, Guid defendingRegion, UInt32 defendingTroops) { Guid combatId = Guid.NewGuid(); DummyCombat combat = new DummyCombat(combatId, CombatType.Invasion); combat.SetupAddArmy(defendingRegion, setupContext.ControllerMock.RegionRepository.RegionData[defendingRegion].OwnerId, CombatArmyMode.Defending, defendingTroops); setupContext.ControllerMock.WorldRepository.Invasions[combatId] = combat; setupContext.ControllerMock.WorldRepository.AddToCombatLookup(combat); return(setupContext); }
static public ControllerMockSetupContext SetupInvasion(this ControllerMockSetupContext setupContext, Guid defendingRegion, Guid attackingRegion, UInt32 attackingTroops, out Guid combatId) { combatId = Guid.NewGuid(); DummyCombat combat = new DummyCombat(combatId, CombatType.Invasion); combat.SetupAddArmy(attackingRegion, setupContext.ControllerMock.RegionRepository.RegionData[attackingRegion].OwnerId, CombatArmyMode.Attacking, attackingTroops); combat.SetupAddArmy(defendingRegion, setupContext.ControllerMock.RegionRepository.RegionData[defendingRegion].OwnerId, CombatArmyMode.Defending, setupContext.ControllerMock.RegionRepository.RegionData[defendingRegion].TroopCount); setupContext.ControllerMock.WorldRepository.Invasions[combatId] = combat; setupContext.ControllerMock.WorldRepository.AddToCombatLookup(combat); return(setupContext); }
static private ControllerMockSetupContext SetupBorderClashWithoutPendingInvasions(this ControllerMockSetupContext setupContext, Guid attackingRegion, UInt32 attackingTroops, Guid secondAttackingRegion, UInt32 secondAttackingTroops, out Guid combatId) { combatId = Guid.NewGuid(); DummyCombat combat = new DummyCombat(combatId, CombatType.BorderClash); combat.SetupAddArmy(attackingRegion, setupContext.ControllerMock.RegionRepository.RegionData[attackingRegion].OwnerId, CombatArmyMode.Attacking, attackingTroops); combat.SetupAddArmy(secondAttackingRegion, setupContext.ControllerMock.RegionRepository.RegionData[secondAttackingRegion].OwnerId, CombatArmyMode.Attacking, secondAttackingTroops); setupContext.ControllerMock.WorldRepository.BorderClashes[combatId] = combat; setupContext.ControllerMock.WorldRepository.AddToCombatLookup(combat); return(setupContext); }
static public ControllerMockSetupContext SetupSpoilsOfWar(this ControllerMockSetupContext setupContext, Guid targetRegion, Guid attackingRegion, UInt32 attackingTroops, Guid secondAttackingRegion, UInt32 secondAttackingTroops, out Guid combatId) { combatId = Guid.NewGuid(); DummyCombat combat = new DummyCombat(combatId, CombatType.SpoilsOfWar); combat.SetupAddArmy(attackingRegion, setupContext.ControllerMock.RegionRepository.RegionData[attackingRegion].OwnerId, CombatArmyMode.Attacking, attackingTroops); combat.SetupAddArmy(secondAttackingRegion, setupContext.ControllerMock.RegionRepository.RegionData[secondAttackingRegion].OwnerId, CombatArmyMode.Attacking, secondAttackingTroops); combat.SetupAddArmy(targetRegion, setupContext.ControllerMock.RegionRepository.RegionData[targetRegion].OwnerId, CombatArmyMode.Defending, 0); setupContext.ControllerMock.WorldRepository.SpoilsOfWar[combatId] = combat; setupContext.ControllerMock.WorldRepository.AddToCombatLookup(combat); return(setupContext); }
static public ControllerMockSetupContext SetupMassInvasionWithBorderClash(this ControllerMockSetupContext setupContext, Guid targetRegion, UInt32 counterAttackingTroops, Guid attackingRegion, UInt32 attackingTroops, Guid counterAttackedRegion, UInt32 secondAttackingTroops, out Guid borderClashCombatId, out Guid massInvasionCombatId) { massInvasionCombatId = Guid.NewGuid(); DummyCombat combat = new DummyCombat(massInvasionCombatId, CombatType.MassInvasion); combat.SetupAddArmy(attackingRegion, setupContext.ControllerMock.RegionRepository.RegionData[attackingRegion].OwnerId, CombatArmyMode.Attacking, attackingTroops); combat.SetupAddArmy(targetRegion, setupContext.ControllerMock.RegionRepository.RegionData[targetRegion].OwnerId, CombatArmyMode.Defending, setupContext.ControllerMock.RegionRepository.RegionData[targetRegion].TroopCount - counterAttackingTroops); setupContext.ControllerMock.WorldRepository.MassInvasions[massInvasionCombatId] = combat; setupContext.ControllerMock.WorldRepository.AddToCombatLookup(combat); SetupBorderClashWithoutPendingInvasions(setupContext, targetRegion, counterAttackingTroops, counterAttackedRegion, secondAttackingTroops, out borderClashCombatId); SetupInvasionPendingBorderClash(setupContext, counterAttackedRegion, setupContext.ControllerMock.RegionRepository.RegionData[counterAttackedRegion].TroopCount - secondAttackingTroops); return(setupContext); }
public void AddCombat(IBatchOperationHandle batchOperationHandleInterface, Guid sessionId, UInt32 round, IEnumerable <Tuple <CombatType, IEnumerable <ICombatArmy> > > armies) { List <Guid> createdCombatIds = new List <Guid>(); foreach (var combatData in armies) { Guid combatId = Guid.NewGuid(); DummyCombat combat = new DummyCombat(combatId, combatData.Item1); createdCombatIds.Add(combatId); foreach (ICombatArmy army in combatData.Item2) { combat.SetupAddArmy(army.OriginRegionId, army.OwnerUserId, army.ArmyMode, army.NumberOfTroops); } DummyBatchOperationHandle batchOperationHandle = batchOperationHandleInterface as DummyBatchOperationHandle; batchOperationHandle.QueuedOperations.Add(() => { // Add to lookup AddToCombatLookup(combat); // Add to typed storage switch (combat.ResolutionType) { case CombatType.BorderClash: BorderClashes[combatId] = combat; break; case CombatType.MassInvasion: MassInvasions[combatId] = combat; break; case CombatType.Invasion: Invasions[combatId] = combat; break; case CombatType.SpoilsOfWar: SpoilsOfWar[combatId] = combat; break; } }); } }
public void AddToCombatLookup(DummyCombat combat) { switch (combat.ResolutionType) { case CombatType.BorderClash: // Never need to look up border clash by target region break; default: // Find the defending side and add this combat var defendingArmy = combat.InvolvedArmies.Where(army => army.ArmyMode == CombatArmyMode.Defending).First(); if (!TargetRegionToCombatLookup.ContainsKey(defendingArmy.OriginRegionId)) { TargetRegionToCombatLookup[defendingArmy.OriginRegionId] = new List <DummyCombat>(); } TargetRegionToCombatLookup[defendingArmy.OriginRegionId].Add(combat); break; } }