60 lines
1.7 KiB
C#
60 lines
1.7 KiB
C#
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<EngineEditor>();
|
|
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);
|
|
}
|
|
}
|
|
} |