custom-chatbot / data /AIBlackboard.cs
fastx's picture
Upload 64 files
00437a9
raw
history blame
1.34 kB
using Photon.Deterministic;
using System;
using System.Collections.Generic;
namespace Quantum
{
public unsafe partial class AIBlackboard
{
public AIBlackboardEntry[] Entries;
[NonSerialized] public Dictionary<String, Int32> Map;
public override void Loaded(IResourceManager resourceManager, Native.Allocator allocator)
{
base.Loaded(resourceManager, allocator);
Map = new Dictionary<string, Int32>();
for (Int32 i = 0; i < Entries.Length; i++)
{
Map.Add(Entries[i].Key.Key, i);
}
}
public Int32 GetEntryID(string key)
{
Assert.Check(string.IsNullOrEmpty(key) == false, "The Key cannot be empty or null.");
Assert.Check(Map.ContainsKey(key) == true, $"Key {0} not present in the Blackboard", key);
return Map[key];
}
public bool TryGetEntryID(string key, out Int32 id)
{
return Map.TryGetValue(key, out id);
}
public string GetEntryName(Int32 id)
{
return Entries[id].Key.Key;
}
public bool HasEntry(string key)
{
for (int i = 0; i < Entries.Length; i++)
{
if (Entries[i].Key.Key == key)
{
return true;
}
}
return false;
}
public AIBlackboardEntry GetEntry(string key)
{
for (int i = 0; i < Entries.Length; i++)
{
if (Entries[i].Key.Key == key)
{
return Entries[i];
}
}
return default;
}
}
}