Ejemplo n.º 1
0
    public void PerformTransition(TRANSITION transition)
    {
        if (transition == TRANSITION.NullTransition)
        {
            WKStaticFunction.WKMessageError("the transition is null");
            return;
        }

        STATE_ID stateID = _CurrentState.GetState(transition);

        if (stateID == STATE_ID.NullStateID)
        {
            WKStaticFunction.WKMessageError("the state of transition is null ::" + _CurrentState.ID.ToString() + transition.ToString());
            return;
        }

        _CurrentStateID = stateID;
        STATE_ID previousState = _CurrentState.ID;

        foreach (FSMState state in _States)
        {
            if (state.ID == _CurrentStateID)
            {
                _CurrentState.OnLeave();
                _CurrentState = state;
                _CurrentState._PreviousState = previousState;
                _CurrentState.OnEnter();
                break;
            }
        }
    }
 private void CheckInput()
 {
     if (Input.GetKeyDown(KeyCode.LeftArrow))
     {
         transition    = TRANSITION.LEFT;
         currentNumber = (currentNumber + 59) % 60;
         safelock.transform.Rotate(rotateDegree, 0, 0);
         tick.Play();
     }
     else if (Input.GetKeyDown(KeyCode.RightArrow))
     {
         transition    = TRANSITION.RIGHT;
         currentNumber = (currentNumber + 1) % 60;
         safelock.transform.Rotate(-rotateDegree, 0, 0);
         tick.Play();
     }
     else if (Input.GetKeyDown(KeyCode.Space))
     {
         transition = TRANSITION.DOOR;
     }
     else
     {
         transition = TRANSITION.NULL;
     }
 }
 // Use this for initialization
 void Start()
 {
     rotateDegree = 360.0f / 60.0f;
     state        = STATE.INIT;
     transition   = TRANSITION.NULL;
     openDoorEnd  = -10.0f;
     ResetPasswd();
 }
Ejemplo n.º 4
0
    public STATE_ID GetState(TRANSITION transition)
    {
        if (_Map.ContainsKey(transition))
        {
            return(_Map[transition]);
        }

        return(STATE_ID.NullStateID);
    }
Ejemplo n.º 5
0
 // set the transition so the things in the app gonna call this to transition from one state
 //To another
 public void SetTransition(TRANSITION transition)
 {
     if (_FSM != null)
     {
         _FSM.PerformTransition(transition);
     }
     else
     {
         WKStaticFunction.WKMessageError("there is no fsm system in the app");
         MakeFSM();
     }
 }
Ejemplo n.º 6
0
    public void DeleteTransition(TRANSITION transition)
    {
        if (transition == TRANSITION.NullTransition)
        {
            WKStaticFunction.WKMessageError("The Transition is null, or not fully initialized");
            return;
        }

        if (_Map.ContainsKey(transition))
        {
            _Map.Remove(transition);
            return;
        }

        WKStaticFunction.WKMessageLog("The Transition is not on the transition _Map");
    }
Ejemplo n.º 7
0
    public void AddTransition(TRANSITION Transition, STATE_ID StateID)
    {
        if (Transition == TRANSITION.NullTransition)
        {
            WKStaticFunction.WKMessageError("The Transition is error");
            return;
        }

        if (StateID == STATE_ID.NullStateID)
        {
            WKStaticFunction.WKMessageError("The State is error");
            return;
        }

        if (_Map.ContainsKey(Transition))
        {
            WKStaticFunction.WKMessageError("The FSM already have this transition for state");
            return;
        }
        _Map.Add(Transition, StateID);
    }
Ejemplo n.º 8
0
    private void OpenMenu(Menu menu, TRANSITION transition)
    {
        menu.ResetTriggers();

        if (Instance.CurrentMenu != null)
        {
            if (transition == TRANSITION.CLOSE)
            {
                Instance.CurrentMenu.Close();
            }
            else
            {
                if (transition == TRANSITION.STACK)
                {
                    Instance.History.Push(Instance.CurrentMenu);
                }

                Instance.CurrentMenu.Hide();
            }
        }

        Instance.CurrentMenu = menu;
        Instance.CurrentMenu.Open();
    }