Exemplo n.º 1
0
        public IEnumerator InitializeGameEnvironment()
        {
            if (mInitializing || mInitialized)
            {
                yield break;
            }

            mInitializing = true;
            //create the startup scene
            mStartupScenePrefab = GameObject.Instantiate(StartupScenePrefab) as GameObject;
            //wait a tick
            double start = Frontiers.WorldClock.RealTime;

            while (Frontiers.WorldClock.RealTime < start + 0.01f)
            {
                yield return(null);
            }
            //TODO move these into globals, use strings for types
            //to let modders add their own manager classes on startup
            //base
            yield return(StartCoroutine(Manager.WakeUpAndInitialize <SteamManager>("Initializing Steam Manager")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <Mods>("Initializing MODS")));

            //interface, input, GUI
            yield return(StartCoroutine(Manager.WakeUpAndInitialize <UserActionManager>("Initializing user action manager")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <InterfaceActionManager>("Initializing interface action manager")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <GUIManager>("Initializing GUI manager")));

            //display & sound
            yield return(StartCoroutine(Manager.WakeUpAndInitialize <CameraFX>("Initializing Camera FX")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <AudioManager>("Initializing audio manager")));

            //gameplay data
            yield return(StartCoroutine(Manager.WakeUpAndInitialize <Biomes>("Initializing Biomes")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <Meteors>("Initializing Meteors")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <Mats>("Frontiers_ArtResourceManagers")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <Meshes>("Frontiers_ArtResourceManagers")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <Creatures>("Initializing Creatures")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <Critters>("Initializing Critters")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <Characters>("Initializing Characters")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <WorldItems>("Initializing WorldItems")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <WIGroups>("Initializing WIGroups")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <Structures>("Initializing Structures")));

            //gameplay objects
            yield return(StartCoroutine(Manager.WakeUpAndInitialize <Conversations>("Initializing Conversations")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <Missions>("Initializing Missions")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <Books>("Initializing Books")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <Museums>("Initializing Museums")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <Skills>("Initializing Skills")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <Potions>("Initializing Potions")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <Plants>("Initializing Plants")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <Conditions>("Initializing Status Conditions")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <Blueprints>("Initializing Blueprints")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <PreparedFoods>("Initializing Foods")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <Moneylenders>("Initializing Moneylenders")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <Paths>("Initializing Paths")));

            //world and player
            yield return(StartCoroutine(Manager.WakeUpAndInitialize <GameWorld>("Initializing Game World")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <Ocean>("Initializing Ocean")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <LightManager>("Initializing Lights")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <DarkrotManager>("Initializing Darkrot")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <SpawnManager>("Initializing Spawn Manager")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <VRManager>("Initializing VR Manager")));

            yield return(StartCoroutine(Manager.WakeUpAndInitialize <Player>("Initializing Player")));

            Manager.FinishedInitializing();
            //load all data from disk
            //wait a tick
            yield return(null);

            Biomes.Get.UseTimeOfDayOverride = true;
            Biomes.Get.HourOfDayOverride    = UnityEngine.Random.Range(0f, 24f);
            mInitializing = false;
            mInitialized  = true;
            //pause after initializing
            //do this now while the player won't notice a hitch
            System.GC.Collect();
            Resources.UnloadUnusedAssets();
        }