예제 #1
0
        public void AddToList(ActionList _list, bool addToSkipQueue, int _startIndex)
        {
            if (skipQueue.Count == 0 && _list.IsSkippable())
            {
                addToSkipQueue = true;
            }

            if (!IsListRunning(_list))
            {
                activeLists.Add(_list);

                if (addToSkipQueue && !ListIsInSkipQueue(_list) && _list.IsSkippable())
                {
                    skipQueue.Add(new SkipList(_list, _startIndex));
                }
            }

            if (_list.conversation)
            {
                conversationOnEnd = _list.conversation;
            }

            if (_list is RuntimeActionList && _list.actionListType == ActionListType.PauseGameplay && !_list.unfreezePauseMenus && KickStarter.playerMenus.ArePauseMenusOn(null))
            {
                // Don't affect the gamestate if we want to remain frozen
                return;
            }

            SetCorrectGameState();
        }
예제 #2
0
        /**
         * <summary>Adds a new ActionList, assumed to already be running, to the internal record of currently-running ActionLists, and sets the correct GameState in StateHandler.</summary>
         * <param name = "_list">The ActionList to run</param>
         * <param name = "addToSkipQueue">If True, then the ActionList will be added to the list of ActionLists to skip</param>
         * <param name = "_startIndex">The index number of the Action to start skipping from, if addToSkipQueue = True</param>
         */
        public void AddToList(ActionList _list, bool addToSkipQueue, int _startIndex)
        {
            if (skipQueue.Count == 0 && _list.IsSkippable ())
            {
                addToSkipQueue = true;
            }

            if (!IsListRunning (_list))
            {
                activeLists.Add (_list);

                if (addToSkipQueue && !ListIsInSkipQueue (_list) && _list.IsSkippable ())
                {
                    skipQueue.Add (new SkipList (_list, _startIndex));
                }
            }

            if (_list.conversation)
            {
                conversationOnEnd = _list.conversation;
            }

            if (_list is RuntimeActionList && _list.actionListType == ActionListType.PauseGameplay && !_list.unfreezePauseMenus && KickStarter.playerMenus.ArePauseMenusOn (null))
            {
                // Don't affect the gamestate if we want to remain frozen
                return;
            }

            SetCorrectGameState ();
        }
예제 #3
0
        public void ShowGUI()
        {
            runOnStart = EditorGUILayout.Toggle("Run on scene start?", runOnStart);
            runOnLoad  = EditorGUILayout.Toggle("Run on scene load?", runOnLoad);
            EditorGUILayout.HelpBox("The linked ActionList can also be run by invoking this script's RunActionList() method.", MessageType.Info);

            EditorGUILayout.Space();

            actionListSource = (ActionListSource)EditorGUILayout.EnumPopup("ActionList source:", actionListSource);
            switch (actionListSource)
            {
            case ActionListSource.InScene:
                actionList = (ActionList)EditorGUILayout.ObjectField("ActionList to run:", actionList, typeof(ActionList), true);

                if (actionList != null && actionList.IsSkippable())
                {
                    runInstantly = EditorGUILayout.Toggle("Run instantly?", runInstantly);
                }
                EditorGUILayout.Space();
                ShowParametersGUI(actionList);
                break;

            case ActionListSource.AssetFile:
                actionListAsset = (ActionListAsset)EditorGUILayout.ObjectField("Asset to run:", actionListAsset, typeof(ActionListAsset), false);

                if (actionListAsset != null && actionListAsset.IsSkippable())
                {
                    runInstantly = EditorGUILayout.Toggle("Run instantly?", runInstantly);
                }
                EditorGUILayout.Space();
                ShowParametersGUI(actionListAsset);
                break;
            }
        }
예제 #4
0
        public void ShowGUI()
        {
            runOnStart = EditorGUILayout.Toggle("Run on scene start?", runOnStart);
            runOnLoad  = EditorGUILayout.Toggle("Run on scene load?", runOnLoad);

            if (runOnLoad && KickStarter.settingsManager && KickStarter.settingsManager.playerSwitching == PlayerSwitching.Allow)
            {
                sceneLoadCondition = (SceneLoadCondition)EditorGUILayout.EnumPopup("Scene load condition:", sceneLoadCondition);
            }

            EditorGUILayout.Space();

            actionListSource = (ActionListSource)EditorGUILayout.EnumPopup("ActionList source:", actionListSource);
            switch (actionListSource)
            {
            case ActionListSource.InScene:
                actionList = (ActionList)EditorGUILayout.ObjectField("ActionList to run:", actionList, typeof(ActionList), true);

                if (actionList == null && GetComponent <ActionList>())
                {
                    actionList = GetComponent <ActionList>();
                }

                if (actionList && actionList.IsSkippable())
                {
                    runInstantly = EditorGUILayout.Toggle("Run instantly?", runInstantly);
                }
                EditorGUILayout.Space();
                ShowParametersGUI(actionList);
                break;

            case ActionListSource.AssetFile:
                actionListAsset = (ActionListAsset)EditorGUILayout.ObjectField("Asset to run:", actionListAsset, typeof(ActionListAsset), false);

                if (actionListAsset && actionListAsset.IsSkippable())
                {
                    runInstantly = EditorGUILayout.Toggle("Run instantly?", runInstantly);
                }
                EditorGUILayout.Space();
                ShowParametersGUI(actionListAsset);
                break;
            }

            EditorGUILayout.Space();
            EditorGUILayout.HelpBox("The linked ActionList can also be run by invoking this script's RunActionList() method.", MessageType.Info);
        }
예제 #5
0
 private bool IsTargetSkippable()
 {
     if (listSource == ListSource.InScene && actionList != null)
     {
         return(actionList.IsSkippable());
     }
     else if (listSource == ListSource.AssetFile && actionListAsset != null)
     {
         return(actionListAsset.IsSkippable());
     }
     return(false);
 }
 /**
  * <summary>Checks if a given ActionList should be skipped when the 'EndCutscene' input is triggered.</summary>
  * <param name = "actionList">The ActionList to check</param>
  * <param name = "originalValue">If True, the user would like it to be skippable.</param>
  * <returns>True if the ActionList can be skipped.</returns>
  */
 public bool CanAddToSkipQueue(ActionList actionList, bool originalValue)
 {
     if (!actionList.IsSkippable())
     {
         return(false);
     }
     else if (!KickStarter.actionListManager.IsInSkippableCutscene())
     {
         if (KickStarter.player)
         {
             playerIDOnStartQueue = KickStarter.player.ID;
         }
         else
         {
             playerIDOnStartQueue = -1;
         }
         return(true);
     }
     return(originalValue);
 }
예제 #7
0
        private void RunActionLists()
        {
            switch (actionListSource)
            {
            case ActionListSource.InScene:
                if (actionList != null)
                {
                    if (setParameters)
                    {
                        AssignParameterValues(actionList);
                    }

                    if (actionList.IsSkippable() && runInstantly)
                    {
                        actionList.Skip();
                    }
                    else
                    {
                        actionList.Interact();
                    }
                }
                break;

            case ActionListSource.AssetFile:
                if (actionListAsset != null)
                {
                    if (setParameters && runMultipleTimes)
                    {
                        if (actionListAsset.canRunMultipleInstances)
                        {
                            for (int i = 0; i < successiveGUIData.Length + 1; i++)
                            {
                                AssignParameterValues(actionListAsset, i);

                                if (actionListAsset.IsSkippable() && runInstantly)
                                {
                                    AdvGame.SkipActionListAsset(actionListAsset);
                                }
                                else
                                {
                                    actionListAsset.Interact();
                                }
                            }
                        }
                        else
                        {
                            ACDebug.LogWarning("Cannot set run multiple parameter configurations because the ActionList asset '" + actionListAsset + "' has 'Can run multiple instances?' unchecked.", actionListAsset);
                        }
                        return;
                    }

                    if (setParameters)
                    {
                        AssignParameterValues(actionListAsset);
                    }

                    if (actionListAsset.IsSkippable() && runInstantly)
                    {
                        AdvGame.SkipActionListAsset(actionListAsset);
                    }
                    else
                    {
                        actionListAsset.Interact();
                    }
                }
                break;
            }
        }