public void WriteGenericData(BinaryWriter bw, int version) { //Set flags FlagGroup f = new FlagGroup(); f[0] = (mRolly != 0.0f); f[1] = (mBouncy != 0.0f); f[2] = HasPegInfo; f[3] = HasMovementInfo; f[5] = mCollision; f[6] = mVisible; f[7] = mCanMove; f[8] = (mSolidColour != Color.Black); f[9] = (mOutlineColour != Color.Black); f[10] = !String.IsNullOrEmpty(mImageFilename); f[11] = (mImageDX != 0.0f); f[12] = (mImageDY != 0.0f); f[13] = (mImageRotation != 0.0f); f[14] = mBackground; f[15] = mBaseObject; f[17] = !String.IsNullOrEmpty(mID); f[19] = (mSound != 0); f[20] = mBallStopReset; f[21] = !String.IsNullOrEmpty(mLogic); f[22] = mForeground; f[23] = (mMaxBounceVelocity != 0.0f); f[24] = mDrawSort; f[25] = mForeground2; f[26] = (mSubID != 0); f[27] = (mFlipperFlags != 0); f[28] = mDrawFloat; f[30] = (mShadow && version >= 0x50); //Write data bw.Write(f.Int32); if (f[0]) { bw.Write(mRolly); } if (f[1]) { bw.Write(mBouncy); } if (f[8]) { bw.Write(mSolidColour.ToArgb()); } if (f[9]) { bw.Write(mOutlineColour.ToArgb()); } if (f[10]) { LevelWriter.WritePopcapString(bw, mImageFilename); } if (f[11]) { bw.Write(mImageDX); } if (f[12]) { bw.Write(mImageDY); } if (f[13]) { bw.Write(MathExt.ToRadians(mImageRotation)); } if (f[17]) { LevelWriter.WritePopcapString(bw, mID); } if (f[19]) { bw.Write(mSolidColour.ToArgb()); } if (f[21]) { LevelWriter.WritePopcapString(bw, mLogic); } if (f[23]) { bw.Write(mMaxBounceVelocity); } if (f[26]) { bw.Write(mSubID); } if (f[27]) { bw.Write(mFlipperFlags); } if (f[2]) { mPegInfo.WriteData(bw, version); } if (f[3]) { mMovement.WriteData(bw, version); } }
public override void WriteData(BinaryWriter bw, int version) { FlagGroup fA = new FlagGroup(); fA[2] = mTransparancy; fA[4] = mRandomStartPosition; if (!HasMovementInfo) { fA[5] = true; } fA[6] = mChangeUnknown; fA[7] = mChangeScale; fA[8] = mChangeColour; fA[9] = mChangeOpacity; fA[10] = mChangeVelocity; fA[11] = mChangeDirection; fA[12] = mChangeRotation; fA[14] = true; //Needed to make it visible? bw.Write(mMainVar); bw.Write(fA.Int16); LevelWriter.WritePopcapString(bw, mImage); bw.Write(mWidth); bw.Write(mHeight); if (mMainVar == 2) { bw.Write(mMainVar0); bw.Write(mMainVar1); LevelWriter.WritePopcapString(bw, mMainVar2); bw.Write(mMainVar3); if (fA[13]) { mUnknown0.WriteData(bw); mUnknown1.WriteData(bw); } } if (fA[5]) { bw.Write(X); bw.Write(Y); } LevelWriter.WritePopcapString(bw, mEmitImage); bw.Write(mUnknownEmitRate); bw.Write(mUnknown2); bw.Write(mRotation); bw.Write(mMaxQuantity); bw.Write(mTimeBeforeFadeOut); bw.Write(mFadeInTime); bw.Write(mLifeDuration); mEmitRate.WriteData(bw); mEmitAreaMultiplier.WriteData(bw); if (fA[12]) { mInitialRotation.WriteData(bw); mRotationVelocity.WriteData(bw); bw.Write(mRotationUnknown); } if (fA[7]) { mMinScale.WriteData(bw); mScaleVelocity.WriteData(bw); bw.Write(mMaxRandScale); } if (fA[8]) { mColourRed.WriteData(bw); mColourGreen.WriteData(bw); mColourBlue.WriteData(bw); } if (fA[9]) { mOpacity.WriteData(bw); } if (fA[10]) { mMinVelocityX.WriteData(bw); mMinVelocityY.WriteData(bw); bw.Write(mMaxVelocityX); bw.Write(mMaxVelocityY); bw.Write(mAccelerationX); bw.Write(mAccelerationY); } if (fA[11]) { bw.Write(mDirectionSpeed); bw.Write(mDirectionRandomSpeed); bw.Write(mDirectionAcceleration); bw.Write(mDirectionAngle); bw.Write(mDirectionRandomAngle); } if (fA[6]) { bw.Write(mUnknownA); bw.Write(mUnknownB); } }