using System.Collections.Generic; using System.Globalization; namespace BaseGames.AI { /// /// 具名、可枚举的 AI 临时值容器(每敌人实例一份)。 /// 保留"具名"是为了让调试器/MCP 能通用枚举当前值。 /// public sealed class Blackboard { readonly Dictionary _values = new Dictionary(); public void Set(string key, T value) => _values[key] = value; public T Get(string key) => _values.TryGetValue(key, out var v) && v is T t ? t : default; public bool Has(string key) => _values.ContainsKey(key); public IReadOnlyCollection Keys => _values.Keys; public void Clear() => _values.Clear(); /// 供调试器/MCP 自省:key → 值的字符串表示。 public Dictionary Snapshot() { var result = new Dictionary(_values.Count); foreach (var kv in _values) { result[kv.Key] = kv.Value is System.IFormattable f ? f.ToString(null, CultureInfo.InvariantCulture) : kv.Value?.ToString() ?? "null"; } return result; } } }