Beispiel #1
0
        public void ChangeState(StatesNames newState)
        {
            Vector3 m_MoveDirection = currentState.LeaveState(newState);

            currentState = this[newState];
            currentState.EnterState(m_MoveDirection);
        }
Beispiel #2
0
 public override void LeaveState(StatesNames newState)
 {
     Background.enabled = true;
     timeScale          = GameTime.timeScale;
     GameTime.timeScale = 0f;
     OnPause?.Invoke();
     Cursor.lockState = CursorLockMode.None;
     Cursor.visible   = true;
 }
Beispiel #3
0
        public override void LeaveState(StatesNames newState)
        {
            isChangingMain = false;
            isChangingAlt  = false;
            changingButton = "";

            OnChangingButtonFinished?.Invoke();
            SwitchStateObject(false);
        }
Beispiel #4
0
 State GetStateFromName(StatesNames _name)
 {
     foreach (State cur in states)
     {
         if (cur.stateName == _name)
         {
             return(cur);
         }
     }
     throw new ArgumentOutOfRangeException();
 }
Beispiel #5
0
 public bool CheckNewState(StatesNames newState)
 {
     for (int i = 0; i < allowedTransitions.Length; i++)
     {
         if (newState == allowedTransitions [i])
         {
             return(true);
         }
     }
     return(false);
 }
Beispiel #6
0
 State this[StatesNames stateName]
 {
     get
     {
         foreach (State cur in statesList)
         {
             if (cur.StateName == stateName)
             {
                 return(cur);
             }
         }
         throw new System.ArgumentOutOfRangeException();
     }
 }
Beispiel #7
0
        /// <summary>
        /// Notify observers of a specific State's value.
        /// </summary>
        /// <typeparam name="T">The State's value type.</typeparam>
        /// <param name="stateName">The state name.</param>
        /// <returns>The State.</returns>
        public override IState <T> PublishState <T>(StatesNames stateName)
        {
            bool      isDisplayed        = UITitle.Exist();
            var       genericIsDisplayed = (T)Convert.ChangeType(isDisplayed, typeof(T));
            State <T> state = stateName switch
            {
                StatesNames.Exist => new State <T>(this, StatesNames.Exist, genericIsDisplayed),
                StatesNames.Ready => new State <T>(this, StatesNames.Ready, genericIsDisplayed),
                _ => throw new ArgumentException($"Undefined {nameof(StatesNames)}: {stateName}."),
            };

            NotifyObservers(state);
            return(state);
        }
Beispiel #8
0
        public void ChangeState(StatesNames _name)
        {
            if (_name == currentState.stateName || !IsChangeStateAllowed)
            {
                return;
            }
            if (!currentState.CheckNewState(_name))
            {
                throw new ArgumentOutOfRangeException($"Transition {currentState.stateName} - {_name} not allowed");
            }
            currentState.LeaveState(_name);
            previousState = currentState;
            State newState = GetStateFromName(_name);

            currentState = newState;
            currentState.EnterState();
        }
Beispiel #9
0
        public void ChangeState(string _name)
        {
            StatesNames temp = _name.GetStateNameFromString();

            ChangeState(temp);
        }
Beispiel #10
0
 public static string GetString(this StatesNames name)
 {
     return(name.ToString().ToLower());
 }
Beispiel #11
0
 public virtual void LeaveState(StatesNames newState)
 {
     SwitchStateObject(false);
 }
Beispiel #12
0
 public override Vector3 LeaveState(StatesNames newState)
 {
     return(m_MoveDirection);
 }
Beispiel #13
0
 public abstract Vector3 LeaveState(StatesNames newState);
Beispiel #14
0
 public State(INavigable navigable, StatesNames name, T value)
 {
     Navigable = navigable;
     Name      = name;
     Value     = value;
 }
Beispiel #15
0
 /// <summary>
 /// Notify observers of a specific State's value.
 /// </summary>
 /// <typeparam name="T">The State's value type.</typeparam>
 /// <param name="stateName">The state name.</param>
 /// <returns>The State.</returns>
 public abstract IState <T> PublishState <T>(StatesNames stateName);
Beispiel #16
0
 public override void LeaveState(StatesNames newState)
 {
     SwitchStateObject(false);
     inputField.text = "";
     isActive        = false;
 }
Beispiel #17
0
 public override Vector3 LeaveState(StatesNames newState)
 {
     return(Vector3.zero);
 }