Considerations are now instantiated under a manager and re-used between entities where they pass in their blackboard to get a score back. Also makes the API a bit nicer to use. Also some random cleanup. Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
26 lines
920 B
C#
26 lines
920 B
C#
using System;
|
|
using Content.Server.AI.WorldState;
|
|
using Content.Server.AI.WorldState.States.Utility;
|
|
|
|
namespace Content.Server.AI.Utility.Considerations.State
|
|
{
|
|
/// <summary>
|
|
/// Simple NullCheck on a StoredState
|
|
/// </summary>
|
|
public sealed class StoredStateEntityIsNullCon : Consideration
|
|
{
|
|
public StoredStateEntityIsNullCon Set(Type type, Blackboard context)
|
|
{
|
|
// Ideally we'd just use a variable but then if we were iterating through multiple AI at once it'd be
|
|
// Stuffed so we need to store it on the AI's context.
|
|
context.GetState<StoredStateIsNullState>().SetValue(type);
|
|
return this;
|
|
}
|
|
|
|
protected override float GetScore(Blackboard context)
|
|
{
|
|
var stateData = context.GetState<StoredStateIsNullState>().GetValue();
|
|
return stateData == null ? 1.0f : 0.0f;
|
|
}
|
|
}
|
|
} |