using System.Collections.Generic;
public DatReader(string f)
public List<DatItem> ReadDatFile()
List<DatItem> Items = new List<DatItem>(7900);
for (int i = 0; i < 7899; i++)
Items[i].IsContainer = false;
Items[i].ReadWriteInfo = 0;
Items[i].IsFluidContainer = false;
Items[i].IsStackable = false;
Items[i].MultiType = false;
Items[i].Useable = false;
Items[i].IsNotMovable = false;
Items[i].AlwaysOnTop = false;
Items[i].IsGroundTile = false;
Items[i].IsPickupAble = false;
Items[i].Blocking = false;
Items[i].BlockPickupable = false;
Items[i].IsWalkable = false;
Items[i].IsDoorWithLock = false;
Items[i].CanDecay = false;
Items[i].HasExtraByte = false;
Items[i].IsField = false;
Items[i].IsDepot = false;
Items[i].MoreAlwaysOnTop = false;
Items[i].Useable2 = false;
FileStream stream = new FileStream(file, FileMode.Open, FileAccess.Read);
BinaryReader Reader = new BinaryReader(stream);
tbyte = Reader.ReadByte();
option = Reader.ReadByte();
Items[Id].IsGroundTile = true;
Items[Id].Speed = Reader.ReadByte();
if (Items[Id].Speed == 0)
Items[Id].Blocking = true;
Items[Id].MoreAlwaysOnTop = true;
Items[Id].AlwaysOnTop = true;
Items[Id].AlwaysOnTop = true;
Items[Id].IsWalkable = true;
Items[Id].IsContainer = true;
Items[Id].IsStackable = true;
Items[Id].Useable = true;
Items[Id].Useable2 = true;
Items[Id].ReadWriteInfo = 3;
Items[Id].ReadWriteInfo = 1;
Items[Id].IsFluidContainer = true;
Items[Id].MultiType = true;
Items[Id].Blocking = true;
Items[Id].IsNotMovable = true;
Items[Id].IsPickupAble = true;
Items[Id].BlockPickupable = false;
Items[Id].CanDecay = false;
option = Reader.ReadByte();
if (Items[Id].IsStackable || Items[Id].MultiType || Items[Id].IsFluidContainer)
Items[Id].HasExtraByte = true;
if (Items[Id].MoreAlwaysOnTop)
Items[Id].AlwaysOnTop = true;
if ((Id >= 0x4608 && Id <= 0x4F08) || (Id >= 0x5308 && Id <= 0x5A08))
Items[Id].IsField = true;
int Width = Reader.ReadByte();
int Height = Reader.ReadByte();
if (Width > 1 || Height > 1)
int BlendFrames = Reader.ReadByte();
int Xdiv = Reader.ReadByte();
int Ydiv = Reader.ReadByte();
int AnimCcount = Reader.ReadByte();
int Rare = Reader.ReadByte();
Reader.ReadBytes(Width * Height * BlendFrames * Xdiv * Ydiv * AnimCcount * Rare * 2);
catch (EndOfStreamException e)