Пример #1
0
        /// <summary>
        ///     Parses the specified message.
        /// </summary>
        /// <param name="message">The message.</param>
        /// <returns>The packet.</returns>
        public static AutoWalkPacket Parse(NetworkMessage message)
        {
            AutoWalkPacket packet = new AutoWalkPacket();

            packet.DirectionsCount = message.ReadByte();
            if (packet.DirectionsCount <= 0)
            {
                return(packet);
            }

            for (int index = 0; index < packet.DirectionsCount; index++)
            {
                AutoWalkDirection autoWalkDirection = (AutoWalkDirection)message.ReadByte();
                packet.Directions.Enqueue(autoWalkDirection.ToDirection());
            }

            packet.Directions = new Queue <Direction>(packet.Directions.Reverse());
            return(packet);
        }
        /// <summary>
        ///     Converts a specified auto-walk direction to its equivalent direction.
        /// </summary>
        /// <param name="autoWalkDirection">The auto-walk direction.</param>
        /// <returns>The direction.</returns>
        /// <exception cref="System.ArgumentOutOfRangeException">autoWalkDirection - Invalid AutoWalkDirection value</exception>
        public static Direction ToDirection(this AutoWalkDirection autoWalkDirection)
        {
            switch (autoWalkDirection)
            {
            case AutoWalkDirection.North:
                return(Direction.North);

            case AutoWalkDirection.NorthEast:
                return(Direction.NorthEast);

            case AutoWalkDirection.East:
                return(Direction.East);

            case AutoWalkDirection.SouthEast:
                return(Direction.SouthEast);

            case AutoWalkDirection.South:
                return(Direction.South);

            case AutoWalkDirection.SouthWest:
                return(Direction.SouthWest);

            case AutoWalkDirection.West:
                return(Direction.West);

            case AutoWalkDirection.NorthWest:
                return(Direction.NorthWest);

            case AutoWalkDirection.None:
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(autoWalkDirection), autoWalkDirection, "Invalid AutoWalkDirection value");
            }

            return(Direction.North);
        }