Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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));
        }