public void GivenBotAndGasCloud_WhenResolveCollision_ReturnBotWithReducedSize() { WorldStateService.GenerateStartingWorld(); var state = WorldStateService.GetState(); List <GameObject> gasClouds = state.GasClouds; var gasCloud = gasClouds[0]; var bot = FakeGameObjectProvider.GetBotAt(gasCloud.Position); var handler = collisionHandlerResolver.ResolveHandler(gasCloud, bot); handler.ResolveCollision(gasCloud, bot); Assert.DoesNotThrow(() => WorldStateService.ApplyAfterTickStateChanges()); var activeEffect = WorldStateService.GetActiveEffectByType(bot.Id, Effects.GasCloud); var botAfter = WorldStateService.GetState().PlayerGameObjects.Find(g => g.Id == bot.Id); Assert.True(activeEffect != default); Assert.True(activeEffect.Effect == Effects.GasCloud); Assert.True(botAfter != default); Assert.True(botAfter.Effects == Effects.GasCloud); Assert.AreEqual(8, bot.Size); }
public void GivenBot_WithAfterburnerStarted_ThenStopAfterburner() { SetupFakeWorld(); var bot = FakeGameObjectProvider.GetBotAtDefault(); var firstAction = FakeGameObjectProvider.GetStartAfterburnerPlayerAction(bot.Id); bot.PendingActions = new List <PlayerAction> { firstAction }; Assert.DoesNotThrow(() => actionService.ApplyActionToBot(bot)); Assert.DoesNotThrow(() => WorldStateService.ApplyAfterTickStateChanges()); var secondAction = FakeGameObjectProvider.GetStopAfterburnerPlayerAction(bot.Id); bot.PendingActions = new List <PlayerAction> { secondAction }; Assert.DoesNotThrow(() => actionService.ApplyActionToBot(bot)); var activeEffect = WorldStateService.GetActiveEffectByType(bot.Id, Effects.Afterburner); Assert.True(activeEffect == default); Assert.AreEqual(9, bot.Size); Assert.AreEqual(23, bot.Speed); }
public void GivenBot_WithAfterburnerNotStarted_ThenStartAfterburner() { SetupFakeWorld(); var bot = FakeGameObjectProvider.GetBotAtDefault(); var firstAction = FakeGameObjectProvider.GetStartAfterburnerPlayerAction(bot.Id); bot.PendingActions = new List <PlayerAction> { firstAction }; Assert.DoesNotThrow(() => actionService.ApplyActionToBot(bot)); var activeEffect = WorldStateService.GetActiveEffectByType(bot.Id, Effects.Afterburner); var botAfter = WorldStateService.GetState().PlayerGameObjects.Find(g => g.Id == bot.Id); Assert.True(activeEffect != default); Assert.True(activeEffect.Bot.Size == 10); Assert.True(activeEffect.Bot.Speed == 40); Assert.True(botAfter != default); Assert.True(botAfter.Effects == Effects.Afterburner); Assert.DoesNotThrow(() => WorldStateService.ApplyAfterTickStateChanges()); Assert.True(activeEffect.Bot.Size == 9); Assert.True(activeEffect.Bot.Speed == 40); Assert.True(botAfter != default); Assert.True(botAfter.Effects == Effects.Afterburner); }
public void GivenBot_WithMovement_AndAfterburnerStarted_ThenStopAfterburnerAndNormalSpeedCorrect() { SetupFakeWorld(true, false); var bot = new BotObject { Id = Guid.NewGuid(), Size = 60, Position = new Position(0, 0), Speed = 4, GameObjectType = GameObjectType.Player }; WorldStateService.AddBotObject(bot); var firstAction = FakeGameObjectProvider.GetForwardPlayerAction(bot.Id); var secondAction = FakeGameObjectProvider.GetStartAfterburnerPlayerAction(bot.Id); var thirdAction = FakeGameObjectProvider.GetForwardPlayerAction(bot.Id); bot.PendingActions = new List <PlayerAction> { firstAction, secondAction, thirdAction }; Assert.DoesNotThrow(() => engineService.SimulateTickForBots(WorldStateService.GetPlayerBots()));; Assert.DoesNotThrow(() => WorldStateService.ApplyAfterTickStateChanges()); Assert.DoesNotThrow(() => engineService.SimulateTickForBots(WorldStateService.GetPlayerBots()));; Assert.DoesNotThrow(() => WorldStateService.ApplyAfterTickStateChanges()); var activeEffect = WorldStateService.GetActiveEffectByType(bot.Id, Effects.Afterburner); Assert.AreEqual(59, bot.Size); Assert.AreEqual(8, bot.Speed); Assert.AreEqual(0, bot.Position.Y); Assert.AreEqual(12, bot.Position.X); Assert.DoesNotThrow(() => engineService.SimulateTickForBots(WorldStateService.GetPlayerBots())); Assert.DoesNotThrow(() => WorldStateService.ApplyAfterTickStateChanges()); Assert.AreEqual(58, bot.Size); Assert.AreEqual(8, bot.Speed); Assert.AreEqual(0, bot.Position.Y); Assert.AreEqual(20, bot.Position.X); }
public void GivenBotAndSuperfood_WhenResolveCollision_ReturnBotWithActiveEffects() { SetupFakeWorld(true, false); FakeGameObjectProvider.GetSuperfoodAt(new Position(8, 0)); FakeGameObjectProvider.GetFoodAt(new Position(80, 0)); var bot = FakeGameObjectProvider.GetBotAt(new Position(0, 0)); var firstAction = FakeGameObjectProvider.GetForwardPlayerAction(bot.Id); bot.PendingActions = new List <PlayerAction> { firstAction, }; Assert.DoesNotThrow(() => engineService.SimulateTickForBots(WorldStateService.GetPlayerBots()));; Assert.DoesNotThrow(() => WorldStateService.ApplyAfterTickStateChanges()); var activeEffect = WorldStateService.GetActiveEffectByType(bot.Id, Effects.Superfood); var botAfter = WorldStateService.GetState().PlayerGameObjects.Find(g => g.Id == bot.Id); Assert.True(activeEffect != default); Assert.True(activeEffect.Effect == Effects.Superfood); Assert.True(botAfter != default); Assert.True(botAfter.Effects == Effects.Superfood); Assert.AreEqual(11, bot.Size); Assert.DoesNotThrow(() => engineService.SimulateTickForBots(WorldStateService.GetPlayerBots()));; Assert.DoesNotThrow(() => WorldStateService.ApplyAfterTickStateChanges()); Assert.DoesNotThrow(() => engineService.SimulateTickForBots(WorldStateService.GetPlayerBots()));; Assert.DoesNotThrow(() => WorldStateService.ApplyAfterTickStateChanges()); Assert.DoesNotThrow(() => engineService.SimulateTickForBots(WorldStateService.GetPlayerBots()));; Assert.DoesNotThrow(() => WorldStateService.ApplyAfterTickStateChanges()); Assert.DoesNotThrow(() => engineService.SimulateTickForBots(WorldStateService.GetPlayerBots()));; Assert.DoesNotThrow(() => WorldStateService.ApplyAfterTickStateChanges()); Assert.DoesNotThrow(() => engineService.SimulateTickForBots(WorldStateService.GetPlayerBots()));; Assert.DoesNotThrow(() => WorldStateService.ApplyAfterTickStateChanges()); activeEffect = WorldStateService.GetActiveEffectByType(bot.Id, Effects.Superfood); botAfter = WorldStateService.GetState().PlayerGameObjects.Find(g => g.Id == bot.Id); Assert.True(activeEffect == null); Assert.True(botAfter != default); Assert.AreEqual(13, bot.Size); }
public void GivenBotAndAsteroidField_WhenResolveCollision_ReturnBotWithReducedSize() { WorldStateService.GenerateStartingWorld(); var state = WorldStateService.GetState(); List <GameObject> asteroidFields = state.AsteroidFields; var asteroidField = asteroidFields[0]; var bot = FakeGameObjectProvider.GetBotAt(asteroidField.Position); var handler = collisionHandlerResolver.ResolveHandler(asteroidField, bot); handler.ResolveCollision(asteroidField, bot); Assert.DoesNotThrow(() => WorldStateService.ApplyAfterTickStateChanges()); var activeEffect = WorldStateService.GetActiveEffectByType(bot.Id, Effects.AsteroidField); Assert.True(activeEffect != default); Assert.AreEqual(19, bot.Speed); }
public void GivenBotAndSuperfood_WhenResolveCollision_ReturnBotWithActiveEffects() { WorldStateService.GenerateStartingWorld(); var state = WorldStateService.GetState(); var superfood = FakeGameObjectProvider.GetSuperfoodAt(new Position(0, 10)); var bot = FakeGameObjectProvider.GetBotAt(superfood.Position); var handler = collisionHandlerResolver.ResolveHandler(superfood, bot); handler.ResolveCollision(superfood, bot); Assert.DoesNotThrow(() => WorldStateService.ApplyAfterTickStateChanges()); var activeEffect = WorldStateService.GetActiveEffectByType(bot.Id, Effects.Superfood); var botAfter = WorldStateService.GetState().PlayerGameObjects.Find(g => g.Id == bot.Id); Assert.True(activeEffect != default); Assert.True(activeEffect.Effect == Effects.Superfood); Assert.True(botAfter != default); Assert.True(botAfter.Effects == Effects.Superfood); Assert.AreEqual(11, bot.Size); }