using UnityEditor; using UnityEngine; using UnityEngine.UIElements; namespace Escape_Room_Engine.Engine.Scripts.Editor { public class EngineEditor : EditorWindow { private Button _generateRoomButton, _skipCurrentRoomButton; [MenuItem("Window/Engine/Engine Editor")] public static void ShowEditor() { var window = GetWindow(); window.titleContent = new GUIContent("Engine Editor"); } public void CreateGUI() { _generateRoomButton = new Button(GenerateRoom) { text = "Generate Room" }; rootVisualElement.Add(_generateRoomButton); _skipCurrentRoomButton = new Button(SkipCurrentRoom) { text = "Skip Current Room" }; rootVisualElement.Add(_skipCurrentRoomButton); EditorApplication.playModeStateChanged += _ => UpdateUI(); UpdateUI(); } private void GenerateRoom() { if (EditorApplication.isPlaying) { Engine.DefaultEngine.HideOldestRoom(); Engine.DefaultEngine.GenerateRoom(); UpdateUI(); } } private void SkipCurrentRoom() { if (EditorApplication.isPlaying) { Engine.DefaultEngine.CurrentRoom.Match(some: room => room.SkipRoom()); UpdateUI(); } } private void UpdateUI() { _generateRoomButton.SetEnabled(EditorApplication.isPlaying); _skipCurrentRoomButton.SetEnabled(EditorApplication.isPlaying && Engine.DefaultEngine.NumberOfRooms > 0); } } }