Files
OldThink/Content.Server/AI/Utility/Considerations/Inventory/CanPutTargetInInventoryCon.cs
metalgearsloth b34bd7c188 AI preset curves and expandable optimisation (#1346)
* AI preset curves and expandable optimisation

Added preset curves for considerations to use just to avoid repeating the same variables all over the shop.

Moved common considerations for expanded actions onto the expandable action e.g. you need a free hand to be able to PickUpGloves so we'll just check it the once rather than for each action.

* FIX PRAGMA

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2020-08-11 22:01:55 +02:00

34 lines
1.0 KiB
C#

using Content.Server.AI.WorldState;
using Content.Server.AI.WorldState.States;
using Content.Server.AI.WorldState.States.Hands;
using Content.Server.AI.WorldState.States.Inventory;
using Content.Server.GameObjects.Components;
namespace Content.Server.AI.Utility.Considerations.Inventory
{
public class CanPutTargetInInventoryCon : Consideration
{
protected override float GetScore(Blackboard context)
{
// First check if target in inventory already
// If not then check if we have a free hand
var target = context.GetState<TargetEntityState>().GetValue();
if (target == null || !target.HasComponent<ItemComponent>())
{
return 0.0f;
}
foreach (var item in context.GetState<EnumerableInventoryState>().GetValue())
{
if (item == target)
{
return 1.0f;
}
}
return context.GetState<AnyFreeHandState>().GetValue() ? 1.0f : 0.0f;
}
}
}