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