Esempio n. 1
0
        public PIC1(ref EndianBinaryReader reader, ref MAT1 materials, uint versionMajor, uint versionMinor) : base(ref reader)
        {
            base.setType("Picture");

            mTopLeftColor     = reader.ReadRGBAColor8();
            mTopRightColor    = reader.ReadRGBAColor8();
            mBottomLeftColor  = reader.ReadRGBAColor8();
            mBottomRightColor = reader.ReadRGBAColor8();

            mMaterialIndex = reader.ReadUInt16();
            mUVCount       = reader.ReadByte();
            reader.ReadByte();

            if (versionMajor == 8 && versionMinor == 2)
            {
                reader.ReadUInt32();
            }

            mUVs = new List <UVCoordSet>();

            for (byte i = 0; i < mUVCount; i++)
            {
                mUVs.Add(reader.ReadUVCoordSet());
            }

            mMaterialName = materials.getMaterialNameFromIndex(mMaterialIndex);
        }
Esempio n. 2
0
        public WindowFrame(ref EndianBinaryReader reader, ref MAT1 materials)
        {
            mMaterialIndex = reader.ReadUInt16();
            mFlip          = reader.ReadByte();

            reader.ReadByte();

            mMaterialName = materials.getMaterialNameFromIndex(mMaterialIndex);
        }
Esempio n. 3
0
        public WindowContent(ref EndianBinaryReader reader, ref MAT1 materials)
        {
            mTopLeftColor     = reader.ReadRGBAColor8();
            mTopRightColor    = reader.ReadRGBAColor8();
            mBottomLeftColor  = reader.ReadRGBAColor8();
            mBottomRightColor = reader.ReadRGBAColor8();
            mMaterialIndex    = reader.ReadUInt16();
            mUVCount          = reader.ReadByte();
            reader.ReadByte();

            mUVs = new List <UVCoordSet>();

            for (byte i = 0; i < mUVCount; i++)
            {
                mUVs.Add(reader.ReadUVCoordSet());
            }

            mMaterialName = materials.getMaterialNameFromIndex(mMaterialIndex);
        }
Esempio n. 4
0
        public TXT1(ref EndianBinaryReader reader, ref MAT1 materials, ref FNL1 fonts, uint version) : base(ref reader)
        {
            base.setType("Text Box");

            long startPos = reader.Pos() - 0x54;

            mTextLength    = reader.ReadUInt16();
            mMaxTextLength = reader.ReadUInt16();
            mMaterialIndex = reader.ReadUInt16();
            mFontIndex     = reader.ReadUInt16();

            byte alignment = reader.ReadByte();

            mHorizontalTextAligment = (TextAlignment)((alignment >> 2) & 0x3);
            mVerticalTextAlignment  = (TextAlignment)(alignment & 0x3);

            byte lineAlignment = reader.ReadByte();

            mLineAlignment = (LineAlignment)lineAlignment;

            byte flag = reader.ReadByte();

            mPerCharTransform   = Convert.ToBoolean((flag >> 4) & 0x1);
            mBorderFormat       = (BorderFormat)((flag >> 2) & 0x3);
            mRestrictTextLength = Convert.ToBoolean((flag >> 1) & 0x1);
            mShadowEnabled      = Convert.ToBoolean(flag & 0x1);

            reader.ReadByte(); // padding

            mItalicTilt = reader.ReadF32();
            mTextOffset = reader.ReadUInt32();

            mFontTopColor    = reader.ReadRGBAColor8();
            mFontBottomColor = reader.ReadRGBAColor8();
            mFontSizeX       = reader.ReadF32();
            mFontSizeY       = reader.ReadF32();
            mCharSpace       = reader.ReadF32();
            mLineSpace       = reader.ReadF32();
            mNameOffset      = reader.ReadUInt32();

            mShadowX           = reader.ReadF32();
            mShadowY           = reader.ReadF32();
            mShadowSizeX       = reader.ReadF32();
            mShadowSizeY       = reader.ReadF32();
            mShadowTopColor    = reader.ReadRGBAColor8();
            mShadowBottomColor = reader.ReadRGBAColor8();
            mShadowItalic      = reader.ReadF32();

            if (version == 0x8030000)
            {
                reader.ReadUInt32(); // this might be something, but probably padding
            }
            if (version != 0x3030000)
            {
                mPerCharTransformOffset = reader.ReadUInt32();
            }
            else
            {
                mPerCharTransformOffset = 0;
            }

            mMaterialName = materials.getMaterialNameFromIndex(mMaterialIndex);
            mFontName     = fonts.getFontNameFromIndex(mFontIndex);

            // read the textbox text (which is mostly useless)
            mText = reader.ReadUTF16StringFrom(startPos + mTextOffset);
            mName = reader.ReadStringNTFrom(startPos + mNameOffset);

            // this is the last structure in the file, and we don't even get a count...

            /*if (mPerCharTransformOffset != 0)
             * {
             *  reader.Seek(startPos + mPerCharTransformOffset);
             *
             *  mTransforms = new List<PerCharTransform>();
             *
             *  uint numEntries = (mSectionSize - mPerCharTransformOffset) / 0xC;
             *
             *  for (int i = 0; i < numEntries; i++)
             *      mTransforms.Add(new PerCharTransform(ref reader));
             * }*/

            // and we are done
            reader.Seek(startPos + mSectionSize);
        }