Ejemplo n.º 1
0
        public SpeedAlert( MovementSource source, INotificationProvider provider )
        {
            this.source = source;
            NotificationProvider = provider;

            timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds( 5 ) };
            timer.Tick += Timer_Tick;

            source.PropertyChanged += Source_PropertyChanged;
        }
Ejemplo n.º 2
0
        public void DecodeFromPacket(Packet packet, MovementSource source)
        {
            PacketCreationDate = packet.PacketCreationTime;

            Source = source;
            short foothold = 0;
            byte  stance   = 0;

            var x = packet.ReadShort();
            var y = packet.ReadShort();

            OriginalPosition = new Pos(x, y);

            var movementCount = packet.ReadByte();

            Elements = new MoveElement[movementCount];

            for (var i = 0; i < movementCount; i++)
            {
                var mt = (MovementType)packet.ReadByte();
                var me = new MoveElement
                {
                    Type     = mt,
                    Foothold = foothold,
                    X        = x,
                    Y        = y,
                    Stance   = stance
                };

                switch (mt)
                {
                case MovementType.NormalMovement:
                case MovementType.NormalMovement2:
                    me.X         = packet.ReadShort();
                    me.Y         = packet.ReadShort();
                    me.XVelocity = packet.ReadShort();
                    me.YVelocity = packet.ReadShort();
                    me.Foothold  = packet.ReadShort();

                    me.Stance      = packet.ReadByte();
                    me.TimeElapsed = packet.ReadShort();
                    break;

                case MovementType.Jump:
                case MovementType.JumpKb:
                case MovementType.FlashJump:
                    me.XVelocity = packet.ReadShort();
                    me.YVelocity = packet.ReadShort();

                    me.Stance      = packet.ReadByte();
                    me.TimeElapsed = packet.ReadShort();
                    break;


                case MovementType.Immediate:
                case MovementType.Teleport:
                case MovementType.Assaulter:
                    me.X        = packet.ReadShort();
                    me.Y        = packet.ReadShort();
                    me.Foothold = packet.ReadShort();

                    me.Stance      = packet.ReadByte();
                    me.TimeElapsed = packet.ReadShort();
                    break;

                case MovementType.Falling:
                    me.Stat = packet.ReadByte();
                    break;

                default:
                    me.Stance      = packet.ReadByte();
                    me.TimeElapsed = packet.ReadShort();
                    break;
                }

                x        = me.X;
                y        = me.Y;
                foothold = me.Foothold;
                stance   = me.Stance;

                Elements[i] = me;
            }

            var keypadStates = packet.ReadByte();

            for (var i = 0; i < keypadStates; i++)
            {
                if ((i % 2) == 0)
                {
                    packet.ReadByte();
                }
            }

            NewPosition = new Pos(x, y);
            NewStance   = stance;
            NewFoothold = foothold;
        }