Esempio n. 1
0
        /// <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();
            }
        }
Esempio n. 2
0
        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();
            }
        }