/// <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); }