public void BattleSco3() { var battleBehavior = new BattleBehaviorScoOriginal(OutputHelper.ToLogger <IBattleBehavior>()); int attackerCount = 1000; var attackersSingle = new List <BtlUnit> { new BtlUnit { UnitDefId = Id.UnitDef("unit1"), Hitpoints = 10, Attack = 1, Defense = 0, Count = attackerCount } }; // same number of units as attackersSingle, but split up in multiple units var attackersMulti = new List <BtlUnit>( Enumerable.Repeat <BtlUnit>(new BtlUnit { UnitDefId = Id.UnitDef("unit1"), Hitpoints = 10, Attack = 1, Defense = 0, Count = 1 }, attackerCount) ); var defenders = new List <BtlUnit> { new BtlUnit { UnitDefId = Id.UnitDef("unit1"), Hitpoints = 1000, Attack = 0, Defense = 100, Count = 10 } }; var result1 = battleBehavior.CalculateResult(attackersSingle, defenders); Assert.Equal(5, result1.DefendingUnitsDestroyed.Sum(x => x.Count)); Assert.Equal(550, result1.AttackingUnitsDestroyed.Sum(x => x.Count)); // should yield the same result var result2 = battleBehavior.CalculateResult(attackersMulti, defenders); Assert.Equal(5, result2.DefendingUnitsDestroyed.Sum(x => x.Count)); Assert.Equal(550, result2.AttackingUnitsDestroyed.Sum(x => x.Count)); }
public TestGame() { LoggerFactory = new Microsoft.Extensions.Logging.Abstractions.NullLoggerFactory(); WorldStateFactory = new TestWorldStateFactory(); World = WorldStateFactory.CreateDevWorldState().ToMutable(); GameDef = new TestGameDefFactory().CreateGameDef(); ScoreRepository = new ScoreRepository(GameDef, World); PlayerRepository = new PlayerRepository(World, ScoreRepository); PlayerRepositoryWrite = new PlayerRepositoryWrite(World); ResourceRepository = new ResourceRepository(World, GameDef); ResourceRepositoryWrite = new ResourceRepositoryWrite(World, ResourceRepository); ActionQueueRepository = new ActionQueueRepository(World); AssetRepository = new AssetRepository(World, PlayerRepository, ActionQueueRepository); AssetRepositoryWrite = new AssetRepositoryWrite(LoggerFactory.CreateLogger <AssetRepositoryWrite>(), World, AssetRepository, ResourceRepository, ResourceRepositoryWrite, ActionQueueRepository, GameDef); UnitRepository = new UnitRepository(World, GameDef, PlayerRepository, AssetRepository); BattleBehavior = new BattleBehaviorScoOriginal(LoggerFactory.CreateLogger <IBattleBehavior>()); UnitRepositoryWrite = new UnitRepositoryWrite(LoggerFactory.CreateLogger <UnitRepositoryWrite>(), World, GameDef, UnitRepository, ResourceRepositoryWrite, PlayerRepository, BattleBehavior); var services = new ServiceCollection(); services.AddSingleton <IGameTickModule>(new ActionQueueExecutor(AssetRepositoryWrite)); services.AddSingleton <IGameTickModule>(new ResourceGrowthSco(LoggerFactory.CreateLogger <ResourceGrowthSco>(), GameDef, ResourceRepository, ResourceRepositoryWrite, AssetRepository, UnitRepository)); GameTickModuleRegistry = new GameTickModuleRegistry(LoggerFactory.CreateLogger <GameTickModuleRegistry>(), services.BuildServiceProvider(), GameDef); TickEngine = new GameTickEngine(LoggerFactory.CreateLogger <GameTickEngine>(), World, GameDef, GameTickModuleRegistry, PlayerRepositoryWrite); }
public void BattleSco2() { var battleBehavior = new BattleBehaviorScoOriginal(OutputHelper.ToLogger <IBattleBehavior>()); var attackers = new List <BtlUnit> { new BtlUnit { UnitDefId = Id.UnitDef("unit1"), Hitpoints = 100, Attack = 20, Defense = 10, Count = 10 } }; var defenders = new List <BtlUnit> { new BtlUnit { UnitDefId = Id.UnitDef("unit1"), Hitpoints = 100, Attack = 10, Defense = 10, Count = 10 } }; var result = battleBehavior.CalculateResult(attackers, defenders); Assert.Equal(10, result.DefendingUnitsDestroyed.Sum(x => x.Count)); Assert.Equal(2, result.AttackingUnitsDestroyed.Sum(x => x.Count)); }
public void BattleScoMarineVsSiegeTanks() { var battleBehavior = new BattleBehaviorScoOriginal(OutputHelper.ToLogger <IBattleBehavior>()); var attackers = new List <BtlUnit> { new BtlUnit { UnitDefId = Id.UnitDef("spacemarine"), Hitpoints = 60, Attack = 2, Defense = 4, Count = 100 } }; var defenders = new List <BtlUnit> { new BtlUnit { UnitDefId = Id.UnitDef("siegetank"), Hitpoints = 130, Attack = 10, Defense = 40, Count = 3 } }; var result = battleBehavior.CalculateResult(attackers, defenders); Assert.Equal(3, result.DefendingUnitsDestroyed.Sum(x => x.Count)); Assert.Equal(1, result.AttackingUnitsDestroyed.Sum(x => x.Count)); }