void Init_FSM() { //< 초기 State 생성 FSM = new FSM.FSM <E_SCENEACTION_TYPE, E_SCENE_TYPE, SceneManager>(this); FSM.AddState(E_SCENE_TYPE.START, gameObject.AddComponent <StartState>()); FSM.AddState(E_SCENE_TYPE.PATCH, gameObject.AddComponent <PatchState>()); FSM.AddState(E_SCENE_TYPE.MAIN, gameObject.AddComponent <MainState>()); FSM.AddState(E_SCENE_TYPE.SINGLE, gameObject.AddComponent <SingleState>()); FSM.AddState(E_SCENE_TYPE.PVP, gameObject.AddComponent <PvpState>()); FSM.AddState(E_SCENE_TYPE.RAID, gameObject.AddComponent <RaidState>()); FSM.RegistEvent(E_SCENE_TYPE.START, E_SCENEACTION_TYPE.NEXT, E_SCENE_TYPE.PATCH); FSM.RegistEvent(E_SCENE_TYPE.PATCH, E_SCENEACTION_TYPE.NEXT, E_SCENE_TYPE.MAIN); FSM.RegistEvent(E_SCENE_TYPE.MAIN, E_SCENEACTION_TYPE.SINGLE, E_SCENE_TYPE.SINGLE); FSM.RegistEvent(E_SCENE_TYPE.MAIN, E_SCENEACTION_TYPE.PVP, E_SCENE_TYPE.PVP); FSM.RegistEvent(E_SCENE_TYPE.MAIN, E_SCENEACTION_TYPE.RAID, E_SCENE_TYPE.RAID); FSM.RegistEvent(E_SCENE_TYPE.SINGLE, E_SCENEACTION_TYPE.PREV, E_SCENE_TYPE.MAIN); FSM.RegistEvent(E_SCENE_TYPE.PVP, E_SCENEACTION_TYPE.PREV, E_SCENE_TYPE.MAIN); FSM.RegistEvent(E_SCENE_TYPE.RAID, E_SCENEACTION_TYPE.PREV, E_SCENE_TYPE.MAIN); //< 초기값 대입 FSM.Enable(E_SCENE_TYPE.START); }
void InitFSM_ForClient() { FSM.AddState(_STATE.START, gameObject.AddComponent <StartState>()); FSM.AddState(_STATE.MAIN, gameObject.AddComponent <MainState>()); FSM.AddState(_STATE.GAME, gameObject.AddComponent <GameState>()); FSM.RegistEvent(_STATE.MAIN, _ACTION.GO_START, _STATE.START); FSM.RegistEvent(_STATE.GAME, _ACTION.GO_START, _STATE.START); FSM.RegistEvent(_STATE.START, _ACTION.GO_MAIN, _STATE.MAIN); FSM.RegistEvent(_STATE.MAIN, _ACTION.GO_GAME, _STATE.GAME); FSM.RegistEvent(_STATE.GAME, _ACTION.GO_MAIN, _STATE.MAIN); FSM.Enable(_STATE.START); }
void Init_FSM() { //< 초기 State 생성 FSM = new FSM.FSM <eAction, eState, SceneManager>(this); FSM.AddState(eState.START, gameObject.AddComponent <StartState>()); FSM.AddState(eState.PATCH, gameObject.AddComponent <PatchState>()); FSM.AddState(eState.NICKNAME, gameObject.AddComponent <NicknameState>()); FSM.AddState(eState.LOBBY, gameObject.AddComponent <LobbyState>()); FSM.AddState(eState.GAMELOG, gameObject.AddComponent <GameLogState>()); FSM.AddState(eState.SETTING, gameObject.AddComponent <SettingState>()); FSM.AddState(eState.GAME, gameObject.AddComponent <GameState>()); ////< 이벤트 처리 FSM.RegistEvent(eState.START, eAction.NEXT, eState.PATCH); FSM.RegistEvent(eState.PATCH, eAction.NEXT, eState.LOBBY); FSM.RegistEvent(eState.LOBBY, eAction.NEXT, eState.GAME); FSM.RegistEvent(eState.GAME, eAction.NEXT, eState.LOBBY); FSM.RegistEvent(eState.PATCH, eAction.NICKNAME, eState.NICKNAME); FSM.RegistEvent(eState.NICKNAME, eAction.NEXT, eState.LOBBY); FSM.RegistEvent(eState.GAME, eAction.PREV, eState.LOBBY); FSM.RegistEvent(eState.GAMELOG, eAction.PREV, eState.LOBBY); FSM.RegistEvent(eState.SETTING, eAction.PREV, eState.LOBBY); FSM.RegistEvent(eState.GAMELOG, eAction.NEXT, eState.SETTING); FSM.RegistEvent(eState.SETTING, eAction.NEXT, eState.GAMELOG); FSM.RegistEvent(eState.GAMELOG, eAction.REVENGE, eState.GAME); FSM.RegistEvent(eState.LOBBY, eAction.GAMELOG, eState.GAMELOG); FSM.RegistEvent(eState.LOBBY, eAction.SETTING, eState.SETTING); //< 초기값 대입 FSM.Enable(eState.START); }
void InitFSM_ForClient() { FSM.AddState(_STATE.START, gameObject.AddComponent <StartState>()); FSM.AddState(_STATE.LOGIN, gameObject.AddComponent <LoginState>()); FSM.AddState(_STATE.SELECT_HERO, gameObject.AddComponent <SelectHeroState>()); FSM.AddState(_STATE.SINGLE_GAME, gameObject.AddComponent <SingleGameState>()); // 싱글게임용 FSM.AddState(_STATE.FREEFIGHT_GAME, gameObject.AddComponent <FreeFightGameState>()); // 난투장용 FSM.AddState(_STATE.TOWN, gameObject.AddComponent <TownState>()); // ppzz2 FSM.AddState(_STATE.SPECIAL_GAME, gameObject.AddComponent <SpecialGameState>()); // 골드던전 FSM.AddState(_STATE.ARENA_GAME, gameObject.AddComponent <ArenaGameState>()); // 골드던전 FSM.AddState(_STATE.RAID_GAME, gameObject.AddComponent <RaidGameState>()); // 골드던전 FSM.AddState(_STATE.TOWER_GAME, gameObject.AddComponent <TowerGameState>()); // 마계의탑 FSM.AddState(_STATE.TUTORIAL_GAME, gameObject.AddComponent <TutorialGameState>()); FSM.AddState(_STATE.BOSS_SCENE_TEST, gameObject.AddComponent <BossSceneTestState>()); FSM.AddState(_STATE.SPAWN_TEST, gameObject.AddComponent <SpawnTestState>()); FSM.AddState(_STATE.DEVILDOM_TEST, gameObject.AddComponent <DevilDomTestState>()); FSM.AddState(_STATE.TOWN_CUTSCENE, gameObject.AddComponent <CutSceneState>()); //FSM.AddState( _STATE.INFINITE_GAME, gameObject.AddComponent<InfiniteGameState>() ); //FSM.AddState( _STATE.PVP_GAME, gameObject.AddComponent<PVPGameState>() ); //FSM.AddState( _STATE.SPARRING_GAME, gameObject.AddComponent<SparringGameState>() ); //FSM.AddState( _STATE.RAID_GAME, gameObject.AddComponent<RaidGameState>() ); //FSM.AddState(_STATE.GAMEREADY, gameObject.AddComponent<GameReadyState>()); // State Transition 설정 { // for ReadyState FSM.RegistEvent(_STATE.START, _ACTION.GO_NEXT, _STATE.LOGIN); // for LoinState FSM.RegistEvent(_STATE.LOGIN, _ACTION.GO_TOWN, _STATE.TOWN); //FSM.RegistEvent( _STATE.LOGIN, _ACTION.GO_NEXT, _STATE.SKILL_SIMULATION); //본게임에서는 쓰이지 않고 스킬 시뮬레이션 씬에서만 쓰임 //FSM.RegistEvent( _STATE.LOGIN, _ACTION.PLAY_SINGLE, _STATE.SINGLE_GAME); //< 튜토리얼 전투 FSM.RegistEvent(_STATE.LOGIN, _ACTION.GO_SELECT, _STATE.SELECT_HERO); //캐릭터 선택 FSM.RegistEvent(_STATE.LOGIN, _ACTION.GO_LOGO, _STATE.START); //로고로 이동 FSM.RegistEvent(_STATE.LOGIN, _ACTION.PLAY_TUTORIAL, _STATE.TUTORIAL_GAME); //튜토리얼 이동 FSM.RegistEvent(_STATE.LOGIN, _ACTION.GO_CUTSCENE, _STATE.TOWN_CUTSCENE); // cutscene FSM.RegistEvent(_STATE.LOGIN, _ACTION.PLAY_FREEFIGHT, _STATE.FREEFIGHT_GAME); //튜토리얼 이동 // for SelectHeroState FSM.RegistEvent(_STATE.SELECT_HERO, _ACTION.GO_TOWN, _STATE.TOWN); //캐릭선택 후 마을로 FSM.RegistEvent(_STATE.SELECT_HERO, _ACTION.GO_LOGIN, _STATE.LOGIN); //캐릭터 선택 // for TownState FSM.RegistEvent(_STATE.TOWN, _ACTION.PLAY_SINGLE, _STATE.SINGLE_GAME); // 싱글게임 //FSM.RegistEvent( _STATE.TOWN, _ACTION.PLAY_INFINITE, _STATE.INFINITE_GAME ); // 무한대전 //FSM.RegistEvent( _STATE.TOWN, _ACTION.PLAY_PVP, _STATE.PVP_GAME ); // PVP //FSM.RegistEvent( _STATE.TOWN, _ACTION.PLAY_SPARRING, _STATE.SPARRING_GAME ); // 대련장(Sparring) //FSM.RegistEvent( _STATE.TOWN, _ACTION.PLAY_RAID, _STATE.RAID_GAME ); // 보스 레이드 FSM.RegistEvent(_STATE.TOWN, _ACTION.PLAY_FREEFIGHT, _STATE.FREEFIGHT_GAME); // 난투장 FSM.RegistEvent(_STATE.TOWN, _ACTION.SPECIAL_STAGE, _STATE.SPECIAL_GAME); // 골드 FSM.RegistEvent(_STATE.TOWN, _ACTION.PLAY_ARENA, _STATE.ARENA_GAME); // 골드 FSM.RegistEvent(_STATE.TOWN, _ACTION.PLAY_RAID, _STATE.RAID_GAME); // 레이드 FSM.RegistEvent(_STATE.TOWN, _ACTION.PLAY_TOWER, _STATE.TOWER_GAME); // 마계의 탑 FSM.RegistEvent(_STATE.TOWN, _ACTION.PLAY_TUTORIAL, _STATE.TUTORIAL_GAME); //튜토리얼 FSM.RegistEvent(_STATE.TOWN, _ACTION.GO_LOGIN, _STATE.LOGIN); //< 로그인화면으로 이동 FSM.RegistEvent(_STATE.TOWN, _ACTION.GO_SELECT, _STATE.SELECT_HERO); //캐릭선택화면으로 이동 // for SingleGameState FSM.RegistEvent(_STATE.SINGLE_GAME, _ACTION.GO_TOWN, _STATE.TOWN); FSM.RegistEvent(_STATE.SINGLE_GAME, _ACTION.GO_MAP, _STATE.TOWN); FSM.RegistEvent(_STATE.SINGLE_GAME, _ACTION.GO_SHOP, _STATE.TOWN); FSM.RegistEvent(_STATE.SINGLE_GAME, _ACTION.GO_RETRY, _STATE.TOWN); FSM.RegistEvent(_STATE.SINGLE_GAME, _ACTION.GO_SECRETDUNGEON, _STATE.TOWN); FSM.RegistEvent(_STATE.SINGLE_GAME, _ACTION.GO_NEXT, _STATE.TOWN); FSM.RegistEvent(_STATE.SINGLE_GAME, _ACTION.GO_UnitSummonPanel, _STATE.TOWN); //FSM.RegistEvent( _STATE.SINGLE_GAME, _ACTION.GO_RESTART, _STATE.GAMEREADY ); //FSM.RegistEvent( _STATE.SINGLE_GAME, _ACTION.PLAY_SINGLE, _STATE.GAMEREADY); FSM.RegistEvent(_STATE.SINGLE_GAME, _ACTION.GO_LOGIN, _STATE.LOGIN); //< 로그인화면으로 이동 /* * // for InfiniteGameState * FSM.RegistEvent( _STATE.INFINITE_GAME, _ACTION.GO_NEXT, _STATE.TOWN ); * FSM.RegistEvent( _STATE.INFINITE_GAME, _ACTION.GO_TOWN, _STATE.TOWN ); * FSM.RegistEvent(_STATE.INFINITE_GAME, _ACTION.GO_MAP, _STATE.TOWN); * FSM.RegistEvent(_STATE.INFINITE_GAME, _ACTION.GO_RETRY, _STATE.TOWN); * FSM.RegistEvent(_STATE.INFINITE_GAME, _ACTION.GO_LOGIN, _STATE.LOGIN); //< 로그인화면으로 이동 * * // for PVPGameState * FSM.RegistEvent( _STATE.PVP_GAME, _ACTION.GO_TOWN, _STATE.TOWN ); * FSM.RegistEvent(_STATE.PVP_GAME, _ACTION.PLAY_PVP, _STATE.GAMEREADY); * FSM.RegistEvent(_STATE.PVP_GAME, _ACTION.GO_FRIEND_TOWN, _STATE.TOWN); * FSM.RegistEvent( _STATE.PVP_GAME, _ACTION.GO_NEXT, _STATE.TOWN ); * FSM.RegistEvent( _STATE.PVP_GAME, _ACTION.GO_MAP, _STATE.TOWN); * FSM.RegistEvent(_STATE.PVP_GAME, _ACTION.GO_MINE, _STATE.TOWN); * FSM.RegistEvent(_STATE.PVP_GAME, _ACTION.GO_MINE_PVP, _STATE.TOWN); * FSM.RegistEvent(_STATE.PVP_GAME, _ACTION.GO_GUILDWAR, _STATE.TOWN); * FSM.RegistEvent(_STATE.PVP_GAME, _ACTION.GO_LOGIN, _STATE.LOGIN); //< 로그인화면으로 이동 * * // for SparringGameState * FSM.RegistEvent( _STATE.SPARRING_GAME, _ACTION.GO_TOWN, _STATE.TOWN ); * FSM.RegistEvent( _STATE.SPARRING_GAME, _ACTION.GO_NEXT, _STATE.TOWN ); * FSM.RegistEvent( _STATE.SPARRING_GAME, _ACTION.GO_SPARRING_NEXT, _STATE.TOWN ); * FSM.RegistEvent(_STATE.SPARRING_GAME, _ACTION.GO_LOGIN, _STATE.LOGIN); //< 로그인화면으로 이동 * FSM.RegistEvent(_STATE.SPARRING_GAME, _ACTION.PLAY_SPARRING, _STATE.GAMEREADY); * * // for RaidGameState * FSM.RegistEvent( _STATE.RAID_GAME, _ACTION.GO_TOWN, _STATE.TOWN ); * FSM.RegistEvent( _STATE.RAID_GAME, _ACTION.GO_NEXT, _STATE.TOWN ); * FSM.RegistEvent( _STATE.RAID_GAME, _ACTION.GO_MAP, _STATE.TOWN); * FSM.RegistEvent(_STATE.RAID_GAME, _ACTION.GO_RETRY, _STATE.TOWN); * FSM.RegistEvent(_STATE.RAID_GAME, _ACTION.PLAY_RAID, _STATE.GAMEREADY); * FSM.RegistEvent(_STATE.RAID_GAME, _ACTION.GO_LOGIN, _STATE.LOGIN); //< 로그인화면으로 이동 */ // for FreeFightGameState FSM.RegistEvent(_STATE.FREEFIGHT_GAME, _ACTION.GO_TOWN, _STATE.TOWN); FSM.RegistEvent(_STATE.FREEFIGHT_GAME, _ACTION.GO_MAP, _STATE.TOWN); FSM.RegistEvent(_STATE.FREEFIGHT_GAME, _ACTION.GO_SHOP, _STATE.TOWN); FSM.RegistEvent(_STATE.FREEFIGHT_GAME, _ACTION.GO_RETRY, _STATE.TOWN); FSM.RegistEvent(_STATE.FREEFIGHT_GAME, _ACTION.GO_SECRETDUNGEON, _STATE.TOWN); FSM.RegistEvent(_STATE.FREEFIGHT_GAME, _ACTION.GO_NEXT, _STATE.TOWN); FSM.RegistEvent(_STATE.FREEFIGHT_GAME, _ACTION.GO_UnitSummonPanel, _STATE.TOWN); //FSM.RegistEvent( _STATE.FREEFIGHT_GAME, _ACTION.GO_RESTART, _STATE.GAMEREADY); //FSM.RegistEvent( _STATE.FREEFIGHT_GAME, _ACTION.PLAY_FREEFIGHT, _STATE.GAMEREADY); FSM.RegistEvent(_STATE.FREEFIGHT_GAME, _ACTION.GO_LOGIN, _STATE.LOGIN); //< 로그인화면으로 이동 // for GoldDungeon FSM.RegistEvent(_STATE.SPECIAL_GAME, _ACTION.GO_TOWN, _STATE.TOWN); FSM.RegistEvent(_STATE.SPECIAL_GAME, _ACTION.GO_MAP, _STATE.TOWN); FSM.RegistEvent(_STATE.SPECIAL_GAME, _ACTION.GO_SHOP, _STATE.TOWN); FSM.RegistEvent(_STATE.SPECIAL_GAME, _ACTION.GO_RETRY, _STATE.TOWN); FSM.RegistEvent(_STATE.SPECIAL_GAME, _ACTION.GO_SECRETDUNGEON, _STATE.TOWN); FSM.RegistEvent(_STATE.SPECIAL_GAME, _ACTION.GO_NEXT, _STATE.TOWN); FSM.RegistEvent(_STATE.SPECIAL_GAME, _ACTION.GO_UnitSummonPanel, _STATE.TOWN); //FSM.RegistEvent(_STATE.SPECIAL_GAME, _ACTION.GO_RESTART, _STATE.GAMEREADY); //SPACIAL_GAMEFSM.RegistEvent(_STATE.SPACIAL_GAME, _ACTION.PLAY_GOLD_DUNGEON, _STATE.GAMEREADY); FSM.RegistEvent(_STATE.SPECIAL_GAME, _ACTION.GO_LOGIN, _STATE.LOGIN); //< 로그인화면으로 이동 //ArenaGame - 1vs1 FSM.RegistEvent(_STATE.ARENA_GAME, _ACTION.GO_TOWN, _STATE.TOWN); FSM.RegistEvent(_STATE.ARENA_GAME, _ACTION.GO_MAP, _STATE.TOWN); FSM.RegistEvent(_STATE.ARENA_GAME, _ACTION.GO_SHOP, _STATE.TOWN); FSM.RegistEvent(_STATE.ARENA_GAME, _ACTION.GO_RETRY, _STATE.TOWN); FSM.RegistEvent(_STATE.ARENA_GAME, _ACTION.GO_SECRETDUNGEON, _STATE.TOWN); FSM.RegistEvent(_STATE.ARENA_GAME, _ACTION.GO_NEXT, _STATE.TOWN); FSM.RegistEvent(_STATE.ARENA_GAME, _ACTION.GO_UnitSummonPanel, _STATE.TOWN); //FSM.RegistEvent(_STATE.ARENA_GAME, _ACTION.GO_RESTART, _STATE.GAMEREADY); //FSM.RegistEvent(_STATE.ARENA_GAME, _ACTION.PLAY_FREEFIGHT, _STATE.GAMEREADY); FSM.RegistEvent(_STATE.ARENA_GAME, _ACTION.GO_LOGIN, _STATE.LOGIN); //< 로그인화면으로 이동 // for Raid FSM.RegistEvent(_STATE.RAID_GAME, _ACTION.GO_TOWN, _STATE.TOWN); FSM.RegistEvent(_STATE.RAID_GAME, _ACTION.GO_MAP, _STATE.TOWN); FSM.RegistEvent(_STATE.RAID_GAME, _ACTION.GO_SHOP, _STATE.TOWN); FSM.RegistEvent(_STATE.RAID_GAME, _ACTION.GO_RETRY, _STATE.TOWN); FSM.RegistEvent(_STATE.RAID_GAME, _ACTION.GO_SECRETDUNGEON, _STATE.TOWN); FSM.RegistEvent(_STATE.RAID_GAME, _ACTION.GO_NEXT, _STATE.TOWN); FSM.RegistEvent(_STATE.RAID_GAME, _ACTION.GO_UnitSummonPanel, _STATE.TOWN); //FSM.RegistEvent(_STATE.RAID_GAME, _ACTION.GO_RESTART, _STATE.GAMEREADY); //SPACIAL_GAMEFSM.RegistEvent(_STATE.SPACIAL_GAME, _ACTION.PLAY_GOLD_DUNGEON, _STATE.GAMEREADY); FSM.RegistEvent(_STATE.RAID_GAME, _ACTION.GO_LOGIN, _STATE.LOGIN); //< 로그인화면으로 이동 //< //FSM.RegistEvent(_STATE.GAMEREADY, _ACTION.PLAY_SINGLE, _STATE.SINGLE_GAME); //FSM.RegistEvent(_STATE.GAMEREADY, _ACTION.PLAY_PVP, _STATE.PVP_GAME); //FSM.RegistEvent(_STATE.GAMEREADY, _ACTION.PLAY_RAID, _STATE.RAID_GAME); //FSM.RegistEvent(_STATE.GAMEREADY, _ACTION.PLAY_SPARRING, _STATE.SPARRING_GAME); // FSM.RegistEvent(_STATE.GAMEREADY, _ACTION.PLAY_FREEFIGHT, _STATE.FREEFIGHT_GAME); //<---??? //for Tower FSM.RegistEvent(_STATE.TOWER_GAME, _ACTION.GO_TOWN, _STATE.TOWN); FSM.RegistEvent(_STATE.TOWER_GAME, _ACTION.GO_MAP, _STATE.TOWN); FSM.RegistEvent(_STATE.TOWER_GAME, _ACTION.GO_LOGIN, _STATE.LOGIN); //for Tutorial FSM.RegistEvent(_STATE.TUTORIAL_GAME, _ACTION.GO_TOWN, _STATE.TOWN); FSM.RegistEvent(_STATE.TUTORIAL_GAME, _ACTION.GO_MAP, _STATE.TOWN); FSM.RegistEvent(_STATE.TUTORIAL_GAME, _ACTION.GO_LOGIN, _STATE.LOGIN); //< 로그인화면으로 이동 FSM.RegistEvent(_STATE.TUTORIAL_GAME, _ACTION.GO_CUTSCENE, _STATE.TOWN_CUTSCENE); // cutscene FSM.RegistEvent(_STATE.TOWN_CUTSCENE, _ACTION.GO_TOWN, _STATE.TOWN); // cutscene } #if UNITY_EDITOR if (GameObject.Find("CutSceneTestManager") != null) { //FSM.Current_State = _STATE.TOWN; //FSM.Enable (_STATE.SINGLE_GAME); FSM.ChangeState(_STATE.BOSS_SCENE_TEST); } else if (GameObject.Find("SpawnTestManager") != null) { FSM.ChangeState(_STATE.SPAWN_TEST); } else if (GameObject.Find("DevilDomTestManager") != null) { FSM.ChangeState(_STATE.DEVILDOM_TEST); } else { FSM.Enable(_STATE.START); } #else FSM.Enable(_STATE.START); #endif }