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