RiftMayhem/Assets/Scripts/Editor/ability-editor-core.cs

71 lines
1.9 KiB
C#

using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
using System.Linq;
using System;
public partial class AbilityEditorWindow : EditorWindow
{
private Vector2 scrollPosition;
private string searchQuery = "";
private AbilityCreationData abilityData;
private Type selectedAbilityType;
private Dictionary<string, Type> abilityTypes;
[MenuItem("Tools/Ability Editor")]
public static void ShowWindow()
{
GetWindow<AbilityEditorWindow>("Ability Editor");
}
private void OnEnable()
{
InitializeData();
CacheAbilityTypes();
}
private void InitializeData()
{
abilityData = new AbilityCreationData();
}
private void CacheAbilityTypes()
{
// Cache all ability types that inherit from BaseAbility
abilityTypes = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(assembly => assembly.GetTypes())
.Where(type => type.IsClass && !type.IsAbstract && typeof(BaseAbility).IsAssignableFrom(type))
.ToDictionary(type => type.Name, type => type);
}
private void OnGUI()
{
DrawHeader();
DrawSearchBar();
scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition);
DrawAbilityCreation();
EditorGUILayout.Space(20);
DrawExistingAbilities();
EditorGUILayout.EndScrollView();
}
private void DrawHeader()
{
EditorGUILayout.Space(10);
GUILayout.Label("Ability Editor", EditorStyles.boldLabel);
EditorGUILayout.Space(5);
}
private void DrawSearchBar()
{
EditorGUILayout.BeginHorizontal();
searchQuery = EditorGUILayout.TextField("Search", searchQuery);
if (GUILayout.Button("Clear", GUILayout.Width(50)))
searchQuery = "";
EditorGUILayout.EndHorizontal();
}
}