/// <summary> /// Inicializa uma nova instância de SectorReader. /// </summary> /// <param name="screen">A tela a ser associada.</param> /// <param name="sectors">Os setores a serem lidos.</param> /// <param name="tileWidth">A largura dos tiles.</param> /// <param name="tileHeight">A altura dos tiles.</param> /// <param name="length">Define o valor que representa simultaneamente a quantidade de linhas e de colunas de todos os setores.</param> public IsoTileSectorReader(Screen screen, IsoTileSector <T>[,] sectors, int tileWidth, int tileHeight, int length) : base(screen, tileWidth, tileHeight) { sectorsList = sectors; TileWidth = tileWidth; TileHeight = tileHeight; Length = length; }
protected override void Dispose(bool disposing) { if (disposed) { return; } if (disposing) { this.sectorsList = null; this.point_sector = null; this.total.Clear(); this.total = null; } disposed = true; base.Dispose(disposing); }
/// <summary> /// Lê o array contido nos setores e ordena as posições dos tiles. /// </summary> public override void Read() { //dimensões do array int d0 = sectorsList.GetLength(0); int d1 = sectorsList.GetLength(1); total = new List <T[]>(d0 * Length); for (int t = 0; t < total.Capacity; t++) { total.Add(null); } //Confere a linha for (int row = 0; row < d0; row++) { //Confiro a coluna for (int col = 0; col < d1; col++) { //busco o setor na linha e coluna selecionada IsoTileSector <T> s = sectorsList[row, col]; //recebo o mapa do setor T[,] _map = s.GetMap(); int lr = _map.GetLength(0); int lc = _map.GetLength(1); //confiro a linha e a coluna do mapa for (int sr = 0; sr < lr; sr++) { T[] numbers = new T[Length]; //faço a busca pelos números for (int sc = 0; sc < lc; sc++) { numbers[sc] = _map[sr, sc]; point_sector.Add(new Point(sr + (row * lr), sc + (col * lc)), s); } //insiro a linha no array total int ins = sr + (row * lr); T[] index = total[ins]; if (index == null) { total[ins] = numbers; } else { List <T> n = new List <T>(); n.AddRange(index); foreach (var j in numbers) { n.Add(j); } total[ins] = n.ToArray(); } } } } TotalMap = new T[total.Count, total[01].GetLength(0)]; for (int i = 0; i < total.Count; i++) { T[] row = total[i]; for (int j = 0; j < row.GetLength(0); j++) { TotalMap[i, j] = row[j]; } } ReadFinalMap(); }