Exemple #1
0
        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();
            }
        }
Exemple #2
0
        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();
            }
        }
Exemple #3
0
		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.");
            }
        }
Exemple #5
0
		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();
		}
Exemple #6
0
		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);
			}
		}
Exemple #7
0
        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);
        }
Exemple #8
0
        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);
            }
        }
Exemple #9
0
		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);
		}
Exemple #10
0
        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);
        }
Exemple #11
0
        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();
            }
        }
Exemple #12
0
        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);
        }
Exemple #13
0
		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);
            }
        }
Exemple #15
0
		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();
		}
Exemple #16
0
        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();
            }
        }
Exemple #17
0
        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 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);
        }
Exemple #19
0
        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);
            }
        }
Exemple #20
0
		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);
		}
Exemple #21
0
		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();
			}
		}
Exemple #22
0
		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);
			}
		}
Exemple #23
0
        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 });
        }
Exemple #24
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);
			}
		}
Exemple #25
0
		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();
			}
		}
Exemple #26
0
        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();
        }
Exemple #27
0
        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();
            }
        }
Exemple #28
0
		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 });
		}
Exemple #29
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);
		}
Exemple #30
0
		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];
		}
Exemple #31
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);
            }
        }
Exemple #32
0
        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();
            }
        }
Exemple #33
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);
            }
        }
Exemple #34
0
		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();
			}


		}
Exemple #35
0
        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);
            }
        }
Exemple #36
0
        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];
            }
        }
Exemple #37
0
		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();
		}