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);
    }
Exemple #2
0
    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);
    }
Exemple #3
0
    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);
    }
Exemple #4
0
    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
    }