Files
Continentis/Assets/Scripts/ScriptExtensions/CommandQueue/CommandContext.cs
SoulliesOfficial 61a397dd4c MOD!
2025-10-23 00:49:44 -04:00

56 lines
1.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System.Collections.Generic;
namespace SLSFramework.General
{
/// <summary>
/// 指令内容 (Command Context)
/// 包含了指令执行时可能需要的所有游戏状态信息。
/// 指令组开始执行时创建的CommandContext会被传递给每一个子指令。
/// 在ICommand内置的CommandContext中则包含了该指令执行时特有的信息。
/// </summary>
public class CommandContext
{
public readonly Dictionary<string, object> context;
public CommandContext()
{
context = new Dictionary<string, object>();
}
public CommandContext(string key, object value)
{
context = new Dictionary<string, object>
{
{ key, value }
};
}
public CommandContext(List<KeyValuePair<string, object>> initialInfo)
{
context = new Dictionary<string, object>();
foreach (var pair in initialInfo)
{
context[pair.Key] = pair.Value;
}
}
public CommandContext Clone()
{
var newContext = new CommandContext();
foreach (var pair in context)
{
newContext.context[pair.Key] = pair.Value;
}
return newContext;
}
public T GetInfo<T>(string key)
{
if (context.TryGetValue(key, out object value) && value is T typedValue)
{
return typedValue;
}
return default;
}
}
}