namespace Hallucinate.GameSetup.Maze { /// /// Represents a 2D coordinate on the maze grid. /// Used as a lightweight value type to avoid GC allocations. /// public readonly struct MapLocation { public readonly int x; public readonly int z; public MapLocation(int _x, int _z) { x = _x; z = _z; } // Static predefined directions to eliminate magic numbers in algorithms public static MapLocation Right => new MapLocation(1, 0); public static MapLocation Left => new MapLocation(-1, 0); public static MapLocation Up => new MapLocation(0, 1); public static MapLocation Down => new MapLocation(0, -1); /// /// Returns a list of all 4 cardinal directions. /// public static System.Collections.Generic.List Directions => new System.Collections.Generic.List { Right, Up, Left, Down }; } }