Example #1
0
        public void SendGo(List <int> pathSteps)
        {
            if (pathSteps == null)
            {
                return;
            }

            CreatureStorage.ClearTargets();
            var message = _packetWriter.CreateMessage();

            if (pathSteps.Count == 1)
            {
                switch ((PathDirection)(pathSteps[0] & 65535))
                {
                case PathDirection.East: message.WriteEnum(GameclientMessageType.GoEast); break;

                case PathDirection.NorthEast: message.WriteEnum(GameclientMessageType.GoNorthEast); break;

                case PathDirection.North: message.WriteEnum(GameclientMessageType.GoNorth); break;

                case PathDirection.NorthWest: message.WriteEnum(GameclientMessageType.GoNorthWest); break;

                case PathDirection.West: message.WriteEnum(GameclientMessageType.GoWest); break;

                case PathDirection.SouthWest: message.WriteEnum(GameclientMessageType.GoSouthWest); break;

                case PathDirection.South: message.WriteEnum(GameclientMessageType.GoSouth); break;

                case PathDirection.SouthEast: message.WriteEnum(GameclientMessageType.GoSouthEast); break;

                default: return;
                }
            }
            else
            {
                int pathMaxSteps = (byte)System.Math.Min(byte.MaxValue, pathSteps.Count);

                message.WriteEnum(GameclientMessageType.GoPath);
                message.WriteUnsignedByte((byte)pathMaxSteps);
                int i = 0;
                while (i < pathMaxSteps)
                {
                    message.WriteUnsignedByte((byte)(pathSteps[i] & 65535));
                    i++;
                }
            }

            _packetWriter.FinishMessage();
        }