private IEnumerable <string> GetRoomLines(Room room, YoloTeam team) { var roomLines = new List <string>(); for (int h = 0; h < room.Size.Height; h++) { var stringBuilder = new StringBuilder(); for (int w = 0; w < room.Size.Width; w++) { var currentTilePosition = new Position(w, h); if (currentTilePosition.Equals(team.Position)) { stringBuilder.Append(_consolePresentationConfiguration.TeamCharacter); } else if (room.Monsters.Any(monster => monster.Position.Equals(currentTilePosition))) { stringBuilder.Append(_consolePresentationConfiguration.MonsterCharacter); } else if (room.Tiles[currentTilePosition.X, currentTilePosition.Y].HasShrine) { stringBuilder.Append(_consolePresentationConfiguration.ShrineCharacter); } else { stringBuilder.Append(_consolePresentationConfiguration.GetTileCharacter(room.Tiles[w, h])); } } roomLines.Add(CenterHorizontally(stringBuilder.ToString(), _displaySize.Width - 2)); } return(roomLines); }
public Engine(Presentation presentation, Logger logger, Map map, YoloTeam yoloTeam) { Map = map; _presentation = presentation; _logger = logger; _yoloTeam = yoloTeam; InitializeGame(); }
private void InitializeGame() { Map = MapFactory.GenerateRandomMap(); _room = Map.GetRandomStartingRoom(); _yoloTeam = new YoloTeam(_room.StartingPosition); _worldRepresentation = new WorldRepresentation(_room, _yoloTeam); _presentation.Draw(_worldRepresentation); }
private static YoloTeam GetDamagedYoloTeam() { var yoloTeam = new YoloTeam(10); yoloTeam.Take(new Damage { Hitpoints = 4 }); return(yoloTeam); }
public void ShouldPlaceYoloTeamAtRoomStartingPosition() { // given var startingPosition = new Position(1, 1); var room = RoomFactory.CreateEmptyRoom(new Size(4, 4), startingPosition); // when var team = new YoloTeam(room.StartingPosition); // then Assert.That(team.Position, Is.EqualTo(startingPosition)); }
public void ShouldMoveInRoomWhenPossible() { // given var room = RoomFactory.CreateEmptyRoom(new Size(4, 4), new Position(1, 1)); var team = new YoloTeam(room.StartingPosition); // when team.Move(MovementOffsets.RightDown); // then Assert.That(team.Position, Is.EqualTo(new Position(2, 2))); }
public void ShouldNotExceedBaseHitpointsWhenHealing() { //given const int teamMaxHitpoints = 10; var yoloTeam = new YoloTeam(StartingPosition, teamMaxHitpoints); yoloTeam.Take(new Damage { Hitpoints = 2 }); const int hitpointsToHeal = 4; //when yoloTeam.Heal(hitpointsToHeal); //then Assert.That(yoloTeam.Hitpoints, Is.EqualTo(teamMaxHitpoints)); }
public void ShouldHealSpecifiedNumberOfHitpoints() { //given const int teamMaxHitpoints = 10; var yoloTeam = new YoloTeam(StartingPosition, teamMaxHitpoints); yoloTeam.Take(new Damage { Hitpoints = 2 }); var hitpointsWhenHealing = yoloTeam.Hitpoints; const int hitpointsToHeal = 1; //when yoloTeam.Heal(hitpointsToHeal); //then Assert.That(yoloTeam.Hitpoints, Is.EqualTo(hitpointsWhenHealing + hitpointsToHeal)); }
public WorldRepresentation(Room room, YoloTeam team) { _room = room; _team = team; }