public void CombatHandler_PlayerFightNpc_NpcDies() { var player = new Player(new Position(), new Stats(100, 10, 1), "player", 0); var npc = new HostileNPC(new Position(), new Stats(1, 1, 1), new StandStillMovementStrategy(), "enemy", 0); _combatHandler.Fight(player, npc, layer); Assert.IsFalse(npc.Alive); }
private void MoveCharacter(ICharacter movingCharacter, IPosition targetPosition, ILayer layer) { //Attempt to move character, will return false if tile is not walkable or is already occupied if (!_movement.MoveCharacter(movingCharacter.Position, targetPosition, layer)) { //Moving didn't work, find out if failure was because it was occupied ICharacter characterOnTile = layer.GetCharacter(targetPosition); if (characterOnTile != null) { _combatHandler.Fight(movingCharacter, characterOnTile, layer); // Try to move again will succed if opponent is dead _movement.MoveCharacter(movingCharacter.Position, targetPosition, layer); } } }