using System.Collections.Generic; using Cirno.Scripts.Enums; using Godot; using Godot.Collections; namespace Cirno.Scripts.Resources.Roguelite; [GlobalClass] public partial class RogueliteRoomResource : Resource { [Export] public StringName RoomName { get; set; } [Export] public RoomType Type { get; set; } = RoomType.Regular; [Export] public StringName ScenePath { get; set; } [Export] public Vector2I Size { get; set; } = new(1, 1); [Export] public Array DoorGridPositions { get; set; } = []; [Export] public Array SpawnableEnemies { get; set; } [Export] public DoorDirections DoorDirections { get; set; } public bool HasDoors(DoorDirections required) => (DoorDirections & required) == required; public override string ToString() { return $"{RoomName} {Type} {Size.X}x{Size.Y}"; } public List GetTopRoomOffsets(Vector2I gridPosition) { List offsets = []; for (int i = 0; i < Size.X; i++) { offsets.Add(new Vector2I(gridPosition.X - i, gridPosition.Y)); } return offsets; } }