示例#1
0
 public bool Equals(WallLocation other)
 {
     return
         (WallX == other.WallX &&
          WallY == other.WallY &&
          X == other.X &&
          Y == other.Y &&
          Orientation == other.Orientation);
 }
示例#2
0
        public static bool TryParse(string locationString, out WallLocation location)
        {
            location = default;

            if (locationString.IndexOf(':') != 0)
            {
                return(false);
            }

            string[] parts = locationString.Split(' ');
            if (parts.Length != 3 ||
                parts[0].Length < 6 ||
                parts[1].Length < 5 ||
                parts[2].Length != 1 ||
                !parts[0].StartsWith(":w=") ||
                !parts[1].StartsWith("l="))
            {
                return(false);
            }

            string[] positions = parts[0].Substring(3).Split(',');
            if (positions.Length != 2)
            {
                return(false);
            }
            if (!int.TryParse(positions[0], out int wallX))
            {
                return(false);
            }
            if (!int.TryParse(positions[1], out int wallY))
            {
                return(false);
            }

            positions = parts[1].Substring(2).Split(',');
            if (positions.Length != 2)
            {
                return(false);
            }
            if (!int.TryParse(positions[0], out int x))
            {
                return(false);
            }
            if (!int.TryParse(positions[1], out int y))
            {
                return(false);
            }

            WallOrientation orientation;

            switch (parts[2][0])
            {
            case 'l': orientation = WallOrientation.Left; break;

            case 'r': orientation = WallOrientation.Right; break;

            default: return(false);
            }

            location = new WallLocation(wallX, wallY, x, y, orientation);
            return(true);
        }