示例#1
0
        public Tile[] FiltraTile(Func<Tile, bool> condizione)
        {
            Tile[] tiles = new Tile[0];

            foreach (Tile t in _listaCaselle)
            {
                if (condizione(t))
                    tiles = Enumerable.Empty<Tile>().Concat(Enumerable.Repeat(t, 1)).ToArray();
            }

            return tiles;
        }
示例#2
0
 public int Tile2Id(Tile tile)
 {
     return _listaCaselle.IndexOf(tile);
 }
示例#3
0
        /// <summary>Fornisce la lista dei tile adiacenti a questo tile.</summary>
        public Tile[] TileAdiacenti(bool compresoTarget, bool compreseDiagonali)
        {
            Tile[] tiles = new Tile[9];
            int dir = 1, max = (int)Direzioni.Destra;

            if (compreseDiagonali) max = (int)Direzioni.BassoADestra;
            if (compresoTarget) dir = 0;

            while (dir <= max)
            {
                tiles[dir] = this + (Direzioni)(dir++);
            }
            return tiles;
        }
示例#4
0
 /// <summary>Calcola se questo tile è uno degli 8 vicini al tile argomento</summary><param name="compreseDiagonali">Se false, controlliamo solo in alto, in basso, a sin e a dx</param>
 public bool Adiacente(Tile centro, bool compreseDiagonali)
 {
     int max = compreseDiagonali ? (int)Direzioni.BassoADestra : (int)Direzioni.Destra;
     for (int dir = 1; dir <= max; dir++)
     {
         if (this.Equals(centro + (Direzioni)dir))
             return true;
     }
     return false;
 }
示例#5
0
 /// <summary>
 /// restituisce l'array con gli id delle caselle da percorrere per raggiungere il tile targetId
 /// </summary>
 public int[] PercorsoXCasella(Tile target)
 {
     if (target != null) return PercorsoXCasella(target.ID);
     else return new int[0];
 }
示例#6
0
 public int DistanzaCasella(Tile tile)
 {
     return PercorsoXCasella(tile).Length;
 }
示例#7
0
 /// <summary>
 /// Restituisce il vettore che rappresenta le coordinate in pixel dell'angolo superiore sinistro del Tile argomento
 /// </summary>
 /// <param name="tile">Casella o pianeta</param>
 /// <returns>L'angolo superiore sinistro (coordinate in Pixel)</returns>
 public Vector2 Tile2Pixel(Tile tile)
 {
     return id2Pixel(tile.ID);
 }