public override void Shutdown(Outcome outcome) { base.Shutdown(outcome); var blackboard = UtilityAiHelpers.GetBlackboard(_owner); blackboard?.GetState <LastOpenedStorageState>().SetValue(null); }
public override Outcome Execute(float frameTime) { if (!ContainerHelpers.TryGetContainer(_target, out var container)) { return(Outcome.Success); } if (!InteractionChecks.InRangeUnobstructed(_owner, container.Owner.Transform.MapPosition, ignoredEnt: container.Owner)) { return(Outcome.Failed); } if (!container.Owner.TryGetComponent(out EntityStorageComponent? storageComponent) || storageComponent.IsWeldedShut) { return(Outcome.Failed); } if (!storageComponent.Open) { var activateArgs = new ActivateEventArgs { User = _owner, Target = _target }; storageComponent.Activate(activateArgs); } var blackboard = UtilityAiHelpers.GetBlackboard(_owner); blackboard?.GetState <LastOpenedStorageState>().SetValue(container.Owner); return(Outcome.Success); }
public override Outcome Execute(float frameTime) { if (!_target.TryGetContainer(out var container)) { return(Outcome.Success); } if (!EntitySystem.Get <SharedInteractionSystem>().InRangeUnobstructed(_owner, container.Owner, popup: true)) { return(Outcome.Failed); } if (!IoCManager.Resolve <IEntityManager>().TryGetComponent(container.Owner, out EntityStorageComponent? storageComponent) || storageComponent.IsWeldedShut) { return(Outcome.Failed); } if (!storageComponent.Open) { var activateArgs = new ActivateEventArgs(_owner, _target); storageComponent.Activate(activateArgs); } var blackboard = UtilityAiHelpers.GetBlackboard(_owner); blackboard?.GetState <LastOpenedStorageState>().SetValue(container.Owner); return(Outcome.Success); }
public override bool Shutdown(Outcome outcome) { if (!base.Shutdown(outcome)) { return(false); } var blackboard = UtilityAiHelpers.GetBlackboard(_owner); blackboard?.GetState <LastOpenedStorageState>().SetValue(default);
public override bool TryStartup() { if (!base.TryStartup()) { return(true); } var blackboard = UtilityAiHelpers.GetBlackboard(_owner); if (blackboard == null) { return(false); } _target = blackboard.GetState <LastOpenedStorageState>().GetValue(); return(_target != null); }