Exemplo n.º 1
0
    public SurveyBaseController FindCustomSurveyPrefabForParameters(params GameAction.ParameterDescription[] parameters)
    {
        if (parameters.Length == 0)
        {
            return(null);
        }

        // example: 3 parameters
        // try find survey for all 3 params
        // then try find survey for 2 params
        // then try find survey for 1 params
        // return null

        SurveyBaseController result = null;

        for (int i = parameters.Length; i > 0; i--)
        {
            result = TryFindCustomSurveyPrefabForParametersSubset(parameters, i);
            if (result != null)
            {
                break;
            }
        }

        return(result);
    }
    private void StartNewSurvey(SurveyBaseController surveyPrefab)
    {
        if (SurveyManager.Instance.IsSurveyRunning)
        {
            SurveyManager.Instance.StopCurrentSurvey();
        }

        if (surveyPrefab != null)
        {
            var useContext = new GameAction.ExecutionContext();

            UIStateMachine.Instance.TransitionTo(UIStateType.ParameterSelection);

            SurveyManager.Instance.BeginSurvey(_focusLocation, useContext, new List <GameAction.ParameterData>(), surveyPrefab.CreateDebugQuery(), surveyPrefab, this.OnSurveyComplete, this.OnSurveyCancel);
        }
    }
Exemplo n.º 3
0
    public void BeginSurvey(Vector3 surveyLocation,
                            GameAction.ExecutionContext useContext,
                            List <GameAction.ParameterData> currentResultData,
                            GameAction.ParameterDescription[] parameters,
                            SurveyBaseController surveyPrefab,
                            System.Action <List <GameAction.ParameterData> > onCompleteCallback,
                            System.Action onCancelCallback)
    {
        GameObject surveyInstance = Instantiate(surveyPrefab.gameObject, surveyLocation, Quaternion.identity, _surveyContainer);

        SurveyBaseController surveyController = surveyInstance.GetComponent <SurveyBaseController>();

        if (surveyController != null)
        {
            _currentSurvey = surveyController;

            surveyController.StartSurvey(delegate(List <GameAction.ParameterData> resultData)
            {
                onCompleteCallback.Invoke(resultData);

                if (surveyController.DelayBeforeDestruction > 0)
                {
                    GameObject surveyObject = surveyController.gameObject;
                    this.DelayedCall(surveyController.DelayBeforeDestruction, () =>
                    {
                        if (surveyObject != null)
                        {
                            Destroy(surveyObject);
                        }
                    });
                }
                else
                {
                    Destroy(surveyController.gameObject);
                }
            }, onCancelCallback, useContext, currentResultData, parameters);
        }
        else
        {
            Debug.LogError("Skipping request because it couldn't start");

            // can't start mini-game, complete it immediatly
            List <GameAction.ParameterData> DefaultResults = new List <GameAction.ParameterData>();
            onCompleteCallback.Invoke(DefaultResults);
        }
    }
    private void Update()
    {
        if (!Game.Started)
        {
            return;
        }

        if (Input.GetKeyDown(KeyCode.R))
        {
            RequestSurvey();
        }

        if (_requestedSurveyPrefab != null)
        {
            StartNewSurvey(_requestedSurveyPrefab);
            _requestedSurveyPrefab = null;
        }
    }
Exemplo n.º 5
0
    public void BeginDefaultSurvey(Vector3 requestLocation, GameAction.ExecutionContext useContext, List <GameAction.ParameterData> currentResultData, GameAction.ParameterDescription parameterDescription, System.Action <List <GameAction.ParameterData> > onCompleteCallback, System.Action onCancelCallback)
    {
        SurveyBaseController surveyPrefab = null;

        // find default survey for param
        foreach (DefaultSurveyReference request in _defaultSurveys)
        {
            if (request.ParameterType == parameterDescription.GetParameterDescriptionType())
            {
                surveyPrefab = request.Survey.GetComponent <SurveyBaseController>();
                break;
            }
        }

        if (surveyPrefab != null)
        {
            BeginSurvey(requestLocation, useContext, currentResultData, new GameAction.ParameterDescription[] { parameterDescription }, surveyPrefab, onCompleteCallback, onCancelCallback);
        }
    }
Exemplo n.º 6
0
        public override void OnEnter()
        {
            Done           = false;
            _doneNextFrame = false;

            HUDDisplay.Instance.ToggleVisibility(false);

            if (Blackboard.IsDebug)
            {
                return;
            }

            // the parameter
            int remainingParamCount = Blackboard.ParametersDescriptions.Length - Blackboard.ResultParameters.Count;

            GameAction.ParameterDescription[] remainingParams = ArrayX.SubArray(Blackboard.ParametersDescriptions, Blackboard.ResultParameters.Count, remainingParamCount);

            if (remainingParams.Length < 1)
            {
                OnSurveyCancel();
                return;
            }

            SurveyBaseController surveyPrefab = Blackboard.ActionAuth.FindCustomSurveyPrefabForParameters(remainingParams);

            if (surveyPrefab != null)
            {
                SurveyManager.Instance.BeginSurvey(Blackboard.Cache.LocalPawnPositionFloat, Blackboard.UseContext, Blackboard.ResultParameters, remainingParams, surveyPrefab, OnSurveyComplete, OnSurveyCancel);
            }
            else
            {
                // default case
                Blackboard.ResultParameters.Add(null);
                _doneNextFrame = true;

                //GameAction.ParameterDescription parameterToHandle = remainingParams[0];
                //SurveyManager.Instance.BeginDefaultSurvey(Blackboard.Cache.LocalPawnPositionFloat, Blackboard.UseContext, Blackboard.ResultParameters, parameterToHandle, OnSurveyComplete, OnSurveyCancel);
            }
        }
 private void RequestSurvey()
 {
     // we queue this in the update instead of doing it right away to make sure we alway begin it AFTER clicking the Ui
     _requestedSurveyPrefab = _availableSuveys[_surveyDropdown.value];
 }