using System.Collections.Generic; using EscapeRoomEngine.Engine.Runtime.Modules; using EscapeRoomEngine.Engine.Runtime.Utilities; using JetBrains.Annotations; using NaughtyAttributes; using UnityEngine; namespace EscapeRoomEngine.Engine.Runtime { [CreateAssetMenu(menuName = "Engine Theme")] public class EngineTheme : ScriptableObject { #region Size [BoxGroup("Size")] [Tooltip("The minimum size that should be allowed for rooms.")] public Vector2Int minRoomSize; [BoxGroup("Size")] [Tooltip("The size of the physical play space available to the engine.")] public Vector2Int playSpace; #endregion #region Theme [BoxGroup("Theme")] [Required] public SpaceTile spaceTile; [BoxGroup("Theme")] public GameObject environment; [BoxGroup("Theme")] public DynamicColor puzzleColor, solvedColor, activeColor; #endregion #region Doors [BoxGroup("Doors")] [Required] public DoorModuleDescription spawnDoor; [BoxGroup("Doors")] [ValidateInput("IsNotEmpty", "At least one exit door type is required.")] public List exitDoorTypes; #endregion #region Puzzles [BoxGroup("Puzzles")] [MinMaxSlider(0, 24)] public Vector2Int puzzleCount; [BoxGroup("Puzzles")] public List puzzleTypes; #endregion [UsedImplicitly] private bool IsNotEmpty(List modules) => modules.Count > 0; } }