示例#1
0
    protected override void InitStateMachine()
    {
        base.InitStateMachine();

        fsm.State awake = new fsm.State("awake", stateMachine);
        awake.onEnter  += EnterAwakeState;
        awake.onAction += UpdateAwakeState;

        fsm.State load = new fsm.State("load", stateMachine);
        load.onEnter  += EnterLoadtate;
        load.onAction += UpdateLoadState;
        load.onExit   += ExitLoadState;

        reconnectState           = new fsm.State("reconnectState", stateMachine);
        reconnectState.onEnter  += EnterReconnectState;
        reconnectState.onAction += UpdateReconnectState;
        reconnectState.onExit   += ExitReconnectState;

        fsm.State run = new fsm.State("run", stateMachine);
        run.onEnter  += EnterRunState;
        run.onAction += UpdateRunState;
        run.onExit   += ExitRunState;

        reconnectState.Add <fsm.EventTransition>(run, (int)EventType.RUN);

        run.Add <fsm.EventTransition>(reconnectState, (int)EventType.RECONNECT);

        awake.Add <fsm.EventTransition>(load, (int)EventType.LOAD);
        load.Add <fsm.EventTransition>(run, (int)EventType.RUN);
        load.Add <fsm.EventTransition>(awake, (int)EventType.AWAKE);
        load.Add <fsm.EventTransition>(reconnectState, (int)EventType.RECONNECT);//加载的时候可能掉线重连

        stateMachine.initState = awake;
    }
示例#2
0
    protected override void InitStateMachine()
    {
        base.InitStateMachine();

        fsm.State cower = new fsm.State("cower", stateMachine);
        cower.onEnter  += EnterCowerState;
        cower.onAction += UpdateCowerState;

        fsm.State backOn = new fsm.State("beckon", stateMachine);
        backOn.onEnter  += EnterBeckonState;
        backOn.onAction += UpdateBeckonState;



        idle.Add <fsm.EventTransition>(cower, (int)EventType.Cower);
        idle.Add <fsm.EventTransition>(backOn, (int)EventType.Beckon);

        cower.Add <fsm.EventTransition>(idle, (int)EventType.Idle);
        cower.Add <fsm.EventTransition>(backOn, (int)EventType.Beckon);
        cower.Add <fsm.EventTransition>(move, (int)EventType.Move);

        backOn.Add <fsm.EventTransition>(idle, (int)EventType.Idle);
        backOn.Add <fsm.EventTransition>(cower, (int)EventType.Cower);
        backOn.Add <fsm.EventTransition>(move, (int)EventType.Move);

        move.Add <fsm.EventTransition>(backOn, (int)EventType.Beckon);
        move.Add <fsm.EventTransition>(idle, (int)EventType.Idle);
        move.Add <fsm.EventTransition>(cower, (int)EventType.Cower);

        randIdle.Add <fsm.EventTransition>(cower, (int)EventType.Cower);
        randIdle.Add <fsm.EventTransition>(backOn, (int)EventType.Beckon);
    }
示例#3
0
    protected override void InitStateMachine()
    {
        base.InitStateMachine();

        fsm.State awake = new fsm.State("awake", stateMachine);
        awake.onEnter  += EnterAwakeState;
        awake.onAction += UpdateAwakeState;

        fsm.State newbieGuide = new fsm.State("newbieGuide", stateMachine);
        newbieGuide.onEnter  += EnterNewbieGuideState;
        newbieGuide.onAction += UpdateNewbieGuideState;
        newbieGuide.onExit   += ExitNewbieGuideState;


        fsm.State load = new fsm.State("load", stateMachine);
        load.onEnter  += EnterLoadtate;
        load.onAction += UpdateLoadState;
        load.onExit   += ExitLoadState;

        reconnectState           = new fsm.State("reconnectState", stateMachine);
        reconnectState.onEnter  += EnterReconnectState;
        reconnectState.onAction += UpdateReconnectState;
        reconnectState.onExit   += ExitReconnectState;

        fsm.State run = new fsm.State("run", stateMachine);
        run.onEnter  += EnterRunState;
        run.onAction += UpdateRunState;
        run.onExit   += ExitRunState;

        fsm.State blackProcess = new fsm.State("blackProcess", stateMachine);
        blackProcess.onEnter  += EnterBlackProcesstate;
        blackProcess.onAction += UpdateBlackProcesState;
        blackProcess.onExit   += ExitBlackProcesState;


        awake.Add <fsm.EventTransition>(load, (int)EventType.LOAD);
        awake.Add <fsm.EventTransition>(newbieGuide, (int)EventType.NEWBIE_GUIDE);
        newbieGuide.Add <fsm.EventTransition>(load, (int)EventType.LOAD);
        newbieGuide.Add <fsm.EventTransition>(run, (int)EventType.RUN);
        load.Add <fsm.EventTransition>(run, (int)EventType.RUN);
        load.Add <fsm.EventTransition>(awake, (int)EventType.AWAKE);       //加载的时候可能掉线重连
        load.Add <fsm.EventTransition>(newbieGuide, (int)EventType.NEWBIE_GUIDE);
        //run.Add<fsm.EventTransition>(sceneAnimState, (int)EventType.SCENE_ANIMATION);
        //sceneAnimState.Add<fsm.EventTransition>(run, (int)EventType.RUN);
        blackProcess.Add <fsm.EventTransition>(run, (int)EventType.RUN);
        //blackProcess.Add<fsm.EventTransition>(sceneAnimState, (int)EventType.SCENE_ANIMATION);
        blackProcess.Add <fsm.EventTransition>(load, (int)EventType.LOAD);
        //sceneAnimState.Add<fsm.EventTransition>(blackProcess, (int)EventType.BLACK_PROCESS);
        run.Add <fsm.EventTransition>(blackProcess, (int)EventType.BLACK_PROCESS);
        load.Add <fsm.EventTransition>(blackProcess, (int)EventType.BLACK_PROCESS);
        //load.Add<fsm.EventTransition>(reconnectState, (int)EventType.RECONNECT);

        reconnectState.Add <fsm.EventTransition>(run, (int)EventType.RUN);

        run.Add <fsm.EventTransition>(reconnectState, (int)EventType.RECONNECT);
        load.Add <fsm.EventTransition>(reconnectState, (int)EventType.RECONNECT);

        stateMachine.initState = awake;
    }
示例#4
0
    /// <summary>
    /// 初始化状态机 by吴江
    /// </summary>
    protected override void InitStateMachine()
    {
        normalMove           = new fsm.State("normalMove", stateMachine);
        normalMove.onEnter  += EnterNormalState;
        normalMove.onExit   += ExitNormalState;
        normalMove.onAction += UpdateNormalState;

        pathMove           = new fsm.State("pathMove", stateMachine);
        pathMove.onEnter  += EnterPathMoveState;
        pathMove.onExit   += ExitPathMoveState;
        pathMove.onAction += UpdatePathMoveState;


        keyboardMove           = new fsm.State("keyboardMove", stateMachine);
        keyboardMove.onEnter  += EnterKeyBoardMoveState;
        keyboardMove.onExit   += ExitKeyBoardMoveState;
        keyboardMove.onAction += UpdateKeyBoardMoveState;


        abilityMove           = new fsm.State("abilityMove", stateMachine);
        abilityMove.onEnter  += EnterAbilityMoveState;
        abilityMove.onExit   += ExitAbilityMoveState;
        abilityMove.onAction += UpdateAbilityMoveState;

        gameMasterMove           = new fsm.State("gameMasterMove", stateMachine);
        gameMasterMove.onEnter  += EnterGameMasterMoveState;
        gameMasterMove.onExit   += ExitGameMasterMoveState;
        gameMasterMove.onAction += UpdateGameMasterMoveState;

        normalMove.Add <fsm.EventTransition>(pathMove, (int)EventType.PATHMOVE);
        normalMove.Add <fsm.EventTransition>(keyboardMove, (int)EventType.KEYBOARDMOVE);
        normalMove.Add <fsm.EventTransition>(abilityMove, (int)EventType.ABILITYMOVE);
        normalMove.Add <fsm.EventTransition>(gameMasterMove, (int)EventType.GM_MOVE);

        pathMove.Add <fsm.EventTransition>(normalMove, (int)EventType.NORMALMOVE);
        pathMove.Add <fsm.EventTransition>(keyboardMove, (int)EventType.KEYBOARDMOVE);
        pathMove.Add <fsm.EventTransition>(abilityMove, (int)EventType.ABILITYMOVE);
        pathMove.Add <fsm.EventTransition>(gameMasterMove, (int)EventType.GM_MOVE);

        keyboardMove.Add <fsm.EventTransition>(normalMove, (int)EventType.NORMALMOVE);
        keyboardMove.Add <fsm.EventTransition>(pathMove, (int)EventType.PATHMOVE);
        keyboardMove.Add <fsm.EventTransition>(abilityMove, (int)EventType.ABILITYMOVE);
        keyboardMove.Add <fsm.EventTransition>(gameMasterMove, (int)EventType.GM_MOVE);

        abilityMove.Add <fsm.EventTransition>(normalMove, (int)EventType.NORMALMOVE);
        abilityMove.Add <fsm.EventTransition>(pathMove, (int)EventType.PATHMOVE);
        abilityMove.Add <fsm.EventTransition>(gameMasterMove, (int)EventType.GM_MOVE);


        gameMasterMove.Add <fsm.EventTransition>(normalMove, (int)EventType.NORMALMOVE);
        gameMasterMove.Add <fsm.EventTransition>(keyboardMove, (int)EventType.KEYBOARDMOVE);
        gameMasterMove.Add <fsm.EventTransition>(abilityMove, (int)EventType.ABILITYMOVE);
        gameMasterMove.Add <fsm.EventTransition>(pathMove, (int)EventType.PATHMOVE);


        stateMachine.initState = pathMove;
    }
示例#5
0
    protected override void InitStateMachine()
    {
        base.InitStateMachine();
        fsm.State fightWin = new fsm.State("fightWin", basicState);
        fightWin.onEnter  += EnterFightWinState;
        fightWin.onAction += UpdateFightWinState;

        fsm.State fightLose = new fsm.State("fightLose", basicState);
        fightLose.onEnter  += EnterFightLoseState;
        fightLose.onAction += UpdateFightLoseState;

        fsm.State jump = new fsm.State("jump", basicState);
        jump.onEnter  += EnterJumpState;
        jump.onAction += UpdateJumpState;
        jump.onExit   += ExitJumpState;


        durative          = new fsm.State("magic", basicState);
        durative.onEnter += EnterMagicState;
        durative.onExit  += ExitMagicState;

        idle.Add <fsm.EventTransition>(fightWin, (int)EventType.FightWin);
        idle.Add <fsm.EventTransition>(fightLose, (int)EventType.FightLose);

        idle.Add <fsm.EventTransition>(jump, (int)EventType.Jump);

        move.Add <fsm.EventTransition>(jump, (int)EventType.Jump);
        switchCombat.Add <fsm.EventTransition>(jump, (int)EventType.Jump);
        abilityEnding.Add <fsm.EventTransition>(jump, (int)EventType.Jump);

        jump.Add <fsm.EventTransition>(idle, (int)EventType.Idle);
        jump.Add <fsm.EventTransition>(move, (int)EventType.Move);
        jump.Add <fsm.EventTransition>(switchCombat, (int)EventType.SwitchToCombat);
        jump.Add <fsm.EventTransition>(abilityPrepare, (int)EventType.AbilityPrepare);
        jump.Add <fsm.EventTransition>(durative, (int)EventType.Durative);



        fightLose.Add <fsm.EventTransition>(idle, (int)EventType.Idle);
        fightWin.Add <fsm.EventTransition>(idle, (int)EventType.Idle);

        durative.Add <fsm.EventTransition>(idle, (int)EventType.Idle);
        durative.Add <fsm.EventTransition>(dead, (int)EventType.Dead);
        durative.Add <fsm.EventTransition>(move, (int)EventType.Move);
        durative.Add <fsm.EventTransition>(injury, (int)EventType.Injury);
        durative.Add <fsm.EventTransition>(randIdle, (int)EventType.RndIdle);
        durative.Add <fsm.EventTransition>(switchCombat, (int)EventType.SwitchToCombat);
        durative.Add <fsm.EventTransition>(mountMove, (int)EventType.MountMove);
        durative.Add <fsm.EventTransition>(mountIdle, (int)EventType.MountIdle);
        durative.Add <fsm.EventTransition>(abilityPrepare, (int)EventType.AbilityPrepare);
    }
示例#6
0
    // ------------------------------------------------------------------
    // 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);
    }
示例#7
0
    protected override void InitStateMachine()
    {
        base.InitStateMachine();

        fsm.State awake = new fsm.State("awake", stateMachine);
        awake.onEnter  += EnterAwakeState;
        awake.onAction += UpdateAwakeState;


        fsm.State password = new fsm.State("password", stateMachine);
        password.onEnter  += EnterPassWordState;
        password.onAction += UpdatePassWordState;
        password.onExit   += ExitPassWordState;


        fsm.State findpass = new fsm.State("findpass", stateMachine);
        findpass.onEnter += EnterFindPassState;

        fsm.State mainland = new fsm.State("mainland", stateMachine);


        fsm.State regist = new fsm.State("regist", stateMachine);
        regist.onEnter += EnterRegisState;

        fsm.State stop = new fsm.State("stop", stateMachine);
        stop.onEnter += EnterStopState;

        //等待选择
        fsm.State waitcreate = new fsm.State("waitcreate", stateMachine);
        waitcreate.onEnter  += EnterWaitCreateState;
        waitcreate.onAction += UpdateWaitCreateState;

        awake.Add <fsm.EventTransition>(password, (int)EventType.PASS_WORD);

        password.Add <fsm.EventTransition>(findpass, (int)EventType.FIND_PASS);
        password.Add <fsm.EventTransition>(mainland, (int)EventType.MAIN_LAND);
        password.Add <fsm.EventTransition>(regist, (int)EventType.REGIST);
        password.Add <fsm.EventTransition>(stop, (int)EventType.STOP);

        findpass.Add <fsm.EventTransition>(password, (int)EventType.PASS_WORD);

        regist.Add <fsm.EventTransition>(password, (int)EventType.PASS_WORD);

        password.Add <fsm.EventTransition>(waitcreate, (int)EventType.WAITCREATE);
        stateMachine.initState = awake;
    }
示例#8
0
    protected override void InitStateMachine()
    {
        base.InitStateMachine();
        stateMachine.mode = fsm.State.Mode.Parallel;

        fsm.State basicState = new fsm.State("basicState", stateMachine);

        fsm.State create = new fsm.State("create", basicState);
        create.onEnter  += EnterCreateState;
        create.onExit   += ExitCreateState;
        create.onAction += UpdateCreateState;

        idle.Add <fsm.EventTransition>(create, (int)EventType.Create);

        create.Add <fsm.EventTransition>(idle, (int)EventType.Idle);
        create.Add <fsm.EventTransition>(dead, (int)EventType.Dead);
        create.Add <fsm.EventTransition>(move, (int)EventType.Move);
        create.Add <fsm.EventTransition>(injury, (int)EventType.Injury);
        create.Add <fsm.EventTransition>(randIdle, (int)EventType.RndIdle);
    }
示例#9
0
    protected override void InitStateMachine()
    {
        base.InitStateMachine();
        stateMachine.mode = fsm.State.Mode.Parallel;

        fsm.State basicState = new fsm.State("basicState", stateMachine);

        fsm.State normal = new fsm.State("normal", basicState);
        normal.onEnter += EnterNormalState;

        fsm.State appear = new fsm.State("appear", basicState);
        appear.onEnter += EnterAppearState;


        fsm.State disappear = new fsm.State("disappear", basicState);
        disappear.onEnter += EnterDisappearState;

        normal.Add <fsm.EventTransition>(appear, (int)EventType.Appear);
        normal.Add <fsm.EventTransition>(disappear, (int)EventType.Disappear);
    }
示例#10
0
    protected override void InitStateMachine()
    {
        fsm.State start = new fsm.State("start", stateMachine);
        start.onEnter  += EnterStartState;
        start.onExit   += ExitStartState;
        start.onAction += UpdateStartState;

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

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

        fsm.State over = new fsm.State("over", stateMachine);
        over.onEnter  += EnterOverState;
        over.onExit   += ExitOverState;
        over.onAction += UpdateOverState;

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

        start.Add <fsm.EventTransition>(mainLoop, (int)EventType.Run);
        start.Add <fsm.EventTransition>(over, (int)EventType.Over);

        mainLoop.Add <fsm.EventTransition>(over, (int)EventType.Over);
        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);

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

        restart.Add <fsm.EventTransition>(start, (int)EventType.Restart);
    }
示例#11
0
    protected override void InitStateMachine()
    {
        base.InitStateMachine();

        fsm.State select = new fsm.State("select", basicState);
        select.onEnter  += EnterSelectedState;
        select.onAction += UpdateSelectedState;
        select.onExit   += ExitSelectedState;

        select.Add <fsm.EventTransition>(idle, (int)EventType.Idle);
        idle.Add <fsm.EventTransition>(select, (int)EventType.SelectedEnd);
    }
示例#12
0
    protected override void InitStateMachine()
    {
        base.InitStateMachine();
        fsm.State awake = new fsm.State("awake", stateMachine);
        awake.onEnter  += EnterAwakeState;
        awake.onExit   += ExitAwakeState;
        awake.onAction += UpdateAwakeState;

        fsm.State findDart = new fsm.State("findDart", stateMachine);
        findDart.onEnter  += EnterFindDartState;
        findDart.onExit   += ExitFindDartState;
        findDart.onAction += UpdateFindDartState;

        fsm.State autoDart = new fsm.State("autoDart", stateMachine);
        autoDart.onEnter  += EnterAutoDartState;
        autoDart.onExit   += ExitAutoDartState;
        autoDart.onAction += UpdateAutoDartState;

        fsm.State selfCtrl = new fsm.State("selfCtrl", stateMachine);
        selfCtrl.onEnter  += EnterSelfCtrlState;
        selfCtrl.onExit   += ExitSelfCtrlState;
        selfCtrl.onAction += UpdateSelfCtrlState;

        stateMachine.onStop  = OnStop;
        stateMachine.onStart = OnStart;

        awake.Add <fsm.EventTransition>(findDart, (int)EventType.FINDDART);
        awake.Add <fsm.EventTransition>(selfCtrl, (int)EventType.SELF_CTRL);

        findDart.Add <fsm.EventTransition>(autoDart, (int)EventType.AUTODART);
        findDart.Add <fsm.EventTransition>(selfCtrl, (int)EventType.SELF_CTRL);

        autoDart.Add <fsm.EventTransition>(selfCtrl, (int)EventType.SELF_CTRL);
        autoDart.Add <fsm.EventTransition>(findDart, (int)EventType.FINDDART);

        selfCtrl.Add <fsm.EventTransition>(autoDart, (int)EventType.AUTODART);
        selfCtrl.Add <fsm.EventTransition>(findDart, (int)EventType.FINDDART);

        stateMachine.initState = awake;
    }
示例#13
0
    protected override void InitStateMachine()
    {
        base.InitStateMachine();

        fsm.State awake = new fsm.State("awake", stateMachine);
        awake.onEnter  += EnterAwakeState;
        awake.onAction += UpdateAwakeState;

        fsm.State start = new fsm.State("start", stateMachine);
        start.onEnter += EnterBegainState;

        fsm.State wait = new fsm.State("wait", stateMachine);
        wait.onEnter  += EnterWaitState;
        wait.onAction += UpdateWaitState;

        reconnectState           = new fsm.State("reconnectState", stateMachine);
        reconnectState.onEnter  += EnterReconnectState;
        reconnectState.onAction += UpdateReconnectState;
        reconnectState.onExit   += ExitReconnectState;

        fsm.State stop = new fsm.State("stop", stateMachine);
        stop.onEnter += EnterStopState;


        awake.Add <fsm.EventTransition>(stop, (int)EventType.STOP);
        awake.Add <fsm.EventTransition>(start, (int)EventType.START);

        start.Add <fsm.EventTransition>(wait, (int)EventType.WAIT);
        start.Add <fsm.EventTransition>(reconnectState, (int)EventType.RECONNECT);

        wait.Add <fsm.EventTransition>(start, (int)EventType.START);
        wait.Add <fsm.EventTransition>(reconnectState, (int)EventType.RECONNECT);

        reconnectState.Add <fsm.EventTransition>(start, (int)EventType.START);
        reconnectState.Add <fsm.EventTransition>(wait, (int)EventType.WAIT);

        stateMachine.initState = awake;
    }
示例#14
0
    /// <summary>
    /// 初始化状态机 by吴江
    /// </summary>
    protected override void InitStateMachine()
    {
        normal           = new fsm.State("normal", stateMachine);
        normal.onEnter  += EnterNormalState;
        normal.onExit   += ExitNormalState;
        normal.onAction += UpdateNormalState;


        aiFight           = new fsm.State("aiFight", stateMachine);
        aiFight.onEnter  += EnterAiFightState;
        aiFight.onExit   += ExitAiFightState;
        aiFight.onAction += UpdateAiFightState;


        holdOn           = new fsm.State("holdOn", stateMachine);
        holdOn.onEnter  += EnterHoldOnState;
        holdOn.onExit   += ExitHoldOnState;
        holdOn.onAction += UpdateHoldOnState;



        normal.Add <fsm.EventTransition>(aiFight, (int)EventType.AI_FIGHT_CTRL);
        normal.Add <fsm.EventTransition>(holdOn, (int)EventType.HOLD_ON);


        aiFight.Add <fsm.EventTransition>(normal, (int)EventType.NORMAL);
        aiFight.Add <fsm.EventTransition>(holdOn, (int)EventType.HOLD_ON);


        holdOn.Add <fsm.EventTransition>(aiFight, (int)EventType.AI_FIGHT_CTRL);
        holdOn.Add <fsm.EventTransition>(normal, (int)EventType.NORMAL);



        stateMachine.initState = holdOn;
    }
示例#15
0
    protected override void InitStateMachine()
    {
        base.InitStateMachine();

        startCombat           = new fsm.State("startCombat", basicState);
        startCombat.onEnter  += EnterStartFightState;
        startCombat.onExit   += ExitStartFightState;
        startCombat.onAction += UpdateStartFightState;


        idle.Add <fsm.EventTransition>(startCombat, (int)EventType.StartFight);
        durative.Add <fsm.EventTransition>(startCombat, (int)EventType.StartFight);;
        stopDurative.Add <fsm.EventTransition>(startCombat, (int)EventType.StartFight);
        switchCombat.Add <fsm.EventTransition>(startCombat, (int)EventType.StartFight);
        randIdle.Add <fsm.EventTransition>(startCombat, (int)EventType.StartFight);
        move.Add <fsm.EventTransition>(startCombat, (int)EventType.StartFight);
        dead.Add <fsm.EventTransition>(startCombat, (int)EventType.StartFight);

        startCombat.Add <fsm.EventTransition>(idle, (int)EventType.Idle);
    }
示例#16
0
    protected override void InitStateMachine()
    {
        stateMachine.mode = fsm.State.Mode.Parallel;

        fsm.State basicState = new fsm.State("basicState", stateMachine);

        fsm.State idle = new fsm.State("idle1", basicState);
        idle.onEnter  += EnterIdleState;
        idle.onAction += UpdateIdleState;

        fsm.State move = new fsm.State("move", basicState);
        move.onEnter += EnterMoveState;
        move.onExit  += ExitMoveState;


        idle.Add <fsm.EventTransition>(move, (int)EventType.Move);



        move.Add <fsm.EventTransition>(idle, (int)EventType.StopMoving);
    }
示例#17
0
    protected override void InitStateMachine()
    {
        stateMachine.mode = fsm.State.Mode.Parallel;

        fsm.State basicState = new fsm.State("basicState", stateMachine);

        fsm.State idle = new fsm.State("idle1", basicState);
        idle.onEnter  += EnterIdleState;
        idle.onAction += UpdateIdleState;

        fsm.State actioning = new fsm.State("actioning", basicState);
        actioning.onEnter += EnterActioningState;
        actioning.onExit  += ExitActioningState;

        fsm.State actioned = new fsm.State("actioned", basicState);
        actioned.onEnter += EnterActionedState;
        actioned.onExit  += ExitActionedState;

        actioning.Add <fsm.EventTransition>(idle, (int)EventType.Idle);

        actioned.Add <fsm.EventTransition>(idle, (int)EventType.Idle);
    }
示例#18
0
    protected override void InitStateMachine()
    {
        base.InitStateMachine();
        fsm.State awake = new fsm.State("awake", stateMachine);
        awake.onEnter  = EnterAwakeState;
        awake.onAction = UpdateAwakeState;
        awake.onExit   = ExitAwakeState;

        fsm.State load = new fsm.State("load", stateMachine);
        load.onEnter  = EnterLoadState;
        load.onAction = UpdateLoadState;
        load.onExit   = ExitLoadState;

        fsm.State run = new fsm.State("run", stateMachine);
        run.onEnter  = EnterRunState;
        run.onAction = UpdateRunState;
        run.onExit   = ExitRunState;

        awake.Add <fsm.EventTransition>(load, (int)EventType.LOAD);

        load.Add <fsm.EventTransition>(run, (int)EventType.RUN);

        stateMachine.initState = awake;
    }
示例#19
0
    /// <summary>
    /// 初始化状态机 by邓成
    /// </summary>
    protected override void InitStateMachine()
    {
        fsm.State updateAsset = new fsm.State("updateAsset", stateMachine);
        updateAsset.onEnter  += EnterUpdateAssetState;
        updateAsset.onExit   += ExitUpdateAssetState;
        updateAsset.onAction += UpdateAssetState;

        fsm.State awake = new fsm.State("awake", stateMachine);
        awake.onEnter  += EnterAwakeState;
        awake.onExit   += ExitAwakeState;
        awake.onAction += UpdateAwakeState;


        fsm.State initConfig = new fsm.State("initConfig", stateMachine);
        initConfig.onEnter  += EnterInitConfigState;
        initConfig.onExit   += ExitInitConfigState;
        initConfig.onAction += UpdateInitConfigState;

        fsm.State platformLogin = new fsm.State("platformLogin", stateMachine);
        platformLogin.onEnter += EnterPlatformLoginState;
        platformLogin.onExit  += ExitPlatformLoginState;

        fsm.State login = new fsm.State("login", stateMachine);
        login.onEnter  += EnterLoginState;
        login.onExit   += ExitLoginState;
        login.onAction += UpdateLoginState;

//        fsm.State selectChar = new fsm.State("selectChar", stateMachine);
//        selectChar.onEnter += EnterSelectCharState;
//        selectChar.onExit += ExitSelectCharState;
//        selectChar.onAction += UpdateSelectCharState;


        fsm.State createChar = new fsm.State("createChar", stateMachine);
        createChar.onEnter  += EnterCreateCharState;
        createChar.onExit   += ExitCreateCharState;
        createChar.onAction += UpdateCreateCharState;


        fsm.State enterCity = new fsm.State("enterCity", stateMachine);
        enterCity.onEnter  += EnterInitCityState;
        enterCity.onExit   += ExitInitCityState;
        enterCity.onAction += UpdateInitCityState;


        fsm.State runCity = new fsm.State("runCity", stateMachine);
        runCity.onEnter  += EnterRunCityState;
        runCity.onExit   += ExitRunCityState;
        runCity.onAction += UpdateRunCityState;


        ///竞技场的增加 .
        fsm.State enterArana = new fsm.State("enterArana", stateMachine);
        enterArana.onEnter  += EnterInitArenaState;
        enterArana.onExit   += ExitInitArenaState;
        enterArana.onAction += UpdateInitArenaState;

        fsm.State runArana = new fsm.State("runArana", stateMachine);
        //  runArana.onEnter += EnterRunAranaState;
        //  runArana.onExit += ExitRunAranaState;
        runArana.onAction += UpdateRunArenaState;
        /// end 竞技场


        fsm.State enterDungeon = new fsm.State("enterDungeon", stateMachine);
        enterDungeon.onEnter  += EnterInitDungeonState;
        enterDungeon.onExit   += ExitInitDungeonState;
        enterDungeon.onAction += UpdateInitDungeonState;



        fsm.State runDungeon = new fsm.State("runDungeon", stateMachine);
        runDungeon.onEnter  += EnterRunDungeonState;
        runDungeon.onExit   += ExitRunDungeonState;
        runDungeon.onAction += UpdateRunDungeonState;



        awake.Add <fsm.EventTransition>(updateAsset, (int)EventType.UPDATEASSET);
        awake.Add <fsm.EventTransition>(initConfig, (int)EventType.INIT_CONFIG);

        updateAsset.Add <fsm.EventTransition>(initConfig, (int)EventType.INIT_CONFIG);

        initConfig.Add <fsm.EventTransition>(login, (int)EventType.LOGIN);
        initConfig.Add <fsm.EventTransition>(platformLogin, (int)EventType.PLATFORMLOGIN);
        initConfig.Add <fsm.EventTransition>(enterDungeon, (int)EventType.ENTER_DUNGEON);

        platformLogin.Add <fsm.EventTransition>(login, (int)EventType.LOGIN);

        //        login.Add<fsm.EventTransition>(selectChar, (int)EventType.SELECTCHAR);
        login.Add <fsm.EventTransition>(createChar, (int)EventType.CREATCHAR);
        login.Add <fsm.EventTransition>(platformLogin, (int)EventType.PLATFORMLOGIN);

        login.Add <fsm.EventTransition>(enterDungeon, (int)EventType.ENTER_DUNGEON);
        login.Add <fsm.EventTransition>(enterCity, (int)EventType.ENTER_CITY);

        //        selectChar.Add<fsm.EventTransition>(enterCity, (int)EventType.ENTER_CITY);
//        selectChar.Add<fsm.EventTransition>(createChar, (int)EventType.CREATCHAR);
//        selectChar.Add<fsm.EventTransition>(enterDungeon, (int)EventType.ENTER_DUNGEON);
//        selectChar.Add<fsm.EventTransition>(login, (int)EventType.LOGIN); //选择角色到登录



        //        createChar.Add<fsm.EventTransition>(selectChar, (int)EventType.SELECTCHAR);
        createChar.Add <fsm.EventTransition>(enterCity, (int)EventType.ENTER_CITY);
        createChar.Add <fsm.EventTransition>(login, (int)EventType.LOGIN);
        createChar.Add <fsm.EventTransition>(enterDungeon, (int)EventType.ENTER_DUNGEON);//登录到地下城

        enterCity.Add <fsm.EventTransition>(runCity, (int)EventType.RUN_CITY);
        enterCity.Add <fsm.EventTransition>(updateAsset, (int)EventType.UPDATEASSET); //进主城时,跳转更新
        enterCity.Add <fsm.EventTransition>(login, (int)EventType.LOGIN);             //断线重连跳转登陆

        runCity.Add <fsm.EventTransition>(enterCity, (int)EventType.ENTER_CITY);
        runCity.Add <fsm.EventTransition>(enterDungeon, (int)EventType.ENTER_DUNGEON);
        runCity.Add <fsm.EventTransition>(enterArana, (int)EventType.ENTER_ARENA);  // 跳转到竞技场
        runCity.Add <fsm.EventTransition>(login, (int)EventType.LOGIN);             //主城到登录跳转
        //        runCity.Add<fsm.EventTransition>(selectChar, (int)EventType.SELECTCHAR);//主城跳转到选择角色列表
        runCity.Add <fsm.EventTransition>(updateAsset, (int)EventType.UPDATEASSET); //在主城时,跳转更新

        enterDungeon.Add <fsm.EventTransition>(runDungeon, (int)EventType.RUN_DUNGEON);
        enterDungeon.Add <fsm.EventTransition>(login, (int)EventType.LOGIN);       //断线重连跳转登陆

        enterArana.Add <fsm.EventTransition>(runArana, (int)EventType.RUN_ARENA);
        enterArana.Add <fsm.EventTransition>(login, (int)EventType.LOGIN);       //断线重连跳转登陆

        runArana.Add <fsm.EventTransition>(enterCity, (int)EventType.ENTER_CITY);
        runArana.Add <fsm.EventTransition>(login, (int)EventType.LOGIN);
        runArana.Add <fsm.EventTransition>(enterArana, (int)EventType.ENTER_ARENA);     //添加竞技场到竞技场的跳转 add by邓成
        runArana.Add <fsm.EventTransition>(enterDungeon, (int)EventType.ENTER_DUNGEON); //添加竞技场到副本的跳转 add by邓成

        runDungeon.Add <fsm.EventTransition>(enterCity, (int)EventType.ENTER_CITY);
        runDungeon.Add <fsm.EventTransition>(enterDungeon, (int)EventType.ENTER_DUNGEON);
        runDungeon.Add <fsm.EventTransition>(login, (int)EventType.LOGIN);
        runDungeon.Add <fsm.EventTransition>(enterArana, (int)EventType.ENTER_ARENA);// 跳转到竞技场

        stateMachine.initState = awake;
    }
示例#20
0
    protected override void InitStateMachine()
    {
        fsm.State awake = new fsm.State("awake", stateMachine);
        awake.onEnter  += EnterAwakeState;
        awake.onExit   += ExitAwakeState;
        awake.onAction += UpdateAwakeState;

        fsm.State target = new fsm.State("target", stateMachine);
        target.onEnter  += EnterTargetState;
        target.onExit   += ExitTargetState;
        target.onAction += UpdateTargetState;


        fsm.State fight = new fsm.State("fight", stateMachine);
        fight.onEnter  += EnterFightState;
        fight.onExit   += ExitFightState;
        fight.onAction += UpdateFightState;

        fsm.State collect = new fsm.State("collect", stateMachine);
        collect.onEnter  += EnterCollectState;
        collect.onExit   += ExitCollectState;
        collect.onAction += UpdateCollectState;

        fsm.State autoFight = new fsm.State("autoFight", stateMachine);
        autoFight.onEnter  += EnterAutoFightState;
        autoFight.onExit   += ExitAutoFightState;
        autoFight.onAction += UpdateAutoFightState;

        fsm.State selfCtrl = new fsm.State("selfCtrl", stateMachine);
        selfCtrl.onEnter  += EnterSelfCtrlState;
        selfCtrl.onExit   += ExitSelfCtrlState;
        selfCtrl.onAction += UpdateSelfCtrlState;

        stateMachine.onStop  = OnStop;
        stateMachine.onStart = OnStart;


        //各状态之间的可跳转关系 by吴江
        awake.Add <fsm.EventTransition>(target, (int)EventType.TARGET);
        awake.Add <fsm.EventTransition>(selfCtrl, (int)EventType.SELF_CTRL);
        awake.Add <fsm.EventTransition>(fight, (int)EventType.FIGHT);
        awake.Add <fsm.EventTransition>(autoFight, (int)EventType.AUTOFIGHT);
        awake.Add <fsm.EventTransition>(collect, (int)EventType.COLLECT);

        target.Add <fsm.EventTransition>(fight, (int)EventType.FIGHT);
        target.Add <fsm.EventTransition>(autoFight, (int)EventType.AUTOFIGHT);
        target.Add <fsm.EventTransition>(selfCtrl, (int)EventType.SELF_CTRL);
        target.Add <fsm.EventTransition>(collect, (int)EventType.COLLECT);

        fight.Add <fsm.EventTransition>(target, (int)EventType.TARGET);
        fight.Add <fsm.EventTransition>(selfCtrl, (int)EventType.SELF_CTRL);
        fight.Add <fsm.EventTransition>(autoFight, (int)EventType.AUTOFIGHT);

        autoFight.Add <fsm.EventTransition>(target, (int)EventType.TARGET);
        autoFight.Add <fsm.EventTransition>(fight, (int)EventType.FIGHT);
        autoFight.Add <fsm.EventTransition>(selfCtrl, (int)EventType.SELF_CTRL);

        selfCtrl.Add <fsm.EventTransition>(target, (int)EventType.TARGET);
        selfCtrl.Add <fsm.EventTransition>(fight, (int)EventType.FIGHT);
        selfCtrl.Add <fsm.EventTransition>(autoFight, (int)EventType.AUTOFIGHT);
        selfCtrl.Add <fsm.EventTransition>(collect, (int)EventType.COLLECT);

        collect.Add <fsm.EventTransition>(selfCtrl, (int)EventType.SELF_CTRL);



        stateMachine.initState = awake;
    }
示例#21
0
    protected override void InitStateMachine()
    {
        fsm.State awake = new fsm.State("awake", stateMachine);
        awake.onEnter  += EnterAwakeState;
        awake.onExit   += ExitAwakeState;
        awake.onAction += UpdateAwakeState;



        fsm.State pveFight = new fsm.State("pveFight", stateMachine);
        pveFight.onEnter  += EnterPVEFightState;
        pveFight.onExit   += ExitPVEFightState;
        pveFight.onAction += UpdatePVEFightState;



        fsm.State pveTraceFight = new fsm.State("pveTraceFight", stateMachine);
        pveTraceFight.onEnter  += EnterPVETraceFightState;
        pveTraceFight.onExit   += ExitPVETraceFightState;
        pveTraceFight.onAction += UpdatePVETraceFightState;


        fsm.State pveDefenseFight = new fsm.State("pveDefenseFight", stateMachine);
        pveDefenseFight.onEnter  += EnterPVEDefenseFightState;
        pveDefenseFight.onExit   += ExitPVEDefenseFightState;
        pveDefenseFight.onAction += UpdatePVEDefenseFightState;

        fsm.State pvpFight = new fsm.State("pvpFight", stateMachine);
        pvpFight.onEnter  += EnterPVPFightState;
        pvpFight.onExit   += ExitPVPFightState;
        pvpFight.onAction += UpdatePVPFightState;

        fsm.State pvpTraceFight = new fsm.State("pvpTraceFight", stateMachine);
        pvpTraceFight.onEnter  += EnterPVPTraceFightState;
        pvpTraceFight.onExit   += ExitPVPTraceFightState;
        pvpTraceFight.onAction += UpdatePVPTraceFightState;

        fsm.State pvpDefenseFight = new fsm.State("pvpDefenseFight", stateMachine);
        pvpDefenseFight.onEnter  += EnterPVPDefenseFightState;
        pvpDefenseFight.onExit   += ExitPVPDefenseFightState;
        pvpDefenseFight.onAction += UpdatePVPDefenseFightState;

        fsm.State flow = new fsm.State("flow", stateMachine);
        flow.onEnter  += EnterFlowState;
        flow.onExit   += ExitFlowState;
        flow.onAction += UpdateFlowState;

        fsm.State teleport = new fsm.State("teleport", stateMachine);
        teleport.onEnter  += EnterTelePortState;
        teleport.onExit   += ExitTelePortState;
        teleport.onAction += UpdateTelePortState;


        //各状态之间的可跳转关系 by吴江
        awake.Add <fsm.EventTransition>(flow, (int)EventType.FLOW);


        flow.Add <fsm.EventTransition>(teleport, (int)EventType.TELEPORT);
        flow.Add <fsm.EventTransition>(pvpTraceFight, (int)EventType.PVP_FIGHT_TRACE);

        teleport.Add <fsm.EventTransition>(flow, (int)EventType.FLOW);

        pvpTraceFight.Add <fsm.EventTransition>(pvpDefenseFight, (int)EventType.PVP_FIGHT_DEFENSE);
        pvpTraceFight.Add <fsm.EventTransition>(teleport, (int)EventType.TELEPORT);

        pvpDefenseFight.Add <fsm.EventTransition>(pveTraceFight, (int)EventType.PVE_TRACE);
        pvpDefenseFight.Add <fsm.EventTransition>(pvpTraceFight, (int)EventType.PVP_FIGHT_TRACE);
        pvpDefenseFight.Add <fsm.EventTransition>(teleport, (int)EventType.TELEPORT);

        pveTraceFight.Add <fsm.EventTransition>(pveDefenseFight, (int)EventType.PVE_DEFENSE);
        pveTraceFight.Add <fsm.EventTransition>(pvpTraceFight, (int)EventType.PVP_FIGHT_TRACE);
        pveTraceFight.Add <fsm.EventTransition>(pvpDefenseFight, (int)EventType.PVP_FIGHT_DEFENSE);
        pveTraceFight.Add <fsm.EventTransition>(teleport, (int)EventType.TELEPORT);

        pveDefenseFight.Add <fsm.EventTransition>(pvpFight, (int)EventType.PVP_FIGHT);
        pveDefenseFight.Add <fsm.EventTransition>(pvpTraceFight, (int)EventType.PVP_FIGHT_TRACE);
        pveDefenseFight.Add <fsm.EventTransition>(pvpDefenseFight, (int)EventType.PVP_FIGHT_DEFENSE);
        pveDefenseFight.Add <fsm.EventTransition>(pveTraceFight, (int)EventType.PVE_TRACE);
        pveDefenseFight.Add <fsm.EventTransition>(teleport, (int)EventType.TELEPORT);

        pvpFight.Add <fsm.EventTransition>(pveFight, (int)EventType.PVE_FIGHT);
        pvpFight.Add <fsm.EventTransition>(pvpTraceFight, (int)EventType.PVP_FIGHT_TRACE);
        pvpFight.Add <fsm.EventTransition>(pvpDefenseFight, (int)EventType.PVP_FIGHT_DEFENSE);
        pvpFight.Add <fsm.EventTransition>(pveTraceFight, (int)EventType.PVE_TRACE);
        pvpFight.Add <fsm.EventTransition>(pveDefenseFight, (int)EventType.PVE_DEFENSE);
        pvpFight.Add <fsm.EventTransition>(teleport, (int)EventType.TELEPORT);

        pveFight.Add <fsm.EventTransition>(flow, (int)EventType.FLOW);
        pveFight.Add <fsm.EventTransition>(pvpTraceFight, (int)EventType.PVP_FIGHT_TRACE);
        pveFight.Add <fsm.EventTransition>(pvpDefenseFight, (int)EventType.PVP_FIGHT_DEFENSE);
        pveFight.Add <fsm.EventTransition>(pveTraceFight, (int)EventType.PVE_TRACE);
        pveFight.Add <fsm.EventTransition>(pveDefenseFight, (int)EventType.PVE_DEFENSE);
        pveFight.Add <fsm.EventTransition>(pvpFight, (int)EventType.PVP_FIGHT);
        pveFight.Add <fsm.EventTransition>(teleport, (int)EventType.TELEPORT);

        stateMachine.initState = awake;
    }
示例#22
0
文件: NPC.cs 项目: atom-chen/tianyu
    protected override void InitStateMachine()
    {
        check           = new fsm.State("check", stateMachine);
        check.onEnter  += EnterCheckState;
        check.onExit   += ExitCheckState;
        check.onAction += UpdateCheckState;

        idle           = new fsm.State("idle1", stateMachine);
        idle.onEnter  += EnterIdleState;
        idle.onExit   += ExitIdleState;
        idle.onAction += UpdateIdleState;

        follow           = new fsm.State("follow", stateMachine);
        follow.onEnter  += EnterFollowState;
        follow.onExit   += ExitFollowState;
        follow.onAction += UpdateFollowState;

        cower           = new fsm.State("cower", stateMachine);
        cower.onEnter  += EnterCowerState;
        cower.onExit   += ExitCowerState;
        cower.onAction += UpdateCowerState;

        backon           = new fsm.State("backon", stateMachine);
        backon.onEnter  += EnterBackonState;
        backon.onExit   += ExitBackonState;
        backon.onAction += UpdateBackonState;

        arrive           = new fsm.State("arrive", stateMachine);
        arrive.onEnter  += EnterArriveState;
        arrive.onExit   += ExitArriveState;
        arrive.onAction += UpdateArriveState;

        avoid           = new fsm.State("avoid", stateMachine);
        avoid.onEnter  += EnterAvoidState;
        avoid.onExit   += ExitAvoidState;
        avoid.onAction += UpdateAvoidState;

        led           = new fsm.State("led", stateMachine);
        led.onEnter  += EnterLedState;
        led.onExit   += ExitLedState;
        led.onAction += UpdateLedState;

        finished          = new fsm.State("finished", stateMachine);
        finished.onEnter += EnterFinishedState;


        check.Add <fsm.EventTransition>(idle, (int)EventType.Idle);
        check.Add <fsm.EventTransition>(finished, (int)EventType.Finished);


        idle.Add <fsm.EventTransition>(follow, (int)EventType.Follow);
        idle.Add <fsm.EventTransition>(cower, (int)EventType.Cower);
        idle.Add <fsm.EventTransition>(backon, (int)EventType.Backon);
        idle.Add <fsm.EventTransition>(arrive, (int)EventType.Arrive);
        idle.Add <fsm.EventTransition>(led, (int)EventType.Lead);
        idle.Add <fsm.EventTransition>(check, (int)EventType.Check);
        idle.Add <fsm.EventTransition>(avoid, (int)EventType.Avoid);

        follow.Add <fsm.EventTransition>(cower, (int)EventType.Cower);
        follow.Add <fsm.EventTransition>(idle, (int)EventType.Idle);
        follow.Add <fsm.EventTransition>(arrive, (int)EventType.Arrive);
        follow.Add <fsm.EventTransition>(check, (int)EventType.Check);
        follow.Add <fsm.EventTransition>(avoid, (int)EventType.Avoid);

        cower.Add <fsm.EventTransition>(idle, (int)EventType.Idle);
        cower.Add <fsm.EventTransition>(check, (int)EventType.Check);
        cower.Add <fsm.EventTransition>(avoid, (int)EventType.Avoid);

        backon.Add <fsm.EventTransition>(idle, (int)EventType.Idle);
        backon.Add <fsm.EventTransition>(check, (int)EventType.Check);
        backon.Add <fsm.EventTransition>(avoid, (int)EventType.Avoid);

        arrive.Add <fsm.EventTransition>(cower, (int)EventType.Cower);
        arrive.Add <fsm.EventTransition>(finished, (int)EventType.Finished);
        arrive.Add <fsm.EventTransition>(check, (int)EventType.Check);
        arrive.Add <fsm.EventTransition>(avoid, (int)EventType.Avoid);

        led.Add <fsm.EventTransition>(idle, (int)EventType.Idle);
        led.Add <fsm.EventTransition>(cower, (int)EventType.Cower);
        led.Add <fsm.EventTransition>(backon, (int)EventType.Backon);
        led.Add <fsm.EventTransition>(arrive, (int)EventType.Arrive);
        led.Add <fsm.EventTransition>(check, (int)EventType.Check);
        led.Add <fsm.EventTransition>(avoid, (int)EventType.Avoid);

        avoid.Add <fsm.EventTransition>(idle, (int)EventType.Idle);
        avoid.Add <fsm.EventTransition>(cower, (int)EventType.Cower);
        avoid.Add <fsm.EventTransition>(backon, (int)EventType.Backon);
        avoid.Add <fsm.EventTransition>(arrive, (int)EventType.Arrive);
        avoid.Add <fsm.EventTransition>(check, (int)EventType.Check);
        avoid.Add <fsm.EventTransition>(led, (int)EventType.Lead);

        stateMachine.onStop   += OnFinish;
        stateMachine.initState = check;
    }