Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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;
                    }
                });
            }
        }
Esempio n. 9
0
        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;
            }
        }