public TileMatrix(InstallLocation install, int fileIndex, int mapID, int width, int height) { _width = width; _height = height; _blockWidth = width >> 3; _blockHeight = height >> 3; if (fileIndex != 0x7F) { var mapPath = install.GetPath("map{0}.mul", fileIndex); if (File.Exists(mapPath)) { _map = new FileStream(mapPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); } else { mapPath = install.GetPath("map{0}LegacyMUL.uop", fileIndex); if (File.Exists(mapPath)) { _map = new FileStream(mapPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); _mapIndex = new UOPIndex(_map); } } var indexPath = install.GetPath("staidx{0}.mul", fileIndex); if (File.Exists(indexPath)) { _fileIndex = new FileStream(indexPath, FileMode.Open, FileAccess.Read, FileShare.Read); _reader = new BinaryReader(_fileIndex); } var staticsPath = install.GetPath("statics{0}.mul", fileIndex); if (File.Exists(staticsPath)) { _staticsStream = new FileStream(staticsPath, FileMode.Open, FileAccess.Read, FileShare.Read); } } _emptyStaticBlock = new HuedTile[8][][]; for (var i = 0; i < 8; ++i) { _emptyStaticBlock[i] = new HuedTile[8][]; for (var j = 0; j < 8; ++j) { _emptyStaticBlock[i][j] = new HuedTile[0]; } } _invalidLandBlock = new Tile[196]; }
public TileMatrix(InstallLocation install, int fileIndex, int mapID, int width, int height) { _install = install; _width = width; _height = height; _blockWidth = width >> 3; _blockHeight = height >> 3; if (fileIndex != 0x7F) { string mapPath = install.GetPath("map{0}.mul", fileIndex); string indexPath = install.GetPath("staidx{0}.mul", fileIndex); string staticsPath = install.GetPath("statics{0}.mul", fileIndex); if (!File.Exists(mapPath)) { mapPath = install.GetPath("map{0}LegacyMUL.uop", fileIndex); } _map = new FileStream(mapPath, FileMode.Open, FileAccess.Read, FileShare.Read); _fileIndex = new FileStream(indexPath, FileMode.Open, FileAccess.Read, FileShare.Read); _staticsStream = new FileStream(staticsPath, FileMode.Open, FileAccess.Read, FileShare.Read); _reader = new BinaryReader(_fileIndex); } _emptyStaticBlock = new HuedTile[8][][]; for (int i = 0; i < 8; ++i) { _emptyStaticBlock[i] = new HuedTile[8][]; for (int j = 0; j < 8; ++j) { _emptyStaticBlock[i][j] = new HuedTile[0]; } } _invalidLandBlock = new Tile[196]; _landTiles = new Tile[_blockWidth][][]; _staticTiles = new HuedTile[_blockWidth][][][][]; _patch = new TileMatrixPatch(this, install, mapID); /*for ( int i = 0; i < m_BlockWidth; ++i ) * { * m_LandTiles[i] = new Tile[m_BlockHeight][]; * m_StaticTiles[i] = new Tile[m_BlockHeight][][][]; * }*/ }
public TileMatrix(InstallLocation install, int fileIndex, int mapID, int width, int height) { _install = install; _width = width; _height = height; _blockWidth = width >> 3; _blockHeight = height >> 3; if (fileIndex != 0x7F) { string mapPath = install.GetPath("map{0}.mul", fileIndex); string indexPath = install.GetPath("staidx{0}.mul", fileIndex); string staticsPath = install.GetPath("statics{0}.mul", fileIndex); if (!File.Exists(mapPath)) mapPath = install.GetPath("map{0}LegacyMUL.uop", fileIndex); _map = new FileStream(mapPath, FileMode.Open, FileAccess.Read, FileShare.Read); _fileIndex = new FileStream(indexPath, FileMode.Open, FileAccess.Read, FileShare.Read); _staticsStream = new FileStream(staticsPath, FileMode.Open, FileAccess.Read, FileShare.Read); _reader = new BinaryReader(_fileIndex); } _emptyStaticBlock = new HuedTile[8][][]; for (int i = 0; i < 8; ++i) { _emptyStaticBlock[i] = new HuedTile[8][]; for (int j = 0; j < 8; ++j) { _emptyStaticBlock[i][j] = new HuedTile[0]; } } _invalidLandBlock = new Tile[196]; _landTiles = new Tile[_blockWidth][][]; _staticTiles = new HuedTile[_blockWidth][][][][]; _patch = new TileMatrixPatch(this, install, mapID); /*for ( int i = 0; i < m_BlockWidth; ++i ) { m_LandTiles[i] = new Tile[m_BlockHeight][]; m_StaticTiles[i] = new Tile[m_BlockHeight][][][]; }*/ }
public TileMatrixPatch(TileMatrix matrix, InstallLocation install, int index) { string mapDataPath = install.GetPath("mapdif{0}.mul", index); string mapIndexPath = install.GetPath("mapdifl{0}.mul", index); if (File.Exists(mapDataPath) && File.Exists(mapIndexPath)) _landBlocks = PatchLand(matrix, mapDataPath, mapIndexPath); string staDataPath = install.GetPath("stadif{0}.mul", index); string staIndexPath = install.GetPath("stadifl{0}.mul", index); string staLookupPath = install.GetPath("stadifi{0}.mul", index); if (File.Exists(staDataPath) && File.Exists(staIndexPath) && File.Exists(staLookupPath)) _staticBlocks = PatchStatics(matrix, staDataPath, staIndexPath, staLookupPath); }
public Hues(InstallLocation install) { string path = install.GetPath("hues.mul"); int index = 0; _hues = new Hue[3000]; if (path != null) { using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read)) { BinaryReader bin = new BinaryReader(fs); int blockCount = (int)fs.Length / 708; if (blockCount > 375) blockCount = 375; for (int i = 0; i < blockCount; ++i) { bin.ReadInt32(); for (int j = 0; j < 8; ++j, ++index) _hues[index] = new Hue(index, bin); } } } for (; index < 3000; ++index) _hues[index] = new Hue(index); }
public TileData(InstallLocation install) { var filePath = install.GetPath("tiledata.mul"); if (!string.IsNullOrEmpty(filePath)) { using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read)) { var x64 = fs.Length >= 3188736; var bin = new BinaryReader(fs); m_LandData = new LandData[0x4000]; for (var i = 0; i < 0x4000; ++i) { if ((i & 0x1F) == 0) { bin.ReadInt32(); // header } var flags = x64 ? (TileFlag)bin.ReadInt64() : (TileFlag)bin.ReadInt32(); bin.ReadInt16(); // skip 2 bytes -- textureID m_LandData[i] = new LandData(ReadNameString(bin), flags); } m_ItemData = new ItemData[0x4000]; m_HeightTable = new int[0x4000]; for (var i = 0; i < 0x4000; ++i) { if ((i & 0x1F) == 0) { bin.ReadInt32(); // header } var flags = x64 ? (TileFlag)bin.ReadInt64() : (TileFlag)bin.ReadInt32(); int weight = bin.ReadByte(); int quality = bin.ReadByte(); bin.ReadInt16(); bin.ReadByte(); int quantity = bin.ReadByte(); int anim = bin.ReadInt16(); bin.ReadInt16(); bin.ReadByte(); int value = bin.ReadByte(); int height = bin.ReadByte(); m_ItemData[i] = new ItemData(ReadNameString(bin), flags, weight, quality, quantity, value, height, anim); m_HeightTable[i] = height; } } } else { throw new FileNotFoundException(); } }
public TileData(InstallLocation install) { string filePath = install.GetPath("tiledata.mul"); if (!string.IsNullOrEmpty(filePath)) { using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read)) { BinaryReader bin = new BinaryReader(fs); m_LandData = new LandData[0x4000]; for (int i = 0; i < 0x4000; ++i) { if ((i & 0x1F) == 0) { bin.ReadInt32(); // header } TileFlag flags = (TileFlag)bin.ReadInt32(); bin.ReadInt16(); // skip 2 bytes -- textureID m_LandData[i] = new LandData(ReadNameString(bin), flags); } m_ItemData = new ItemData[0x4000]; m_HeightTable = new int[0x4000]; for (int i = 0; i < 0x4000; ++i) { if ((i & 0x1F) == 0) { bin.ReadInt32(); // header } TileFlag flags = (TileFlag)bin.ReadInt32(); int weight = bin.ReadByte(); int quality = bin.ReadByte(); bin.ReadInt16(); bin.ReadByte(); int quantity = bin.ReadByte(); int anim = bin.ReadInt16(); bin.ReadInt16(); bin.ReadByte(); int value = bin.ReadByte(); int height = bin.ReadByte(); m_ItemData[i] = new ItemData(ReadNameString(bin), flags, weight, quality, quantity, value, height, anim); m_HeightTable[i] = height; } } } else { throw new FileNotFoundException(); } }
private void Load() { string path = _install.GetPath("radarcol.mul"); if (!File.Exists(path)) { return; } FileInfo file = new FileInfo(path); _colors = new short[file.Length / 2]; fixed(short *ptr = _colors) { using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read)) NativeMethods._lread(fs.SafeFileHandle, ptr, 0x10000); } }
public TileMatrixPatch(TileMatrix matrix, InstallLocation install, int index) { string mapDataPath = install.GetPath("mapdif{0}.mul", index); string mapIndexPath = install.GetPath("mapdifl{0}.mul", index); if (File.Exists(mapDataPath) && File.Exists(mapIndexPath)) { _landBlocks = PatchLand(matrix, mapDataPath, mapIndexPath); } string staDataPath = install.GetPath("stadif{0}.mul", index); string staIndexPath = install.GetPath("stadifl{0}.mul", index); string staLookupPath = install.GetPath("stadifi{0}.mul", index); if (File.Exists(staDataPath) && File.Exists(staIndexPath) && File.Exists(staLookupPath)) { _staticBlocks = PatchStatics(matrix, staDataPath, staIndexPath, staLookupPath); } }
public Hues(InstallLocation install) { string path = install.GetPath("hues.mul"); int index = 0; _hues = new Hue[3000]; if (path != null) { using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read)) { BinaryReader bin = new BinaryReader(fs); int blockCount = (int)fs.Length / 708; if (blockCount > 375) { blockCount = 375; } for (int i = 0; i < blockCount; ++i) { bin.ReadInt32(); for (int j = 0; j < 8; ++j, ++index) { _hues[index] = new Hue(index, bin); } } } } for (; index < 3000; ++index) { _hues[index] = new Hue(index); } }