示例#1
0
 public void OnBattleTimePause(PauseRequestType pauseType)
 {
     if (pauseType == PauseRequestType.Unpause)
     {
         actorAnimator.Pause(false);
     }
     else if (!ignoreNextPause)
     {
         actorAnimator.Pause(true);
     }
     ignoreNextPause = false;
 }
 void LateUpdate()
 {
     if (pauseThisUpdate)
     {
         isRunning       = false;
         pauseThisUpdate = false;
         OnBattleTimePaused(reasonForPause);
         if (unpauseThisUpdate)
         {
             throw new System.Exception("Pause and unpause requested on same update!" +
                                        "If this is multiplayer this can probably default to paused?");
         }
     }
     else if (unpauseThisUpdate)
     {
         isRunning = true;
         OnBattleTimePaused(PauseRequestType.Unpause);
         unpauseThisUpdate = false;
         reasonForPause    = PauseRequestType.NotPaused;
     }
 }
        /// <summary>
        /// Returns true if is pausing. Returns false if unpausing.
        /// </summary>
        /// <param name="reason"></param>
        /// <returns></returns>
        public bool PauseRequest(PauseRequestType reason, PlayerBattleController controller)
        {
            switch (reason)
            {
            case PauseRequestType.Unpause:
                if (!playersRequestedPause.Remove(controller))
                {
                    Debug.LogError("Player did not request pause");
                }
                else if (playersRequestedPause.Count == 0)
                {
                    unpauseThisUpdate = true;
                }
                break;

            case PauseRequestType.ChooseCommand:
                if (!BattleManager.instance.isActiveCommand)
                {
                    pauseThisUpdate = true;
                    reasonForPause  = reason;
                    playersRequestedPause.Add(controller, reason);
                }
                break;

            case PauseRequestType.ControllerLost:
                pauseThisUpdate = true;
                reasonForPause  = reason;
                throw new System.Exception("Need pop-up to handle controller disconnect!");

            case PauseRequestType.GamePause:
                if (Time.timeScale == 0)
                {
                    if (hardPauseRequestedBy == controller)
                    {
                        GetComponent <BattleManager>().ToggleInputAllPlayers(true);
                        pauseDisplay.SetActive(false);
                        Time.timeScale       = 1;
                        hardPauseRequestedBy = null;
                    }
                }
                else
                {
                    GetComponent <BattleManager>().ToggleInputAllPlayers(false);
                    hardPauseRequestedBy = controller;
                    pauseDisplay.SetActive(true);
                    Time.timeScale = 0;
                }

                break;

            case PauseRequestType.FinishedCommandInput:
                if (reasonForPause != PauseRequestType.ActionContest)
                {
                    if (!isPaused)
                    {
                        unpauseThisUpdate = true;
                        reasonForPause    = reason;
                    }
                }
                break;

            case PauseRequestType.ActionContest:
                if (!isPaused)
                {
                    pauseThisUpdate = true;
                    reasonForPause  = reason;
                }
                break;
            }

            return(pauseThisUpdate);
        }