servuo/Server/TileList.cs
VitaNex f840e50340 Updated .editorconfig file with advanced configuration settings that will help maintain user code style and best practices with most IDE's.
Complete core housekeeping operation using "Profile 1" with new .editorconfig settings.
2021-01-15 12:51:10 -08:00

74 lines
No EOL
1.3 KiB
C#

namespace Server
{
public class TileList
{
private StaticTile[] m_Tiles;
private int m_Count;
public TileList()
{
m_Tiles = new StaticTile[8];
m_Count = 0;
}
public int Count => m_Count;
public void AddRange(StaticTile[] tiles)
{
if ((m_Count + tiles.Length) > m_Tiles.Length)
{
var old = m_Tiles;
m_Tiles = new StaticTile[(m_Count + tiles.Length) * 2];
for (var i = 0; i < old.Length; ++i)
{
m_Tiles[i] = old[i];
}
}
for (var i = 0; i < tiles.Length; ++i)
{
m_Tiles[m_Count++] = tiles[i];
}
}
public void Add(ushort id, sbyte z)
{
if ((m_Count + 1) > m_Tiles.Length)
{
var old = m_Tiles;
m_Tiles = new StaticTile[old.Length * 2];
for (var i = 0; i < old.Length; ++i)
{
m_Tiles[i] = old[i];
}
}
m_Tiles[m_Count].m_ID = id;
m_Tiles[m_Count].m_Z = z;
++m_Count;
}
private static readonly StaticTile[] m_EmptyTiles = new StaticTile[0];
public StaticTile[] ToArray()
{
if (m_Count == 0)
{
return m_EmptyTiles;
}
var tiles = new StaticTile[m_Count];
for (var i = 0; i < m_Count; ++i)
{
tiles[i] = m_Tiles[i];
}
m_Count = 0;
return tiles;
}
}
}