// other options to alter to change scenes
    public bool RequestSceneChange(GameScenes nextScene, float delay = 0)
    {
        if (this.sceneChangeInProgress == null)
        {
            if (nextScene.ToString() == SceneManager.GetActiveScene().name)
            {
                //Debug.Log("Already on the scene.");
                return(false);
            }

            string match = nextScene.ToString();
            string scene = scenes.FirstOrDefault(z => { return(z == match); });

            if (String.IsNullOrEmpty(scene))
            {
                //ERROR: SceneNotFound
                return(false);
            }

            // TODO:
            // check if already loading another scene
            // check if scene is already loaded
            // check if any delay parameters
            // check logic for adding a between scene

            sceneChangeInProgress = StartCoroutine(ChangeScene(match, delay));
            //this.activeScene = nextScene;
            return(true);
        }
        else
        {
            // already loading a scene...
            return(false);
        }
    }
Beispiel #2
0
 //void RotateGizmoSpawnedSpawned(AltimeterSliderButtons asb) {
 //	Log.Info ("RotateGizmoSpawnedSpawned");
 //}
 void CallbackLevelWasLoaded(GameScenes scene)
 {
     Log.Info("KRASHShelter CallbackLevelWasLoaded");
     //[KSPScenario(ScenarioCreationOptions.AddToNewGames, new[] { GameScenes.FLIGHT, GameScenes.TRACKSTATION, GameScenes.SPACECENTER })]
     if (scene == GameScenes.FLIGHT || scene == GameScenes.TRACKSTATION || scene == GameScenes.SPACECENTER)
     {
         KRASHPersistent.initialize();
         Log.Info("CallbackLevelWasLoaded loaded for " + scene.ToString());
     }
     else
     {
         Log.Info("No call at CallbackLevelWasLoaded for " + scene.ToString());
     }
 }
Beispiel #3
0
        private string GetDesc()
        {
            switch (scene)
            {
            case GameScenes.LOADING:
                return("Loading");

            case GameScenes.LOADINGBUFFER:
                return("Loading Game");

            case GameScenes.MAINMENU:
                return("In the Main Menu");

            case GameScenes.SETTINGS:
                return("Configuring their game");

            case GameScenes.SPACECENTER:
                return("At the KSC");

            case GameScenes.TRACKSTATION:
                return("In the Tracking Station");

            case GameScenes.CREDITS:
                return("Watching the Credits");

            case GameScenes.MISSIONBUILDER:
                return("Creating a mission");
            }

            return(scene.ToString());
        }
Beispiel #4
0
        /// <summary>
        /// Game scene loaded event
        /// </summary>
        /// <param name="scene">Loaded scene</param>
        /// <param name="mode">Load mode</param>
        private void OnSceneLoaded(Scene scene, LoadSceneMode mode)
        {
            GameScenes loadedScene = (GameScenes)scene.buildIndex;

            switch (loadedScene)
            {
            case GameScenes.MENU:
                CurrentGame      = null;
                Mode             = GameMode.NONE;
                this.source.clip = this.menuMusic;
                this.source.Play();
                break;

            case GameScenes.GAME:
                CurrentGame = FindObjectOfType <Game>();
                if (CurrentScene != GameScenes.GAME)
                {
                    this.source.clip = this.gameMusic;
                    this.source.Play();
                }
                break;
            }
            this.Log($"Scene loaded - {ToCamelCase(loadedScene.ToString())}");
            CurrentScene = loadedScene;
        }
        /// <summary>
        /// シーン遷移を実行する
        /// </summary>
        /// <param name="nextScene">次のシーン</param>
        /// <param name="data">次のシーンへ引き継ぐデータ</param>
        /// <param name="additiveLoadScenes">追加ロードするシーン</param>
        public async Task Move(GameScenes nextScene,
                               SceneDataPack data,
                               GameScenes[] additiveLoadScenes)
        {
            SceneLoader.PreviousSceneData = data;
            CurrentGameScene = nextScene;

            //画面をトランジションエフェクトで隠す
            await _transitionImageController.CloseTransition();

            //シーン遷移
            await SceneManager.LoadSceneAsync(nextScene.ToString(), LoadSceneMode.Single);

            //追加シーンがある場合は一緒に読み込む
            if (additiveLoadScenes != null)
            {
                await Task.WhenAll(additiveLoadScenes.Select(scene =>
                                                             SceneManager.LoadSceneAsync(scene.ToString(), LoadSceneMode.Additive).AsObservable().ToTask()));
            }

            // 未使用アセットすべて開放
            await Resources.UnloadUnusedAssets();

            // GC実行
            GC.Collect();

            // 画面を戻す
            await _transitionImageController.OpenTransition();
        }
Beispiel #6
0
 static string SafeLoad(string value, GameScenes oldvalue)
 {
     if (value == null)
     {
         return(oldvalue.ToString());
     }
     return(value);
 }
Beispiel #7
0
        public DefinedErrors ChangeScene(GameScenes next)
        {
            SceneManager.LoadScene(next.ToString());

            DataManager.PrevScene = DataManager.CurrentScene;
            DataManager.CurrentScene = next;            
            return DefinedErrors.Pass;
        }
        private IEnumerator TransitionCoroutine(
            GameScenes nextScene,
            SceneDataPack data,
            GameScenes[] additiveLoadScenes,
            bool autoMove
            )
        {
            ToMoveFlag.Value       = autoMove;
            _isTransitioning.Value = true;
            while (transitionComponent == null)
            {
                yield return(new WaitForSeconds(0.2f));

                transitionComponent.threshold = 0;
            }
            //タッチイベントを吸収させる
            image.raycastTarget      = true;
            transitionComponent.flip = false;
            transitionComponent.Play();
            yield return(onTransactionFinishedInternal.FirstOrDefault().StartAsCoroutine());

            transitionComponent.threshold = 1;

            SceneLoader.PreviousSceneData = data;

            //シーン遷移
            yield return(SceneManager.LoadSceneAsync(nextScene.ToString(), LoadSceneMode.Single));

            //追加シーンがある場合は一緒に読み込む
            if (additiveLoadScenes != null)
            {
                yield return(additiveLoadScenes.Select(scene =>
                                                       SceneManager.LoadSceneAsync(scene.ToString(), LoadSceneMode.Additive)
                                                       .ObserveEveryValueChanged(x => x.isDone)
                                                       .FirstOrDefault(x => x)
                                                       ).WhenAll().StartAsCoroutine());
            }
            Resources.UnloadUnusedAssets();
            GC.Collect();

            onAllSceneLoaded.OnNext(Unit.Default);
            if (!autoMove)
            {
                //自動遷移しないなら待機
                yield return(ToMoveFlag.FirstOrDefault(x => x).StartAsCoroutine());
            }
            ToMoveFlag.Value = false;

            //反転
            transitionComponent.Play();
            yield return(onTransactionFinishedInternal.FirstOrDefault().StartAsCoroutine());

            image.raycastTarget           = false;
            transitionComponent.threshold = 0;
            onTransitionAnimationFinishedSubject.OnNext(Unit.Default);
            _isTransitioning.Value = false;
        }
Beispiel #9
0
 public static bool GameSceneIsMissionBuilder(GameScenes scene)
 {
     if (Versioning.version_major * 100 + Versioning.version_minor < 104)
     {
         // Below KSP 1.4.0
         return(false);
     }
     // KSP 1.4.0 and up
     return(scene.ToString() == "MISSIONBUILDER");
 }
 public GUIWindowSettings(GameScenes pGS, float pX, float pY, bool pIsDisplayed)
 {
     scene       = pGS;
     x           = pX;
     y           = pY;
     isDisplayed = pIsDisplayed;
     cn          = new ConfigNode(pGS.ToString());
     cn.SetValue(nameof(X), x, true);
     cn.SetValue(nameof(Y), y, true);
     cn.SetValue(nameof(IsDisplayed), isDisplayed, true);
 }
Beispiel #11
0
        /// <summary>
        /// Load's a given scene after unloading the previous one
        /// </summary>
        /// <param name="scene"></param>
        public void LoadScene(GameScenes scene)
        {
            loadScene = scene;
            if (activeScene != GameScenes.Controller)
            {
                SceneManager.UnloadSceneAsync((int)activeScene);
                Debug.Log("[SceneController] Unload scene: " + activeScene.ToString());
            }

            SceneManager.LoadScene((int)loadScene, LoadSceneMode.Additive);
            Debug.Log("[SceneController] Load scene: " + scene.ToString());

            //coz we dont use eventhandlers:
            ChangeActiveScene();
        }
        public void LateUpdate()
        {
            try
            {
                if (HighLogic.LoadedScene != _lastScene)
                {
                    _lastScene = HighLogic.LoadedScene;
                    Util.Log("Saw scene switch to {0}", _lastScene.ToString());
                }

                _expController.Update();
            }
            catch (Exception ex)
            {
                Util.Log("{0}: {1}\n{2}", ex.GetType(), ex.Message, ex.StackTrace);
            }
        }
Beispiel #13
0
 void onGameSceneLoadRequestedForAppLauncher(GameScenes SceneToLoad)
 {
     if (DistantObjectSettings.debugMode)
     {
         Debug.Log(Constants.DistantObject + " -- onGameSceneLoadRequestedForAppLauncher: " + SceneToLoad.ToString() + " - " + this.GetInstanceID() + " AppLauncher.Ready = " + ApplicationLauncher.Ready.ToString());
     }
 }
Beispiel #14
0
 /// <summary>
 /// Set's the loaded scene as active scene
 /// </summary>
 /// <param name="scene"></param>
 private void ChangeActiveScene()
 {
     activeScene = loadScene;
     //EventHandler.Instance.TriggerEvent(GameEvent.ActiveSceneChanged);
     Debug.Log("[SceneController] Active scene: " + activeScene.ToString());
 }
 internal static string GetUniqueKey(GameScenes scene, string buttonObjectName)
 {
     return(scene.ToString() + ":" + buttonObjectName);
 }
Beispiel #16
0
    void OnLevelWasLoaded(int level)
    {
        GameScenes scene = (GameScenes)level;

        KSPAddonImproved.Startup mask = 0;

        if (scene == GameScenes.LOADINGBUFFER)
        {
            return;
        }

        Debug.Log(string.Format("{1}: {0} was loaded; instantiating addons...", scene.ToString(), _identifier));

        // Convert GameScenes => SceneMask
        switch (scene)
        {
        case GameScenes.EDITOR:
            mask = KSPAddonImproved.Startup.EditorVAB | KSPAddonImproved.Startup.EditorSPH;
            break;

        case GameScenes.CREDITS:
            mask = KSPAddonImproved.Startup.Credits;
            break;

        case GameScenes.FLIGHT:
            mask = KSPAddonImproved.Startup.Flight;
            break;

        case GameScenes.LOADING:
            mask = KSPAddonImproved.Startup.Instantly;
            break;

        case GameScenes.MAINMENU:
            mask = KSPAddonImproved.Startup.MainMenu;
            break;

        case GameScenes.SETTINGS:
            mask = KSPAddonImproved.Startup.Settings;
            break;

        case GameScenes.SPACECENTER:
            mask = KSPAddonImproved.Startup.SpaceCenter;
            break;

        case GameScenes.TRACKSTATION:
            mask = KSPAddonImproved.Startup.TrackingStation;
            break;

        case GameScenes.PSYSTEM:
            mask = KSPAddonImproved.Startup.PSystemSpawn;
            break;

        case GameScenes.LOADINGBUFFER:
            // intentionally left unset
            break;

        default:
            Debug.LogError(string.Format("{1} unrecognized scene: {0}", scene.ToString(), _identifier));
            break;
        }

        int counter = 0;

        for (int i = 0; i < addons.Count; ++i)
        {
            var addon = addons[i];

            if (addon.created && addon.RunOnce)
            {
                continue;                 // this addon was already loaded
            }
            // should this addon be initialized in current scene?
            if ((addon.Scenes & mask) != 0)
            {
                Debug.Log(string.Format("ImprovedAddonLoader: Creating addon '{0}'", addon.type.Name));
                GameObject go = new GameObject(addon.type.Name);
                go.AddComponent(addon.type);

                addon.created = true;
                ++counter;
            }
        }

        Debug.Log(string.Format("{1} finished; created {0} addons", counter, _identifier));
    }
 public void ChangeScene(GameScenes scene)
 {
     SceneManager.LoadScene(scene.ToString());
 }
/*************************************************************************************************************************/
        public void scene_change_handler(GameScenes input_scene)
        {
            Log.PushStackInfo("FMRS_Core.scene_change_handler", "enter scene_change_handler(GameScenes input_scene) " + input_scene.ToString());
            Log.dbg("scene_change_handler");

            if (input_scene != GameScenes.FLIGHT)
            {
                Log.dbg("switch to not flight scene");

                if (_SAVE_Kick_To_Main)
                {
                    return;
                }

                Log.dbg("has not recovered");

                if (_SAVE_Switched_To_Dropped)
                {
                    Log.dbg("scene change while flying dropped, kick to main in space center and tracking station");

                    set_recoverd_value("warning", "FMRS Info:", "You have switched scenes, while controlling a dropped vessel.@Next time, please use the 'Jump back to Main Mission' button, before switching scenes.");
                    _SAVE_Kick_To_Main        = true;
                    _SAVE_Switched_To_Dropped = false;
                    save_landed_vessel(true, false);
                }
                else
                {
                    _SETTING_Enabled = false;
                }
            }

            Log.PopStackInfo("leave scene_change_handler(GameScenes input_scene)");
        }
Beispiel #19
0
 public static void LoadScene(GameScenes scene)
 {
   Debug.Log("Load Scene");
   SceneManager.LoadScene(scene.ToString());
 }
Beispiel #20
0
        internal void loadSettings(ConfigNode parentNode, GameScenes scene)
        {
            // hide these
            WindowList.Instance.destroyDialogs();
            dropdownMenu = null;
            // deactivate these
            rectLocked = true;
            buttonOrderLocked = true;
            draggable.Enabled = false;
            resizable.Enabled = false;
            // pretend we're not auto-hidden right now
            displayMode = DisplayMode.VISIBLE;
            // enable ourselves
            Enabled = true;
            // hide folders
            foreach (Toolbar folder in folders.Values) {
                folder.Visible = false;
            }
            // pretend that nothing was visible until now
            visibleButtonIds.Clear();

            if (parentNode.HasNode("toolbar")) {
                foreach (Toolbar folder in new List<Toolbar>(folders.Values)) {
                    removeFolder(folder);
                }
                savedFolderSettings.Clear();

                ConfigNode toolbarNode = parentNode.GetNode("toolbar");
                ConfigNode settingsNode = toolbarNode.HasNode(scene.ToString()) ? toolbarNode.GetNode(scene.ToString()) : toolbarNode;
                rect.x = settingsNode.get("x", DEFAULT_X);
                rect.y = settingsNode.get("y", DEFAULT_Y);
                rect.width = settingsNode.get("width", DEFAULT_WIDTH);
                rect.height = settingsNode.get("height", 0f);
                autoHide = settingsNode.get("autoHide", false);
                showBorder = settingsNode.get("drawBorder", true);
                UseKSPSkin = settingsNode.get("useKSPSkin", false);
                savedButtonOrder = settingsNode.get("buttonOrder", "").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
                savedVisibleButtons = new HashSet<string>(settingsNode.get("visibleButtons", "").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries));

                if (settingsNode.HasNode("folders")) {
                    foreach (ConfigNode folderNode in settingsNode.GetNode("folders").nodes) {
                        string folderId = folderNode.name;
                        string toolTip = folderNode.get("toolTip", "");
                        HashSet<string> buttonIds = new HashSet<string>(folderNode.get("buttons", "").Split(new char[] { ',' }));

                        Toolbar folder = createFolder(folderId, toolTip, false);

                        savedFolderSettings[folderId].buttons = buttonIds;
                    }
                }

                // show/hide buttons according to saved settings
                foreach (Button button in buttons.Where(b => (b.ns != Button.NAMESPACE_INTERNAL) && !b.Equals(dropdownMenuButton))) {
                    button.UserVisible = savedVisibleButtons.Contains(button.ns + "." + button.id);
                }

                // move existing buttons according to saved folder contents
                foreach (Button button in new List<Button>(buttons)) {
                    string buttonId = button.ns + "." + button.id;
                    string folderId = savedFolderSettings.SingleOrDefault(kv => kv.Value.buttons.Contains(buttonId)).Key;
                    if (folderId != null) {
                        moveButtonToFolder(button, folders[folderId]);
                    }
                }
            }

            savedMaxWidth = rect.width;

            sortButtons(buttons, compareButtonsUserOrder);
        }
Beispiel #21
0
 void onGameSceneLoadRequestedForAppLauncher(GameScenes SceneToLoad)
 {
     if (DistantObjectSettings.debugMode)
     {
         Debug.Log(Constants.DistantObject + " -- onGameSceneLoadRequestedForAppLauncher: " + SceneToLoad.ToString() + " - " + this.GetInstanceID() + " AppLauncher.Ready = " + ApplicationLauncher.Ready.ToString());
     }
 }
Beispiel #22
0
        internal void saveSettings(ConfigNode parentNode, GameScenes scene)
        {
            ConfigNode toolbarNode = parentNode.getOrCreateNode("toolbar");
            ConfigNode settingsNode = toolbarNode.getOrCreateNode(scene.ToString());
            settingsNode.overwrite("x", rect.x.ToString("F0"));
            settingsNode.overwrite("y", rect.y.ToString("F0"));
            settingsNode.overwrite("width", savedMaxWidth.ToString("F0"));
            settingsNode.overwrite("height", rect.height.ToString("F0"));
            settingsNode.overwrite("autoHide", autoHide.ToString());
            settingsNode.overwrite("drawBorder", showBorder.ToString());
            settingsNode.overwrite("useKSPSkin", UseKSPSkin.ToString());
            settingsNode.overwrite("buttonOrder", string.Join(",", savedButtonOrder.ToArray()));
            settingsNode.overwrite("visibleButtons", string.Join(",", savedVisibleButtons.ToArray()));

            ConfigNode foldersNode = settingsNode.overwriteNode("folders");
            foreach (KeyValuePair<string, FolderSettings> entry in savedFolderSettings) {
                ConfigNode folderNode = foldersNode.getOrCreateNode(entry.Key);
                folderNode.overwrite("toolTip", entry.Value.toolTip ?? "");
                folderNode.overwrite("buttons", string.Join(",", entry.Value.buttons.ToArray()));
            }
            if (foldersNode.CountNodes == 0) {
                settingsNode.RemoveNode("folders");
            }
        }
Beispiel #23
0
 public string GetScene(GameScenes scene)
 {
     // just convert scene type to a string and return it
     // to make it easier the GameScenes enum string is the scene name
     return(scene.ToString());
 }
 private void logSceneSwitch(GameScenes scene)
 {
     if (Tw != null)
     {
         Tw.WriteLine(DateTime.Now.ToString("HH:mm:ss tt") + " [KSP] ==== Scene Switch to " + scene.ToString() + " ! ====");
     }
 }