Beispiel #1
0
        public Movements(InPacket iPacket)
            : base()
        {
            this.Position = iPacket.ReadPoint();
            this.Velocity = iPacket.ReadPoint();
            iPacket.Skip(1); // NOTE: Unknown.

            byte count = iPacket.ReadByte();

            while (count-- > 0)
            {
                Movement movement = new Movement();

                movement.Type = (MovementType)iPacket.ReadByte();

                switch (movement.Type)
                {
                case MovementType.Normal:
                case MovementType.Unknown5:
                case MovementType.Unknown15:
                case MovementType.Unknown17:
                {
                    movement.Position = iPacket.ReadPoint();
                    movement.Velocity = iPacket.ReadPoint();
                    movement.Foothold = iPacket.ReadShort();
                    this.LastFoothold = movement.Foothold;

                    if (movement.Type != MovementType.Unknown15)
                    {
                        movement.Stance   = iPacket.ReadByte();
                        movement.Duration = iPacket.ReadShort();
                    }
                }
                break;

                case MovementType.Unknown1:
                case MovementType.Unknown2:
                case MovementType.Unknown6:
                case MovementType.Unknown12:
                case MovementType.Unknown13:
                case MovementType.Unknown16:
                case MovementType.Unknown18:
                case MovementType.Unknown19:
                case MovementType.Unknown20:
                case MovementType.Unknown22:
                {
                    movement.Velocity = iPacket.ReadPoint();
                    movement.Stance   = iPacket.ReadByte();
                    movement.Duration = iPacket.ReadShort();
                }
                break;

                case MovementType.Unknown3:
                case MovementType.Unknown4:
                case MovementType.Unknown7:
                case MovementType.Unknown8:
                case MovementType.Unknown9:
                case MovementType.Unknown11:
                {
                    movement.Position = iPacket.ReadPoint();
                    movement.Foothold = iPacket.ReadShort();
                    this.LastFoothold = movement.Foothold;
                    movement.Stance   = iPacket.ReadByte();
                    movement.Duration = iPacket.ReadShort();
                }
                break;

                case MovementType.Unknown14:
                {
                    // TODO: Jump down or equipment, not sure.
                }
                break;

                case MovementType.Unknown10:
                {
                    movement.Statistic = iPacket.ReadByte();
                }
                break;
                }

                this.Add(movement);
            }
        }