Ejemplo n.º 1
0
        protected override GUIFSM <Button> CreateFSM()
        {
            var iState = new ButtonState();

            iState.AddTransition(GUIEventID.MouseEnter, 1);
            iState.AddTransition(GUIEventID.FocusGained, 2);

            var hState = new ButtonState();

            hState.AddTransition(GUIEventID.MouseExit, 0);
            hState.AddTransition(GUIEventID.FocusGained, 3);

            var fState = new FocusedState();

            fState.AddTransition(GUIEventID.FocusLost, 0);
            fState.AddTransition(GUIEventID.MouseEnter, 3);

            var fhState = new FocusedState();

            fhState.AddTransition(GUIEventID.FocusLost, 1);
            fhState.AddTransition(GUIEventID.MouseExit, 2);
            fhState.AddTransition(GUIEventID.LeftMouseDown, 4);

            var phState = new PressedState();

            phState.AddTransition(GUIEventID.LeftMouseUp, 3);
            phState.AddTransition(GUIEventID.MouseExit, 5);
            phState.AddTransition(GUIEventID.FocusLost, 1);

            var pState = new FocusedState();

            pState.AddTransition(GUIEventID.MouseEnter, 4);
            pState.AddTransition(GUIEventID.LeftMouseUp, 2);
            pState.AddTransition(GUIEventID.FocusLost, 0);

            return(new GUIFSM <Button>(this, new GUIState <Button>[] { iState, hState, fState, fhState, phState, pState }));
        }