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); }
public WindowFrame(ref EndianBinaryReader reader, ref MAT1 materials) { mMaterialIndex = reader.ReadUInt16(); mFlip = reader.ReadByte(); reader.ReadByte(); mMaterialName = materials.getMaterialNameFromIndex(mMaterialIndex); }
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); }
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); }