/// <summary> /// Loads the decoration /// </summary> private void LoadDecoration() { // if we're dealing with texture info if ((m_id & 0xFF000000) == 0x08000000) { EmbeddedFile sourceFile = DataProvider.Instance.PortalDatReader.LocateFile(m_id); try { sourceFile.PrepareFileForReading(); // determine the type of texture information if (sourceFile.DatType != DatType.Portal_ToD) { uint fileId = sourceFile.ReadUInt32(); Debug.Assert(fileId == m_id); } m_typeFlag = sourceFile.ReadUInt32(); switch (m_typeFlag) { case 0x01: uint solidColor = sourceFile.ReadUInt32(); uint unk01_02 = sourceFile.ReadUInt32(); Debug.Assert(unk01_02 == 0x00); LoadAsSolidColor(solidColor); break; case 0x02: case 0x04: uint textureNumber = sourceFile.ReadUInt32(); uint paletteNumber = sourceFile.ReadUInt32(); uint unk_01 = sourceFile.ReadUInt32(); Debug.Assert((textureNumber & 0xFF000000) == 0x05000000); Debug.Assert(paletteNumber == 0x00 || (paletteNumber & 0xFF000000) == 0x04000000); Debug.Assert(unk_01 == 0x00); LoadAsTexture(textureNumber, (paletteNumber != 0x00 ? (uint?)paletteNumber : null)); break; case 0x11: case 0x12: case 0x14: m_decorationType = DecorationType.Unknown; break; default: throw new NotImplementedException(); } } finally { sourceFile.FileReadingComplete(); } } else { throw new NotImplementedException(); } }
private static void CheckTextureInfo(DatReader reader, uint id) { EmbeddedFile textureFile = reader.LocateFile(id); Debug.Assert((id & 0xFF000000) == 0x08000000 && textureFile != null); try { textureFile.PrepareFileForReading(); // first dword is the ID uint textureId = textureFile.ReadUInt32(); Debug.Assert(textureId == id); uint textureType = textureFile.ReadUInt32(); switch (textureType) { case 0x01: uint unk01_01 = textureFile.ReadUInt32(); uint unk01_02 = textureFile.ReadUInt32(); Debug.Assert(unk01_02 == 0x00); break; default: return; //case 0x02: // uint textureNumber02 = textureFile.ReadUInt32(); // uint paletteNumber02 = textureFile.ReadUInt32(); // uint unk02_01 = textureFile.ReadUInt32(); // Debug.Assert((textureNumber02 & 0xFF000000) == 0x05000000); // Debug.Assert(paletteNumber02 == 0x00 || (paletteNumber02 & 0xF000000) == 0x04000000); // Debug.Assert(unk02_01 == 0x00); // break; //case 0x04: // uint textureNumber04 = textureFile.ReadUInt32(); // uint paletteNumber04 = textureFile.ReadUInt32(); // uint unk04_01 = textureFile.ReadUInt32(); // Debug.Assert((textureNumber04 & 0xFF000000) == 0x05000000); // Debug.Assert(paletteNumber04 == 0x00 || (paletteNumber04 & 0xFF000000) == 0x04000000); // Debug.Assert(unk04_01 == 0x00); // break; //case 0x11: // uint unk11_01 = textureFile.ReadUInt32(); // uint unk11_02 = textureFile.ReadUInt32(); // //Debug.Assert(unk11_02 == 0x3F800000); // break; } // read closing bytes.. uint unknown1 = textureFile.ReadUInt32(); uint unknown2 = textureFile.ReadUInt32(); Debug.Assert(unknown1 == 0x00 || unknown1 == 0x3F800000); Debug.Assert(unknown2 == 0x3F800000); } finally { textureFile.FileReadingComplete(); } }