71 lines
1.9 KiB
C#
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();
|
|
}
|
|
}
|