/////////////////////////////////////////////////////////////////////////////// // /////////////////////////////////////////////////////////////////////////////// // ------------------------------------------------------------------ // 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; }
/////////////////////////////////////////////////////////////////////////////// // 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; }
/////////////////////////////////////////////////////////////////////////////// // 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 ); }