示例#1
0
    public override void OnEnter()
    {
        _surveyStateMachine.Blackboard = _surveySMBlackboard;
        _surveySMBlackboard.Cache      = Cache;
        _surveySMBlackboard.ResultParameters.Clear();
        _surveySMBlackboard.IsDebug = false;

        CursorOverlayService.Instance.ResetCursorToDefault();

        if (InputParameter != null && InputParameter.ActionInstigator != Entity.Null && InputParameter.ActionPrefab != Entity.Null)
        {
            if (SimWorld.TryGetComponent(InputParameter.ActionPrefab, out SimAssetId objectSimAssetID))
            {
                _surveySMBlackboard.ActionAuth = PresentationHelpers.FindActionAuth(objectSimAssetID);
            }

            if (_surveySMBlackboard.ActionAuth == null)
            {
                StateMachine.TransitionTo(UIStateType.Gameplay);
                return;
            }

            // Init process of parameter selection
            GameActionId actionId         = SimWorld.GetComponent <GameActionId>(InputParameter.ActionPrefab);
            GameAction   objectGameAction = GameActionBank.GetAction(actionId);

            _surveySMBlackboard.UseContext             = CommonReads.GetActionContext(SimWorld, InputParameter.ActionInstigator, InputParameter.ActionPrefab);
            _surveySMBlackboard.ParametersDescriptions = objectGameAction.GetExecutionContract(SimWorld, InputParameter.ActionPrefab).ParameterTypes;
        }
        else
        {
            _surveySMBlackboard.IsDebug = true;
        }

        _surveyStateMachine.TransitionTo(new SurveyState());
    }
 public static GameAction GetAction(GameActionId id)
 {
     return(GetAction(id.Value));
 }
示例#3
0
    public static Entity FindFirstItemWithGameAction(ISimWorldReadAccessor accessor, Entity pawn, GameActionId gameActionId, out int itemIndex)
    {
        if (accessor.TryGetBufferReadOnly(pawn, out DynamicBuffer <InventoryItemReference> inventory))
        {
            for (int i = 0; i < inventory.Length; i++)
            {
                if (accessor.TryGetComponent(inventory[i].ItemEntity, out GameActionId candidateGameActionId))
                {
                    if (candidateGameActionId.Equals(gameActionId))
                    {
                        itemIndex = i;
                        return(inventory[i].ItemEntity);
                    }
                }
            }
        }

        itemIndex = -1;
        return(Entity.Null);
    }
示例#4
0
 public static Entity FindFirstItemWithGameAction(ISimWorldReadAccessor accessor, Entity pawn, GameActionId gameActionId)
 {
     return(FindFirstItemWithGameAction(accessor, pawn, gameActionId, out _));
 }
示例#5
0
 public GameAction(GameActionId id, string description, Func <GameState, Phase> execute)
 {
     this.Id          = id;
     this.Description = description;
     this.Execute     = execute;
 }
示例#6
0
 private void ExecuteGameAction(GameActionId id)
 {
     Exit();
     Context.SceneManager.AddScene(PhaseSceneFactory.CreateSceneForPhase(_gameState, _phase.PossibleActions.Where(pa => pa.Id == id).First()?.Execute(_gameState)));
 }