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)); }
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); }
public static Entity FindFirstItemWithGameAction(ISimWorldReadAccessor accessor, Entity pawn, GameActionId gameActionId) { return(FindFirstItemWithGameAction(accessor, pawn, gameActionId, out _)); }
public GameAction(GameActionId id, string description, Func <GameState, Phase> execute) { this.Id = id; this.Description = description; this.Execute = execute; }
private void ExecuteGameAction(GameActionId id) { Exit(); Context.SceneManager.AddScene(PhaseSceneFactory.CreateSceneForPhase(_gameState, _phase.PossibleActions.Where(pa => pa.Id == id).First()?.Execute(_gameState))); }