using System.Text.Json.Serialization; namespace LittleTown.Core; /// /// Represente un plateau de jeu dans un match /// Le plateau de littleTown est constitué 9 X 6 cases /// Chaque case est a un type et peut ou pas contenir un batiment /// /// public class Board { /// Nombre de colonne dans le plateau public int Width { get; init; } /// Nombre de rangée dans le plateau public int Height { get; init; } [JsonInclude] private Tile[] Tiles { get; init; } = new Tile[1]; /// /// Permet de récupéré une tile sur le plateau, le 0,0 étant le bas gauche du plateau, x sur la largeur et y la hauteur /// /// la colonne de la tile partant de la gauche a 0 /// ligne de la tile partant du bas a 0 /// la tile public Tile? GetTile(int x, int y) { if (x < 0 || x >= Width || y < 0 || y >= Height) return null; return Tiles[x + y * Width]; } /// Permet de recuperer la liste des tiles autour de la position en parametre /// la colonne au centre de la zone /// la rangée du centre de la zone /// une liste des tiles contenant entre 3(coin) et 8(centre) tiles public ICollection GetArea(int x, int y) { List result = new List(); for (int ix = -1; ix <= 1; ix++) { for (int iy = -1; iy <= 1; iy++) { if (iy != 0 || ix != 0) { Tile? t = GetTile(x + ix, y + iy); if (null != t) { result.Add((Tile)t); } } } } return result; } }