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)); }
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] }); }
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)); } }