Beispiel #1
0
    ///////////////////////////////////////////////////////////////////////////////
    //
    ///////////////////////////////////////////////////////////////////////////////
    // ------------------------------------------------------------------
    // Desc:
    // ------------------------------------------------------------------
    protected override void InitStateMachine()
    {
        // ========================================================
        // init states
        // ========================================================

        fsm.State sleep = new fsm.State( "sleep", stateMachine );
        sleep.onEnter += EnterSleep;
        sleep.onAction += UpdateSleep;

        fsm.State prepare = new fsm.State( "prepare", stateMachine );
        prepare.onEnter += EnterPrepare;
        prepare.onExit += ExitPrepare;

        fsm.State run = new fsm.State( "run", stateMachine );
        run.onEnter += EnterRun;
        run.onAction += UpdateRun;

        fsm.State finish = new fsm.State( "finish", stateMachine );
        finish.onEnter += EnterFinish;
        finish.onAction += UpdateFinish;

        fsm.State pause = new fsm.State( "pause", stateMachine );
        pause.onEnter += EnterPause;
        pause.onExit += ExitPause;

        fsm.State deactive = new fsm.State( "deactive", stateMachine );
        deactive.onEnter += EnterDeactive;

        // ========================================================
        // setup transitions
        // ========================================================

        sleep.Add<fsm.EventTransition> ( prepare, (int)EventType.Prepare );
        sleep.Add<fsm.EventTransition> ( deactive, (int)EventType.Deactive );

        prepare.Add<fsm.EventTransition> ( run, (int)EventType.Run );
        prepare.Add<fsm.EventTransition> ( deactive, (int)EventType.Deactive );

        run.Add<fsm.EventTransition> ( finish, (int)EventType.Finish );
        run.Add<fsm.EventTransition> ( deactive, (int)EventType.Deactive );
        run.Add<fsm.EventTransition> ( pause, (int)EventType.Pause );

        finish.Add<fsm.EventTransition> ( deactive, (int)EventType.Deactive );

        pause.Add<fsm.EventTransition> ( run, (int)EventType.Resume );
        pause.Add<fsm.EventTransition> ( sleep, (int)EventType.Sleep );

        deactive.Add<fsm.EventTransition> ( sleep, (int)EventType.Sleep );

        //
        stateMachine.initState = sleep;
        // stateMachine.logDebugInfo = true;
    }
Beispiel #2
0
    ///////////////////////////////////////////////////////////////////////////////
    // functions
    ///////////////////////////////////////////////////////////////////////////////
    // ------------------------------------------------------------------
    // Desc:
    // ------------------------------------------------------------------
    protected override void InitStateMachine()
    {
        // ========================================================
        // init states
        // ========================================================

        fsm.State getReady = new fsm.State( "getReady", stateMachine );
        getReady.onEnter += EnterGetReady;

        fsm.State noBullet = new fsm.State( "noBullet", stateMachine );
        noBullet.onEnter += EnterNoBullet;
        noBullet.onExit += ExitNoBullet;

        fsm.State mainLoop = new fsm.State( "mainLoop", stateMachine );
        mainLoop.onEnter += EnterMainLoopState;
        mainLoop.onAction += UpdateMainLoopState;
        mainLoop.onExit += ExitMainLoopState;
        mainLoop.mode = fsm.State.Mode.Parallel;

        fsm.State pause = new fsm.State( "pause", stateMachine );
        pause.onEnter += EnterPauseState;
        pause.onExit += ExitPauseState;

        fsm.State gameOver = new fsm.State( "gameOver", stateMachine );
        gameOver.onEnter += EnterGameOverState;
        gameOver.onAction += UpdateGameOverState;

        fsm.State restart = new fsm.State( "restart", stateMachine );
        restart.onEnter += EnterRestartState;
        restart.onExit += ExitRestartState;

        // ========================================================
        // setup transitions
        // ========================================================

        getReady.Add<fsm.EventTransition> ( noBullet, fsm.Event.NEXT );

        noBullet.Add<fsm.EventTransition> ( mainLoop, fsm.Event.NEXT );

        mainLoop.Add<fsm.EventTransition> ( gameOver, (int)EventType.GameOver );
        mainLoop.Add<fsm.EventTransition> ( restart, (int)EventType.Reset );
        mainLoop.Add<fsm.EventTransition> ( pause, (int)EventType.Pause );

        pause.Add<fsm.EventTransition> ( mainLoop, (int)EventType.Resume );
        pause.Add<fsm.EventTransition> ( restart, (int)EventType.Reset );

        gameOver.Add<fsm.EventTransition> ( restart, (int)EventType.Reset );

        restart.Add<fsm.EventTransition> ( getReady, (int)EventType.Restart );

        //
        stateMachine.initState = getReady;
        // stateMachine.logDebugInfo = true;
    }
Beispiel #3
0
    ///////////////////////////////////////////////////////////////////////////////
    // properties
    ///////////////////////////////////////////////////////////////////////////////
    // public LoadingIndicator loadingIndicator;
    ///////////////////////////////////////////////////////////////////////////////
    // functions
    ///////////////////////////////////////////////////////////////////////////////
    // ------------------------------------------------------------------
    // Desc:
    // ------------------------------------------------------------------
    protected override void InitStateMachine()
    {
        // ========================================================
        // init states
        // ========================================================

        fsm.State launch = new fsm.State( "launch", stateMachine );
        launch.onEnter += EnterLaunchState;
        launch.onExit += ExitLaunchState;

        fsm.State loading = new fsm.State( "loading", stateMachine );
        loading.onEnter += EnterLoadingState;
        loading.onExit += ExitLoadingState;

        fsm.State stage = new fsm.State( "stage", stateMachine );
        stage.onEnter += EnterStageState;
        stage.onExit += ExitStageState;

        // ========================================================
        // setup transitions
        // ========================================================

        launch.Add<fsm.EventTransition> ( stage, (int)EventType.ShowStage );

        loading.Add<fsm.EventTransition> ( stage, (int)EventType.ShowStage );

        stage.Add<fsm.EventTransition> ( loading, (int)EventType.LoadStage );
    }