コード例 #1
0
        public void GivenMovingBotCollidesWithDeadBot_WhenTick_ThenDeadBotIsRemovedFromWorld()
        {
            var deadBot  = FakeGameObjectProvider.GetBotAtDefault();
            var aliveBot = FakeGameObjectProvider.GetBigBotAt(new Position(19, 0));

            var handler = collisionHandlerResolver.ResolveHandler(deadBot, aliveBot);
            var result  = handler.ResolveCollision(deadBot, aliveBot);

            Assert.False(WorldStateService.GameObjectIsInWorldState(deadBot.Id));
            Assert.True(WorldStateService.GameObjectIsInWorldState(aliveBot.Id));
        }
コード例 #2
0
        public void GivenTwoBotsCollided_WhenTick_ThenSmallerBotIsRemovedFromWorld()
        {
            var bot1 = FakeGameObjectProvider.GetBotAt(new Position(0, 0));
            var bot2 = FakeGameObjectProvider.GetBigBotAt(new Position(19, 0));

            var handler = collisionHandlerResolver.ResolveHandler(bot2, bot1);
            var result  = handler.ResolveCollision(bot2, bot1);

            Assert.False(WorldStateService.GameObjectIsInWorldState(bot1.Id));
            Assert.True(WorldStateService.GameObjectIsInWorldState(bot2.Id));
            Assert.AreEqual(EngineConfigFake.Value.ScoreRates[GameObjectType.Player], bot2.Score);
        }
コード例 #3
0
        public void GivenTwoBotsCollided_WhenTick_ThenProcessingStepsStopEarly()
        {
            var bot1 = FakeGameObjectProvider.GetBotWithActions();
            var bot2 = FakeGameObjectProvider.GetBigBotAt(new Position(0, 15));

            bot1.IsMoving = true;
            bot2.IsMoving = true;

            Assert.DoesNotThrow(() => tickProcessingService.SimulateTick());
            Assert.False(WorldStateService.GameObjectIsInWorldState(bot1.Id));
            Assert.True(WorldStateService.GameObjectIsInWorldState(bot2.Id));
        }
コード例 #4
0
        public void GivenBotCollidedWithFood_WhenTick_ThenFoodRemovedFromWorld()
        {
            var food          = FakeGameObjectProvider.GetFoodAt(new Position(0, 0));
            var bot           = FakeGameObjectProvider.GetBotAt(new Position(8, 0));
            var originalSpeed = bot.Speed;

            var handler = collisionHandlerResolver.ResolveHandler(food, bot);
            var result  = handler.ResolveCollision(food, bot);

            Assert.False(WorldStateService.GameObjectIsInWorldState(food.Id));
            Assert.True(WorldStateService.GameObjectIsInWorldState(bot.Id));
            Assert.AreEqual(EngineConfigFake.Value.ScoreRates[GameObjectType.Food], bot.Score);
        }
コード例 #5
0
        public void GivenDeadBot_WithAfterburnerStarted_ThenRemoveFromWorldWhenSizeLessThan5()
        {
            SetupFakeWorld();
            var bot         = FakeGameObjectProvider.GetBotAtDefault();
            var firstAction = FakeGameObjectProvider.GetStartAfterburnerPlayerAction(bot.Id);

            bot.PendingActions = new List <PlayerAction>
            {
                firstAction
            };

            for (var j = 0; j < 6; j++)
            {
                Assert.DoesNotThrow(() => actionService.ApplyActionToBot(bot));
                Assert.DoesNotThrow(() => WorldStateService.ApplyAfterTickStateChanges());
            }

            Assert.AreEqual(4, bot.Size);
            Assert.False(WorldStateService.GameObjectIsInWorldState(bot.Id));
        }