public bool Equals(WallLocation other) { return (WallX == other.WallX && WallY == other.WallY && X == other.X && Y == other.Y && Orientation == other.Orientation); }
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); }