예제 #1
0
    IEnumerator StartGame(bool isNewGame)
    {
        yield return(new WaitForSeconds(uiHandler.uiEffectHandler.OnPlayUIEffect(UIEffect.Transition_CrossFade, UIEffectAnimationClip.start)));

        ResetAllSceneCode();

        // uiHandler.uiEffectHandler.OnPlayUIEffect(UIEffect.Transition_CrossFade, UIEffectAnimationClip.dark);
        if (isNewGame)
        {
            player.gameObject.SetActive(true);
            currentSceneCode = DefaultStartScene;
            player.InitSaveData();
            EnemySaveData.Initialize();
            Loot.Initialize();
            LittleSunData.Initialize();

            if (DefaultStartPoint)
            {
                player.SetPosition(DefaultStartPoint.position);
                player.playerRuntimeData.lastPosition = DefaultStartPoint.position;
            }
        }
        else
        {
            player.gameObject.SetActive(true);
            yield return(new WaitForEndOfFrame());

            gameSaver.LoadAll();
            yield return(new WaitUntil(() => gameSaver.IsLoaded()));

            yield return(new WaitForEndOfFrame());

            // yield return new WaitForSeconds(5f);
            currentSceneCode = player.playerRuntimeData.currentSceneCode;
            elapsedSeconds   = gameSaver.GetSaveSlotMeta(gameSaver.currentSaveSlot).elapsedSeconds;
        }
        uiHandler.StartGame();

        player.InputHandler.ResetAll();

        player.InitializeRuntimeData();

        LoadSceneCode();

        player.stateMachine.InitializeState(player.wakeupState);

        Camera.main.GetComponent <BasicFollower>().ClampCamera(player.transform.position);
        Camera.main.GetComponent <BasicFollower>().UpdateCameraFollowing(player.transform);
        yield return(new WaitForSeconds(uiHandler.uiEffectHandler.OnPlayUIEffect(UIEffect.Transition_CrossFade, UIEffectAnimationClip.end)));
    }