32 lines
949 B
C#
32 lines
949 B
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace ET
|
|
{
|
|
[Code]
|
|
public class AIDispatcherComponent: Singleton<AIDispatcherComponent>, ISingletonAwake
|
|
{
|
|
private readonly Dictionary<string, AAIHandler> aiHandlers = new();
|
|
|
|
public void Awake()
|
|
{
|
|
var types = CodeTypes.Instance.GetTypes(typeof (AIHandlerAttribute));
|
|
foreach (Type type in types)
|
|
{
|
|
AAIHandler aaiHandler = Activator.CreateInstance(type) as AAIHandler;
|
|
if (aaiHandler == null)
|
|
{
|
|
Log.Error($"robot ai is not AAIHandler: {type.Name}");
|
|
continue;
|
|
}
|
|
this.aiHandlers.Add(type.Name, aaiHandler);
|
|
}
|
|
}
|
|
|
|
public AAIHandler Get(string key)
|
|
{
|
|
this.aiHandlers.TryGetValue(key, out var aaiHandler);
|
|
return aaiHandler;
|
|
}
|
|
}
|
|
} |