public void ReadData(BinaryReader br, int version) { mType = br.ReadByte(); FlagGroup f2 = new FlagGroup(br.ReadByte()); if (f2[1]) { mVariable = true; } if (f2[2]) { br.ReadInt32(); } if (f2[3]) { mCrumble = true; } if (f2[4]) { br.ReadInt32(); } if (f2[5]) { br.ReadByte(); } if (f2[7]) { br.ReadByte(); } }
public override void ReadData(BinaryReader br, int version) { FlagGroup fA = new FlagGroup(br.ReadByte()); mWidth = br.ReadInt32(); mHeight = br.ReadInt32(); if (fA[1]) { br.ReadInt16(); } if (fA[3]) { br.ReadInt32(); } if (fA[5]) { br.ReadInt32(); } if (fA[4]) { mEntry = LevelEntryFactory.CreateLevelEntry(br, version); } if (fA[2]) { X = br.ReadSingle(); Y = br.ReadSingle(); } if (fA[6]) { br.ReadSingle(); br.ReadSingle(); } }
public override void WriteData(BinaryWriter bw, int version) { FlagGroup fA = new FlagGroup(); FlagGroup fB = new FlagGroup(); if (!HasMovementInfo) fA[4] = true; //Write data bw.Write(fA.Int8); if (version >= 0x23) bw.Write(fB.Int8); if (fA[4]) { bw.Write(X); bw.Write(Y); } bw.Write(mPoints.Count); foreach (PointF p in mPoints) { bw.Write(p.X); bw.Write(p.Y); } }
public void CreateFlagGroup(string name, string flags, ISession session) { this.logger.DebugFormat("Creating flag group {0} with flags {1}", name, flags); var rowcount = session.CreateCriteria <FlagGroup>() .Add(Restrictions.Eq("Name", name)) .SetProjection(Projections.RowCount()) .UniqueResult <int>(); if (rowcount != 0) { throw new AclException("This flag group already exists."); } var newGroup = new FlagGroup { Name = name, Flags = flags, Mode = "+", LastModified = DateTime.Now }; try { session.Save(newGroup); } catch (Exception ex) { this.logger.ErrorFormat(ex, "Error creating new flag group {0}", name); throw new AclException("Encountered unknown error while creating flag group."); } }
public override void ReadData(BinaryReader br, int version) { FlagGroup fA = new FlagGroup(br.ReadByte()); FlagGroup fB = new FlagGroup(); if (version >= 0x23) fB = new FlagGroup(br.ReadByte()); if (fA[2]) mRotation = br.ReadSingle(); if (fA[3]) br.ReadSingle(); if (fA[5]) mScale = br.ReadSingle(); if (fA[1]) mNormalDir = br.ReadByte(); if (fA[4]) { X = br.ReadSingle(); Y = br.ReadSingle(); } int numPoints = br.ReadInt32(); for (int i = 0; i < numPoints; i++) { mPoints.Add(new PointF(br.ReadSingle(), br.ReadSingle())); } if (fB[0]) br.ReadByte(); if (fB[1]) mGrowType = br.ReadInt32(); }
public override void WriteData(BinaryWriter bw, int version) { FlagGroup fA = new FlagGroup(); if (!HasMovementInfo) fA[2] = true; if (mEntry != null) fA[4] = true; //Write data bw.Write(fA.Int8); bw.Write(mWidth); bw.Write(mHeight); if (fA[4]) { mEntry.Write(bw, version); } if (fA[2]) { bw.Write(X); bw.Write(Y); } if (fA[6]) { bw.Write(0.0f); bw.Write(0.0f); } }
public override void WriteData(BinaryWriter bw, int version) { FlagGroup fA = new FlagGroup(); FlagGroup fB = new FlagGroup(); //Make it bouce fA[0] = true; if (!HasMovementInfo) { fA[1] = true; } bw.Write(fA.Int8); if (version >= 0x52) { bw.Write(fB.Int8); } if (fA[1]) { bw.Write(X); bw.Write(Y); } bw.Write(mRadius); }
public override void WriteData(BinaryWriter bw, int version) { FlagGroup fA = new FlagGroup(); FlagGroup fB = new FlagGroup(); if (!HasMovementInfo) { fA[4] = true; } //Write data bw.Write(fA.Int8); if (version >= 0x23) { bw.Write(fB.Int8); } if (fA[4]) { bw.Write(X); bw.Write(Y); } bw.Write(mPoints.Count); foreach (PointF p in mPoints) { bw.Write(p.X); bw.Write(p.Y); } }
public void WriteData(BinaryWriter bw, int version) { bw.Write((byte)1); FlagGroup f2 = new FlagGroup(); if (mVariable) f2[1] = true; if (mCrumble) f2[3] = true; bw.Write(f2.Int8); }
public override void WriteData(BinaryWriter bw, int version) { FlagGroup fA = new FlagGroup(); bw.Write(fA.Int8); bw.Write(mPointA.X); bw.Write(mPointA.Y); bw.Write(mPointB.X); bw.Write(mPointB.Y); }
public override void ReadData(BinaryReader br, int version) { FlagGroup fA = new FlagGroup(br.ReadByte()); FlagGroup fB = new FlagGroup(); if (version >= 0x23) { fB = new FlagGroup(br.ReadByte()); } if (fA[2]) { mRotation = br.ReadSingle(); } if (fA[3]) { br.ReadSingle(); } if (fA[5]) { mScale = br.ReadSingle(); } if (fA[1]) { mNormalDir = br.ReadByte(); } if (fA[4]) { X = br.ReadSingle(); Y = br.ReadSingle(); } int numPoints = br.ReadInt32(); for (int i = 0; i < numPoints; i++) { mPoints.Add(new PointF(br.ReadSingle(), br.ReadSingle())); } if (fB[0]) { br.ReadByte(); } if (fB[1]) { mGrowType = br.ReadInt32(); } }
public void WriteData(BinaryWriter bw, int version) { bw.Write((byte)1); FlagGroup f2 = new FlagGroup(); if (mVariable) { f2[1] = true; } if (mCrumble) { f2[3] = true; } bw.Write(f2.Int8); }
public override void ReadData(BinaryReader br, int version) { FlagGroup fA = new FlagGroup(br.ReadByte()); if (version >= 0x52) { FlagGroup fB = new FlagGroup(br.ReadByte()); } if (fA[1]) { X = br.ReadSingle(); Y = br.ReadSingle(); } mRadius = br.ReadSingle(); }
public void GrantFlagGroupGlobally(User user, FlagGroup group, ISession session) { this.logger.DebugFormat("Granting group {0} to [{1}, {2}] globally", group, user.Mask, user.Account); var existing = session.CreateCriteria <FlagGroupUser>() .Add(Restrictions.Eq("User", user)) .Add(Restrictions.Eq("FlagGroup", group)) .UniqueResult <FlagGroupUser>(); if (existing == null) { var fgu = new FlagGroupUser { User = user, FlagGroup = group, LastModified = DateTime.UtcNow }; session.Save(fgu); } }
public void ReadData(BinaryReader br, int version) { mType = br.ReadByte(); FlagGroup f2 = new FlagGroup(br.ReadByte()); if (f2[1]) mVariable = true; if (f2[2]) br.ReadInt32(); if (f2[3]) mCrumble = true; if (f2[4]) br.ReadInt32(); if (f2[5]) br.ReadByte(); if (f2[7]) br.ReadByte(); }
public override void ReadData(BinaryReader br, int version) { FlagGroup fA = new FlagGroup(br.ReadByte()); mPointA = new PointF(br.ReadSingle(), br.ReadSingle()); mPointB = new PointF(br.ReadSingle(), br.ReadSingle()); if (fA[0]) { float e = br.ReadSingle(); } if (fA[1]) { float f = br.ReadSingle(); } }
public void RevokeFlagGroupGlobally(User user, FlagGroup group, ISession session) { this.logger.DebugFormat("Revoking group {0} from [{1}, {2}] globally", group, user.Mask, user.Account); var existing = session.CreateCriteria <FlagGroupUser>() .Add(Restrictions.Eq("User", user)) .Add(Restrictions.Eq("FlagGroup", group)) .UniqueResult <FlagGroupUser>(); if (existing != null) { session.Delete(existing); session.Flush(); ((AccessControlAuthorisationService)this.authService).Refresh(user); } this.CleanUpUserEntries(session); }
public override void WriteData(BinaryWriter bw, int version) { FlagGroup fA = new FlagGroup(); if (!HasMovementInfo) { fA[2] = true; } if (mEntry != null) { fA[4] = true; } //Write data bw.Write(fA.Int8); bw.Write(mWidth); bw.Write(mHeight); if (fA[4]) { mEntry.Write(bw, version); } if (fA[2]) { bw.Write(X); bw.Write(Y); } if (fA[6]) { bw.Write(0.0f); bw.Write(0.0f); } }
public override void WriteData(BinaryWriter bw, int version) { FlagGroup fA = new FlagGroup(); FlagGroup fB = new FlagGroup(); //Make it bouce fA[0] = true; if (!HasMovementInfo) fA[1] = true; bw.Write(fA.Int8); if (version >= 0x52) { bw.Write(fB.Int8); } if (fA[1]) { bw.Write(X); bw.Write(Y); } bw.Write(mRadius); }
public override void ReadData(BinaryReader br, int version) { FlagGroup fA = new FlagGroup(br.ReadByte()); mWidth = br.ReadInt32(); mHeight = br.ReadInt32(); if (fA[1]) br.ReadInt16(); if (fA[3]) br.ReadInt32(); if (fA[5]) br.ReadInt32(); if (fA[4]) { mEntry = LevelEntryFactory.CreateLevelEntry(br, version); } if (fA[2]) { X = br.ReadSingle(); Y = br.ReadSingle(); } if (fA[6]) { br.ReadSingle(); br.ReadSingle(); } }
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); } }
public override void WriteData(BinaryWriter bw, int version) { FlagGroup fA = new FlagGroup(); FlagGroup fB = new FlagGroup(); FlagGroup fC = new FlagGroup(); if (!HasMovementInfo) { fA[4] = true; } if (mCurved) { fC[4] = true; if (mCurvePoints != 4) { fC[3] = true; } } else { fC[2] = true; } fC[7] = true; if (mTextureFlip) { fC[10] = true; } //Write data bw.Write(fA.Int8); if (version >= 0x23) { bw.Write(fB.Int8); } if (fA[4]) { bw.Write(X); bw.Write(Y); } bw.Write(fC.Int16); if (fC[2]) { bw.Write((byte)5); } if (fC[3]) { bw.Write((byte)(mCurvePoints + 2)); } if (fC[4]) { bw.Write(mSectorAngle); } if (fC[7]) { bw.Write(mWidth); } bw.Write(mLength); bw.Write(mAngle); bw.Write(new byte[] { 0, 0, 0, 0 }); }
public void WriteData(BinaryWriter bw, int version) { FlagGroup fA = new FlagGroup(); fA[0] = (mOffset != 0.0f); fA[1] = (mRadius1 != 0.0f); fA[2] = (mStartPhase != 0.0f); fA[3] = (mMoveRotation != 0.0f); fA[4] = (mRadius2 != 0.0f); fA[5] = (mPause1 != 0.0f); fA[6] = (mPause2 != 0.0f); fA[7] = (mPhase1 != 0.0f); fA[8] = (mPhase2 != 0.0f); fA[9] = (mPostDelayPhase != 0.0f); fA[10] = (mMaxAngle != 0.0f); fA[11] = (mUnknown8 != 0.0f); fA[14] = (mRotation != 0.0f); fA[12] = (mUnknown10 != 0.0f || mUnknown11 != 0.0f); fA[13] = (mObjectX != 0.0f || mObjectY != 0.0f); if (mBaseMovement != null) fA[12] = true; //Write data if (mMovementLink == null) bw.Write(1); else { bw.Write(GetMovementLinkIndex(mMovementLink)); return; } int type = (int)mType; if (mReverse) type = (256 - type); bw.Write((byte)type); bw.Write(mAnchorPoint.X); bw.Write(mAnchorPoint.Y); bw.Write((short)mTimePeriod); bw.Write(fA.Int16); if (fA[0]) bw.Write(mOffset); if (fA[1]) bw.Write((short)mRadius1); if (fA[2]) bw.Write(mStartPhase); if (fA[3]) bw.Write(MathExt.ToRadians(mMoveRotation)); if (fA[4]) bw.Write((short)mRadius2); if (fA[5]) bw.Write(mPause1); if (fA[6]) bw.Write(mPause2); if (fA[7]) bw.Write(mPhase1); if (fA[8]) bw.Write(mPhase2); if (fA[9]) bw.Write(mPostDelayPhase); if (fA[10]) bw.Write(mMaxAngle); if (fA[11]) bw.Write(mUnknown8); if (fA[14]) bw.Write(MathExt.ToRadians(mRotation)); if (fA[12]) { bw.Write(mUnknown10); bw.Write(mUnknown11); mBaseMovement.WriteData(bw, version); } if (fA[13]) { bw.Write(mObjectX); bw.Write(mObjectY); } }
public void ReadData(BinaryReader br, int version) { int mlink = br.ReadInt32(); if (mlink == 0) return; if (mlink != 1) { if (mLevel == null) mMovementLinkREQUIRED = mlink; else mMovementLink = GetMovementLink(mlink); return; } sbyte movementShape = br.ReadSByte(); mType = (MovementType)Math.Abs(movementShape); if (movementShape < 0) { mReverse = true; } int type = (int)mType; if (mReverse) type = (256 - type); mAnchorPoint.X = br.ReadSingle(); mAnchorPoint.Y = br.ReadSingle(); mTimePeriod = br.ReadInt16(); FlagGroup fA = new FlagGroup(br.ReadInt16()); if (fA[0]) mOffset = br.ReadInt16(); if (fA[1]) mRadius1 = br.ReadInt16(); if (fA[2]) mStartPhase = br.ReadSingle(); if (fA[3]) mMoveRotation = MathExt.ToDegrees(br.ReadSingle()); if (fA[4]) mRadius2 = br.ReadInt16(); if (fA[5]) mPause1 = br.ReadInt16(); if (fA[6]) mPause2 = br.ReadInt16(); if (fA[7]) mPhase1 = br.ReadByte(); if (fA[8]) mPhase2 = br.ReadByte(); if (fA[9]) mPostDelayPhase = br.ReadSingle(); if (fA[10]) mMaxAngle = br.ReadSingle(); if (fA[11]) mUnknown8 = br.ReadSingle(); if (fA[14]) mRotation = MathExt.ToDegrees(br.ReadSingle()); if (fA[12]) { mUnknown10 = br.ReadSingle(); mUnknown11 = br.ReadSingle(); //Another movement mBaseMovement = new Movement(mLevel); mBaseMovement.ReadData(br, version); //mBaseMovement = null; } if (fA[13]) { mObjectX = br.ReadSingle(); mObjectY = br.ReadSingle(); } }
public override void ReadData(BinaryReader br, int version) { FlagGroup fA = new FlagGroup(br.ReadByte()); FlagGroup fB = new FlagGroup(); if (version >= 0x23) { fB = new FlagGroup(br.ReadByte()); } if (fA[2]) { br.ReadSingle(); } if (fA[3]) { br.ReadSingle(); } if (fA[5]) { br.ReadSingle(); } if (fA[1]) { br.ReadByte(); } if (fA[4]) { X = br.ReadSingle(); Y = br.ReadSingle(); } //if arg0 (lots) if (fB[0]) { br.ReadByte(); } if (fB[1]) { br.ReadInt32(); } if (fB[2]) { br.ReadInt16(); } mCurved = true; FlagGroup fC = new FlagGroup(br.ReadInt16()); if (fC[8]) { br.ReadSingle(); } if (fC[9]) { br.ReadSingle(); } if (fC[2]) { mType = br.ReadByte(); if (mType == 5) { mCurved = false; } } if (fC[3]) { mCurvePoints = br.ReadByte() + 2; } if (fC[5]) { br.ReadSingle(); //Left angle } if (fC[6]) { br.ReadSingle(); //Right angle } //if arg0+3 ReadSingle ReadSingle if (fC[4]) { mSectorAngle = br.ReadSingle(); } if (fC[7]) { mWidth = br.ReadSingle(); } mTextureFlip = fC[10]; mLength = br.ReadSingle(); mAngle = br.ReadSingle(); byte[] hmm = br.ReadBytes(4); //for (int i = 0; i < 4; i++) // br.ReadByte(); }
public override void ReadData(BinaryReader br, int version) { FlagGroup fA; mMainVar = br.ReadInt32(); fA = new FlagGroup(br.ReadInt16()); mTransparancy = fA[2]; mRandomStartPosition = fA[4]; mChangeUnknown = fA[6]; mChangeScale = fA[7]; mChangeOpacity = fA[9]; mChangeVelocity = fA[10]; mChangeDirection = fA[11]; mChangeRotation = fA[12]; mImage = LevelReader.ReadPopcapString(br); mWidth = br.ReadInt32(); mHeight = br.ReadInt32(); if (mMainVar == 2) { mMainVar0 = br.ReadInt32(); mMainVar1 = br.ReadSingle(); mMainVar2 = LevelReader.ReadPopcapString(br); mMainVar3 = br.ReadByte(); if (fA[13]) { mUnknown0 = new VariableFloat(br); mUnknown1 = new VariableFloat(br); } } if (fA[5]) { X = br.ReadSingle(); Y = br.ReadSingle(); } mEmitImage = LevelReader.ReadPopcapString(br); mUnknownEmitRate = br.ReadSingle(); mUnknown2 = br.ReadSingle(); mRotation = br.ReadSingle(); mMaxQuantity = br.ReadInt32(); mTimeBeforeFadeOut = br.ReadSingle(); mFadeInTime = br.ReadSingle(); mLifeDuration = br.ReadSingle(); mEmitRate = new VariableFloat(br); mEmitAreaMultiplier = new VariableFloat(br); if (fA[12]) { mInitialRotation = new VariableFloat(br); mRotationVelocity = new VariableFloat(br); mRotationUnknown = br.ReadSingle(); } if (fA[7]) { mMinScale = new VariableFloat(br); mScaleVelocity = new VariableFloat(br); mMaxRandScale = br.ReadSingle(); } if (fA[8]) { mColourRed = new VariableFloat(br); mColourGreen = new VariableFloat(br); mColourBlue = new VariableFloat(br); } if (fA[9]) { mOpacity = new VariableFloat(br); } if (fA[10]) { mMinVelocityX = new VariableFloat(br); mMinVelocityY = new VariableFloat(br); mMaxVelocityX = br.ReadSingle(); mMaxVelocityY = br.ReadSingle(); mAccelerationX = br.ReadSingle(); mAccelerationY = br.ReadSingle(); } if (fA[11]) { mDirectionSpeed = br.ReadSingle(); mDirectionRandomSpeed = br.ReadSingle(); mDirectionAcceleration = br.ReadSingle(); mDirectionAngle = br.ReadSingle(); mDirectionRandomAngle = br.ReadSingle(); } if (fA[6]) { mUnknownA = br.ReadSingle(); mUnknownB = br.ReadSingle(); } }
public override void WriteData(BinaryWriter bw, int version) { FlagGroup fA = new FlagGroup(); FlagGroup fB = new FlagGroup(); FlagGroup fC = new FlagGroup(); if (!HasMovementInfo) fA[4] = true; if (mCurved) { fC[4] = true; if (mCurvePoints != 4) fC[3] = true; } else { fC[2] = true; } fC[7] = true; if (mTextureFlip) fC[10] = true; //Write data bw.Write(fA.Int8); if (version >= 0x23) bw.Write(fB.Int8); if (fA[4]) { bw.Write(X); bw.Write(Y); } bw.Write(fC.Int16); if (fC[2]) { bw.Write((byte)5); } if (fC[3]) { bw.Write((byte)(mCurvePoints + 2)); } if (fC[4]) bw.Write(mSectorAngle); if (fC[7]) bw.Write(mWidth); bw.Write(mLength); bw.Write(mAngle); bw.Write(new byte[] { 0, 0, 0, 0 }); }
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 void ReadGenericData(BinaryReader br, int version) { FlagGroup f = new FlagGroup(br.ReadInt32()); mCollision = f[5]; mVisible = f[6]; mCanMove = f[7]; mBackground = f[14]; mBaseObject = f[15]; mBallStopReset = f[20]; mForeground = f[22]; mDrawSort = f[24]; mForeground2 = f[25]; mDrawFloat = f[28]; if (f[0]) mRolly = br.ReadSingle(); if (f[1]) mBouncy = br.ReadSingle(); if (f[4]) br.ReadInt32(); if (f[8]) mSolidColour = Color.FromArgb(br.ReadInt32()); if (f[9]) mOutlineColour = Color.FromArgb(br.ReadInt32()); if (f[10]) { mImageFilename = LevelReader.ReadPopcapString(br); } if (f[11]) mImageDX = br.ReadSingle(); if (f[12]) mImageDY = br.ReadSingle(); if (f[13]) mImageRotation = MathExt.ToDegrees(br.ReadSingle()); if (f[16]) br.ReadInt32(); if (f[17]) mID = LevelReader.ReadPopcapString(br); if (f[18]) br.ReadInt32(); if (f[19]) mSound = br.ReadByte(); if (f[21]) mLogic = LevelReader.ReadPopcapString(br); if (f[23]) mMaxBounceVelocity = br.ReadSingle(); if (f[26]) mSubID = br.ReadInt32(); if (f[27]) mFlipperFlags = br.ReadByte(); if (f[2]) { mPegInfo = new PegInfo(this); mPegInfo.ReadData(br, version); } if (f[3]) { mMovement = new Movement(mLevel); mMovement.ReadData(br, version); } if (f[30] && version >= 0x50) mShadow = f[30]; }
public void WriteData(BinaryWriter bw, int version) { FlagGroup fA = new FlagGroup(); fA[0] = (mOffset != 0.0f); fA[1] = (mRadius1 != 0.0f); fA[2] = (mStartPhase != 0.0f); fA[3] = (mMoveRotation != 0.0f); fA[4] = (mRadius2 != 0.0f); fA[5] = (mPause1 != 0.0f); fA[6] = (mPause2 != 0.0f); fA[7] = (mPhase1 != 0.0f); fA[8] = (mPhase2 != 0.0f); fA[9] = (mPostDelayPhase != 0.0f); fA[10] = (mMaxAngle != 0.0f); fA[11] = (mUnknown8 != 0.0f); fA[14] = (mRotation != 0.0f); fA[12] = (mUnknown10 != 0.0f || mUnknown11 != 0.0f); fA[13] = (mObjectX != 0.0f || mObjectY != 0.0f); if (mBaseMovement != null) { fA[12] = true; } //Write data if (mMovementLink == null) { bw.Write(1); } else { bw.Write(GetMovementLinkIndex(mMovementLink)); return; } int type = (int)mType; if (mReverse) { type = (256 - type); } bw.Write((byte)type); bw.Write(mAnchorPoint.X); bw.Write(mAnchorPoint.Y); bw.Write((short)mTimePeriod); bw.Write(fA.Int16); if (fA[0]) { bw.Write(mOffset); } if (fA[1]) { bw.Write((short)mRadius1); } if (fA[2]) { bw.Write(mStartPhase); } if (fA[3]) { bw.Write(MathExt.ToRadians(mMoveRotation)); } if (fA[4]) { bw.Write((short)mRadius2); } if (fA[5]) { bw.Write(mPause1); } if (fA[6]) { bw.Write(mPause2); } if (fA[7]) { bw.Write(mPhase1); } if (fA[8]) { bw.Write(mPhase2); } if (fA[9]) { bw.Write(mPostDelayPhase); } if (fA[10]) { bw.Write(mMaxAngle); } if (fA[11]) { bw.Write(mUnknown8); } if (fA[14]) { bw.Write(MathExt.ToRadians(mRotation)); } if (fA[12]) { bw.Write(mUnknown10); bw.Write(mUnknown11); mBaseMovement.WriteData(bw, version); } if (fA[13]) { bw.Write(mObjectX); bw.Write(mObjectY); } }
public void ReadData(BinaryReader br, int version) { int mlink = br.ReadInt32(); if (mlink == 0) { return; } if (mlink != 1) { if (mLevel == null) { mMovementLinkREQUIRED = mlink; } else { mMovementLink = GetMovementLink(mlink); } return; } sbyte movementShape = br.ReadSByte(); mType = (MovementType)Math.Abs(movementShape); if (movementShape < 0) { mReverse = true; } int type = (int)mType; if (mReverse) { type = (256 - type); } mAnchorPoint.X = br.ReadSingle(); mAnchorPoint.Y = br.ReadSingle(); mTimePeriod = br.ReadInt16(); FlagGroup fA = new FlagGroup(br.ReadInt16()); if (fA[0]) { mOffset = br.ReadInt16(); } if (fA[1]) { mRadius1 = br.ReadInt16(); } if (fA[2]) { mStartPhase = br.ReadSingle(); } if (fA[3]) { mMoveRotation = MathExt.ToDegrees(br.ReadSingle()); } if (fA[4]) { mRadius2 = br.ReadInt16(); } if (fA[5]) { mPause1 = br.ReadInt16(); } if (fA[6]) { mPause2 = br.ReadInt16(); } if (fA[7]) { mPhase1 = br.ReadByte(); } if (fA[8]) { mPhase2 = br.ReadByte(); } if (fA[9]) { mPostDelayPhase = br.ReadSingle(); } if (fA[10]) { mMaxAngle = br.ReadSingle(); } if (fA[11]) { mUnknown8 = br.ReadSingle(); } if (fA[14]) { mRotation = MathExt.ToDegrees(br.ReadSingle()); } if (fA[12]) { mUnknown10 = br.ReadSingle(); mUnknown11 = br.ReadSingle(); //Another movement mBaseMovement = new Movement(mLevel); mBaseMovement.ReadData(br, version); //mBaseMovement = null; } if (fA[13]) { mObjectX = br.ReadSingle(); mObjectY = br.ReadSingle(); } }
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); } }
public void ReadGenericData(BinaryReader br, int version) { FlagGroup f = new FlagGroup(br.ReadInt32()); mCollision = f[5]; mVisible = f[6]; mCanMove = f[7]; mBackground = f[14]; mBaseObject = f[15]; mBallStopReset = f[20]; mForeground = f[22]; mDrawSort = f[24]; mForeground2 = f[25]; mDrawFloat = f[28]; if (f[0]) { mRolly = br.ReadSingle(); } if (f[1]) { mBouncy = br.ReadSingle(); } if (f[4]) { br.ReadInt32(); } if (f[8]) { mSolidColour = Color.FromArgb(br.ReadInt32()); } if (f[9]) { mOutlineColour = Color.FromArgb(br.ReadInt32()); } if (f[10]) { mImageFilename = LevelReader.ReadPopcapString(br); } if (f[11]) { mImageDX = br.ReadSingle(); } if (f[12]) { mImageDY = br.ReadSingle(); } if (f[13]) { mImageRotation = MathExt.ToDegrees(br.ReadSingle()); } if (f[16]) { br.ReadInt32(); } if (f[17]) { mID = LevelReader.ReadPopcapString(br); } if (f[18]) { br.ReadInt32(); } if (f[19]) { mSound = br.ReadByte(); } if (f[21]) { mLogic = LevelReader.ReadPopcapString(br); } if (f[23]) { mMaxBounceVelocity = br.ReadSingle(); } if (f[26]) { mSubID = br.ReadInt32(); } if (f[27]) { mFlipperFlags = br.ReadByte(); } if (f[2]) { mPegInfo = new PegInfo(this); mPegInfo.ReadData(br, version); } if (f[3]) { mMovement = new Movement(mLevel); mMovement.ReadData(br, version); } if (f[30] && version >= 0x50) { mShadow = f[30]; } }
public override void ReadData(BinaryReader br, int version) { FlagGroup fA = new FlagGroup(br.ReadByte()); FlagGroup fB = new FlagGroup(); if (version >= 0x23) fB = new FlagGroup(br.ReadByte()); if (fA[2]) br.ReadSingle(); if (fA[3]) br.ReadSingle(); if (fA[5]) br.ReadSingle(); if (fA[1]) br.ReadByte(); if (fA[4]) { X = br.ReadSingle(); Y = br.ReadSingle(); } //if arg0 (lots) if (fB[0]) br.ReadByte(); if (fB[1]) br.ReadInt32(); if (fB[2]) br.ReadInt16(); mCurved = true; FlagGroup fC = new FlagGroup(br.ReadInt16()); if (fC[8]) br.ReadSingle(); if (fC[9]) br.ReadSingle(); if (fC[2]) { mType = br.ReadByte(); if (mType == 5) mCurved = false; } if (fC[3]) { mCurvePoints = br.ReadByte() + 2; } if (fC[5]) br.ReadSingle(); //Left angle if (fC[6]) br.ReadSingle(); //Right angle //if arg0+3 ReadSingle ReadSingle if (fC[4]) mSectorAngle = br.ReadSingle(); if (fC[7]) mWidth = br.ReadSingle(); mTextureFlip = fC[10]; mLength = br.ReadSingle(); mAngle = br.ReadSingle(); byte[] hmm = br.ReadBytes(4); //for (int i = 0; i < 4; i++) // br.ReadByte(); }