Add utility AI (#806)
Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com> Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com> Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
This commit is contained in:
31
Content.Server/AI/WorldState/BlackboardManager.cs
Normal file
31
Content.Server/AI/WorldState/BlackboardManager.cs
Normal file
@@ -0,0 +1,31 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Robust.Shared.Interfaces.Reflection;
|
||||
using Robust.Shared.IoC;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Server.AI.WorldState
|
||||
{
|
||||
// This will also handle the global blackboard at some point
|
||||
/// <summary>
|
||||
/// Manager the AI blackboard states
|
||||
/// </summary>
|
||||
public sealed class BlackboardManager
|
||||
{
|
||||
// Cache the known types
|
||||
public IReadOnlyCollection<Type> AiStates => _aiStates;
|
||||
private List<Type> _aiStates = new List<Type>();
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
var reflectionManager = IoCManager.Resolve<IReflectionManager>();
|
||||
|
||||
foreach (var state in reflectionManager.GetAllChildren(typeof(IAiState)))
|
||||
{
|
||||
_aiStates.Add(state);
|
||||
}
|
||||
|
||||
DebugTools.AssertNotNull(_aiStates);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user