public static List<MultiComponentList.MultiTileEntry> RebuildTiles(MultiComponentList.MultiTileEntry[] tiles)
{
List<MultiComponentList.MultiTileEntry> newtiles = new List<MultiComponentList.MultiTileEntry>();
newtiles.AddRange(tiles);
if (newtiles[0].m_OffsetX == 0 && newtiles[0].m_OffsetY == 0 && newtiles[0].m_OffsetZ == 0) // found a centeritem
{
if (newtiles[0].m_ItemID != 0x1) // its a "good" one
{
for (int j = newtiles.Count - 1; j >= 0; --j) // remove all invis items
{
if (newtiles[j].m_ItemID == 0x1)
newtiles.RemoveAt(j);
}
return newtiles;
}
else // a bad one
{
for (int i = 1; i < newtiles.Count; ++i) // do we have a better one?
{
if (newtiles[i].m_OffsetX == 0 && newtiles[i].m_OffsetY == 0
&& newtiles[i].m_ItemID != 0x1 && newtiles[i].m_OffsetZ == 0 )
{
MultiComponentList.MultiTileEntry centeritem = newtiles[i];
newtiles.RemoveAt(i); // jep so save it
for (int j = newtiles.Count-1; j >= 0; --j) // and remove all invis
{
if (newtiles[j].m_ItemID == 0x1)
newtiles.RemoveAt(j);
}
newtiles.Insert(0, centeritem);
return newtiles;
}
}
for (int j = newtiles.Count-1; j >= 1; --j) // nothing found so remove all invis exept the first
{
if (newtiles[j].m_ItemID == 0x1)
newtiles.RemoveAt(j);
}
return newtiles;
}
}
for (int i = 0; i < newtiles.Count; ++i) // is there a good one
{
if (newtiles[i].m_OffsetX == 0 && newtiles[i].m_OffsetY == 0
&& newtiles[i].m_ItemID != 0x1 && newtiles[i].m_OffsetZ == 0)
{
MultiComponentList.MultiTileEntry centeritem = newtiles[i];
newtiles.RemoveAt(i); // store it
for (int j = newtiles.Count-1; j >= 0; --j) // remove all invis
{
if (newtiles[j].m_ItemID == 0x1)
newtiles.RemoveAt(j);
}
newtiles.Insert(0, centeritem);
return newtiles;
}
}
for (int j = newtiles.Count-1; j >= 0; --j) // nothing found so remove all invis
{
if (newtiles[j].m_ItemID == 0x1)
newtiles.RemoveAt(j);
}
MultiComponentList.MultiTileEntry invisitem = new MultiComponentList.MultiTileEntry();
invisitem.m_ItemID = 0x1; // and create a new invis
invisitem.m_OffsetX = 0;
invisitem.m_OffsetY = 0;
invisitem.m_OffsetZ = 0;
invisitem.m_Flags = 0;
invisitem.m_Unk1 = 0;
newtiles.Insert(0, invisitem);
return newtiles;
}