## MapData.gd # Resource class that stores all data for a generated map, including tile types, rooms, and spawn points. class_name MapData extends Resource # Enum for all possible tile types in the map grid. # Used to distinguish between empty space, walkable floor, walls, doors, and stairs. enum TileType { VOID, # Unused/empty space FLOOR, # Walkable floor tile WALL, # Solid wall tile DOOR, # Door tile (can be opened/closed) STAIRS # Stairs tile (for level transitions) } # The main grid: Dictionary mapping Vector2i coordinates to TileType values. # This is the authoritative source for the map's layout. @export var grid: Dictionary = {} # The number of rooms generated for this map (set during generation). @export var room_count: int = 0 # List of all room rectangles (Rect2i) in the map, used for spawning and logic. @export var rooms: Array[Rect2i] = [] # The starting position for the player (in grid coordinates). @export var spawn_point: Vector2i = Vector2i.ZERO # Returns true if the tile at 'coords' is of the given TileType. # Used for pathfinding and logic checks. func is_tile_type(coords: Vector2i, type: TileType) -> bool: return grid.get(coords, TileType.VOID) == type # Clears all map data so this resource can be reused for a new map. func clear() -> void: grid.clear() rooms.clear() room_count = 0 spawn_point = Vector2i.ZERO