コード例 #1
0
        public void ApplyDamage(DeltaMetadata deltaMetadata, EmpireBorderView empireBorderView, double empireDamage, double borderingEmpireDamage)
        {
            var empireDeltas = empireBorderView.EmpireSystems.Select(x => new Delta <double>
            {
                DeltaType    = DeltaType.SystemDevelopment,
                SimulationId = deltaMetadata.SimulationId,
                Tick         = deltaMetadata.Tick,
                ReferenceId  = x.Id,
                Value        = empireDamage
            });
            var borderingDeltas = empireBorderView.BorderingEmpireSystems.Select(x => new Delta <double>
            {
                DeltaType    = DeltaType.SystemDevelopment,
                SimulationId = deltaMetadata.SimulationId,
                Tick         = deltaMetadata.Tick,
                ReferenceId  = x.Id,
                Value        = borderingEmpireDamage
            });

            _starSystemRepository.ApplyDamage(empireDeltas.Concat(borderingDeltas));
        }
コード例 #2
0
        public RunWar()
        {
            _militarySimulator = new MilitarySimulator(
                _militaryCalculator.Object,
                _warRepository.Object,
                _economicSimulator.Object,
                _empireRepository.Object);

            _warRepository.Setup(x => x.GetWars(It.IsAny <ObjectId>()))
            .Returns(new War[] { new War {
                                     AttackerId = _attackerId, DefenderId = _defenderId
                                 } });

            var view = new EmpireBorderView
            {
                Empire = new Empire {
                    Id = _attackerId
                },
                BorderingEmpire = new Empire {
                    Id = _defenderId
                },
                EmpireSystems = new StarSystem[] { new StarSystem {
                                                       Id = _attackerSystemId
                                                   } },
                BorderingEmpireSystems = new StarSystem[] { new StarSystem {
                                                                Id = _defenderSystemId
                                                            } }
            };

            _empireRepository.Setup(x => x.GetEmpireBorderView(_attackerId, _defenderId))
            .Returns(view);

            _militaryCalculator.Setup(x => x.Combat(It.IsAny <Empire>(), It.IsAny <Empire>()))
            .Returns(new CombatResult(It.IsAny <double>(), It.IsAny <double>(), It.IsAny <double>(), It.IsAny <double>(), It.IsAny <TerritoryGain>()));

            _empireRepository.Setup(x => x.GetById(It.IsAny <ObjectId>()))
            .Returns(new Empire {
                StarSystemsIds = new ObjectId[0]
            });
        }
コード例 #3
0
 private void SystemTransfer(DeltaMetadata deltaMetadata, TerritoryGain territory, EmpireBorderView empireBorderView)
 {
     if (territory == TerritoryGain.Attacker)
     {
         _empireRepository.TransferSystems(
             deltaMetadata,
             empireBorderView.BorderingEmpire.Id,
             empireBorderView.Empire.Id,
             empireBorderView.BorderingEmpireSystems.Select(x => x.Id));
     }
     else if (territory == TerritoryGain.Defender)
     {
         _empireRepository.TransferSystems(
             deltaMetadata,
             empireBorderView.Empire.Id,
             empireBorderView.BorderingEmpire.Id,
             empireBorderView.EmpireSystems.Select(x => x.Id));
     }
 }