private void ConvertList() { m_Center = new Point(-m_Min.X, -m_Min.Y); m_Width = (m_Max.X - m_Min.X) + 1; m_Height = (m_Max.Y - m_Min.Y) + 1; var tiles = new MTileList[m_Width][]; m_Tiles = new MTile[m_Width][][]; for (int x = 0; x < m_Width; ++x) { tiles[x] = new MTileList[m_Height]; m_Tiles[x] = new MTile[m_Height][]; for (int y = 0; y < m_Height; ++y) { tiles[x][y] = new MTileList(); } } for (int i = 0; i < m_SortedTiles.Length; ++i) { int xOffset = m_SortedTiles[i].m_OffsetX + m_Center.X; int yOffset = m_SortedTiles[i].m_OffsetY + m_Center.Y; tiles[xOffset][yOffset].Add( (m_SortedTiles[i].m_ItemID), (sbyte)m_SortedTiles[i].m_OffsetZ, (sbyte)m_SortedTiles[i].m_Flags, m_SortedTiles[i].m_Unk1); } m_Surface = 0; for (int x = 0; x < m_Width; ++x) { for (int y = 0; y < m_Height; ++y) { m_Tiles[x][y] = tiles[x][y].ToArray(); for (int i = 0; i < m_Tiles[x][y].Length; ++i) { m_Tiles[x][y][i].Solver = i; } if (m_Tiles[x][y].Length > 1) { Array.Sort(m_Tiles[x][y]); } if (m_Tiles[x][y].Length > 0) { ++m_Surface; } } } }
public int CompareTo(object x) { if (x == null) { return(1); } if (!(x is MTile)) { throw new ArgumentNullException(); } MTile a = (MTile)x; ItemData ourData = TileData.ItemTable[m_ID]; ItemData theirData = TileData.ItemTable[a.ID]; int ourTreshold = 0; if (ourData.Height > 0) { ++ourTreshold; } if (!ourData.Background) { ++ourTreshold; } int ourZ = Z; int theirTreshold = 0; if (theirData.Height > 0) { ++theirTreshold; } if (!theirData.Background) { ++theirTreshold; } int theirZ = a.Z; ourZ += ourTreshold; theirZ += theirTreshold; int res = ourZ - theirZ; if (res == 0) { res = ourTreshold - theirTreshold; } if (res == 0) { res = m_Solver - a.Solver; } return(res); }
private void ConvertList() { _center = new Point(-_min.X, -_min.Y); Width = (_max.X - _min.X) + 1; Height = (_max.Y - _min.Y) + 1; var tiles = new MTileList[Width][]; Tiles = new MTile[Width][][]; for (int x = 0; x < Width; ++x) { tiles[x] = new MTileList[Height]; Tiles[x] = new MTile[Height][]; for (int y = 0; y < Height; ++y) { tiles[x][y] = new MTileList(); } } for (int i = 0; i < SortedTiles.Length; ++i) { int xOffset = SortedTiles[i].m_OffsetX + _center.X; int yOffset = SortedTiles[i].m_OffsetY + _center.Y; tiles[xOffset][yOffset].Add(SortedTiles[i].m_ItemID, (sbyte)SortedTiles[i].m_OffsetZ, (sbyte)SortedTiles[i].m_Flags, SortedTiles[i].m_Unk1); } Surface = 0; for (int x = 0; x < Width; ++x) { for (int y = 0; y < Height; ++y) { Tiles[x][y] = tiles[x][y].ToArray(); for (int i = 0; i < Tiles[x][y].Length; ++i) { Tiles[x][y][i].Solver = i; } if (Tiles[x][y].Length > 1) { Array.Sort(Tiles[x][y]); } if (Tiles[x][y].Length > 0) { ++Surface; } } } }
public MTile[] ToArray() { var tiles = new MTile[Count]; if (m_Tiles.Count > 0) { m_Tiles.CopyTo(tiles); } m_Tiles.Clear(); return(tiles); }
private MultiComponentList() { Tiles = new MTile[0][][]; }
public void Add(MTile mtle) { m_Tiles.Add(mtle); }
private void ConvertList() { m_Center = new Point(-m_Min.X, -m_Min.Y); m_Width = (m_Max.X - m_Min.X) + 1; m_Height = (m_Max.Y - m_Min.Y) + 1; MTileList[][] tiles = new MTileList[m_Width][]; m_Tiles = new MTile[m_Width][][]; for (int x = 0; x < m_Width; ++x) { tiles[x] = new MTileList[m_Height]; m_Tiles[x] = new MTile[m_Height][]; for (int y = 0; y < m_Height; ++y) tiles[x][y] = new MTileList(); } for (int i = 0; i < m_SortedTiles.Length; ++i) { int xOffset = m_SortedTiles[i].m_OffsetX + m_Center.X; int yOffset = m_SortedTiles[i].m_OffsetY + m_Center.Y; tiles[xOffset][yOffset].Add((ushort)(m_SortedTiles[i].m_ItemID), (sbyte)m_SortedTiles[i].m_OffsetZ, (sbyte)m_SortedTiles[i].m_Flags, m_SortedTiles[i].m_Unk1); } m_Surface = 0; for (int x = 0; x < m_Width; ++x) { for (int y = 0; y < m_Height; ++y) { m_Tiles[x][y] = tiles[x][y].ToArray(); for (int i = 0; i < m_Tiles[x][y].Length; ++i) m_Tiles[x][y][i].Solver = i; if (m_Tiles[x][y].Length > 1) Array.Sort(m_Tiles[x][y]); if (m_Tiles[x][y].Length > 0) ++m_Surface; } } }
public MTile[] ToArray() { MTile[] tiles = new MTile[Count]; if (m_Tiles.Count > 0) m_Tiles.CopyTo(tiles); m_Tiles.Clear(); return tiles; }
public MTile[] ToArray() { var tiles = new MTile[Count]; if (m_Tiles.Count > 0) { m_Tiles.CopyTo(tiles); } m_Tiles.Clear(); return tiles; }