add: Item Manager

This commit is contained in:
h z
2025-02-28 08:49:32 +00:00
parent e90f701bd5
commit d2f0ab8153
21 changed files with 648 additions and 24 deletions

60
src/Agents/AgentAction.cs Normal file
View File

@@ -0,0 +1,60 @@
using Godot;
namespace Polonium.Agents;
public abstract partial class AgentAction : Node
{
public abstract class Parameter
{
}
public virtual void SetParameter(Parameter p)
{
}
public abstract void Execute();
public abstract void Finish();
public abstract void Reset();
public abstract class Template : PoloniumTemplate<AgentAction>
{
public abstract string ActionName { get; }
public abstract Template Copy { get; }
}
public class Template<TAction> : Template
where TAction : AgentAction
{
public override string ActionName => PoloniumRegistry.Action<TAction>.Name;
public override TAction Get
{
get
{
TAction res = PoloniumRegistry.Asset<TAction>.Get();
res.Reset();
Modify(res);
return res;
}
}
public override void Modify(AgentAction obj)
{
if (obj is not TAction act)
return;
Modify(act);
}
public void Return(TAction res) => PoloniumRegistry.Asset<TAction>.Return(res);
public override Template Copy => new Template<TAction> { };
public virtual void Modify(TAction action)
{
}
}
}