// Displays the screen corresponding to the screen with the provided index. public void DisplayScreen(ScreenAreas screenArea) { // Ensure we're not switching to the same area if we're selecting a level, then the enums associated // with the button are from GameStateManager not ScreenManager. if(!screenArea.Equals(currentScreenArea) && !screenArea.Equals(ScreenAreas.None)){ switch(screenArea){ case ScreenAreas.RestartLevel: gameStateManagerRef.EnterGameState(Application.loadedLevel); break; // Switch to the main menu. case ScreenAreas.MainMenu: gameStateManagerRef.EnsureScriptAdded("MainMenu"); activeScreen.enabled = false; activeScreen = gameObject.GetComponent<MainMenu>(); currentScreenArea = ScreenAreas.MainMenu; if(gameStateManagerRef.isPaused){ gameStateManagerRef.EnterMainMenu(); } break; // Switch to the options screen. case ScreenAreas.Options: gameStateManagerRef.EnsureScriptAdded("Options"); activeScreen.enabled = false; activeScreen = gameObject.GetComponent<Options>(); currentScreenArea = ScreenAreas.Options; break; case ScreenAreas.OptionsInGame: gameStateManagerRef.EnsureScriptAdded("OptionsInGame"); activeScreen.enabled = false; activeScreen = gameObject.GetComponent<OptionsInGame>(); currentScreenArea = ScreenAreas.OptionsInGame; break; // Switch to the level select screen. case ScreenAreas.LevelSelect: gameStateManagerRef.EnsureScriptAdded("LevelSelect"); activeScreen.enabled = false; activeScreen = gameObject.GetComponent<LevelSelect>(); currentScreenArea = ScreenAreas.LevelSelect; break; // Switch to the second page of the level select screen. case ScreenAreas.LevelSelectB: gameStateManagerRef.EnsureScriptAdded("LevelSelectB"); activeScreen.enabled = false; activeScreen = gameObject.GetComponent<LevelSelectB>(); currentScreenArea = ScreenAreas.LevelSelectB; break; // Switch to the third page of the level select screen. case ScreenAreas.LevelSelectC: gameStateManagerRef.EnsureScriptAdded("LevelSelectC"); activeScreen.enabled = false; activeScreen = gameObject.GetComponent<LevelSelectC>(); currentScreenArea = ScreenAreas.LevelSelectC; break; // Switch to the pause screen. case ScreenAreas.Pause: gameStateManagerRef.EnsureScriptAdded("Pause"); activeScreen.enabled = false; activeScreen = gameObject.GetComponent<Pause>(); currentScreenArea = ScreenAreas.Pause; break; // Switch back to the previous in-game screen. case ScreenAreas.ContinueGame: activeScreen.enabled = false; currentScreenArea = ScreenAreas.InGame; gameStateManagerRef.ContinueGame(); break; // Switch to the main menu. case ScreenAreas.LevelComplete: Time.timeScale = 0; activeScreen.enabled = false; gameStateManagerRef.EnsureScriptAdded("LevelComplete"); activeScreen = gameObject.GetComponent <LevelComplete>(); currentScreenArea = ScreenAreas.LevelComplete; break; // Exit this game. That's terrible. case ScreenAreas.Quit: Application.Quit(); break; // We shouldn't get to this one. EVER. default: break; } // Ensure active screen script is enabled since we re-use scripts and make sure this we're not // just continuing after a pause. if(!activeScreen.enabled && !screenArea.Equals(ScreenAreas.ContinueGame) && !screenArea.Equals(ScreenAreas.RestartLevel) && !screenArea.Equals(ScreenAreas.LevelComplete)){ activeScreen.enabled = true; activeScreen.Start(); } } }
// Use this for initialization. public void Start() { // Ensures all necessary scripts are added for the MainObject gameStateManagerRef = gameObject.GetComponent<GameStateManager>(); gameStateManagerRef.EnsureCoreScriptsAdded(); gameStateManagerRef.EnsureScriptAdded("MainMenu"); if(gameStateManagerRef.gameStartedFromUI){ activeScreen = gameObject.GetComponent("MainMenu") as MainMenu; currentScreenArea = ScreenAreas.MainMenu; } else{ // This will not be the active screen, but active screen needs to be initialized. activeScreen = gameObject.GetComponent("MainMenu") as MainMenu; activeScreen.enabled = false; currentScreenArea = ScreenAreas.InGame; } screenOrientation = ScreenOrientation.Landscape; deviceOrientation = DeviceOrientation.LandscapeLeft; if(Application.platform.Equals(RuntimePlatform.Android)){ #if UNITY_ANDROID using(AndroidJavaClass unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"), metricsClass = new AndroidJavaClass("android.util.DisplayMetrics")){ using(AndroidJavaObject metricsInstance = new AndroidJavaObject("android.util.DisplayMetrics"), activityInstance = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity"), windowManagerInstance = activityInstance.Call<AndroidJavaObject>("getWindowManager"), displayInstance = windowManagerInstance.Call<AndroidJavaObject>("getDefaultDisplay")){ displayInstance.Call("getMetrics", metricsInstance); screenResolution.y = metricsInstance.Get<int>("heightPixels"); screenResolution.x = metricsInstance.Get<int>("widthPixels"); screenSize.x = Screen.width; screenSize.y = Screen.height; Screen.SetResolution((int)screenResolution.x, (int)screenResolution.y, true); deviceOrientation = Input.deviceOrientation; } } #endif } else{ // Overall screen resolution must be set initially to screen size for UI, then set to screen resolution while in game. screenSize = new Vector2(Screen.width, Screen.height); screenResolution = new Vector2(Screen.currentResolution.width, Screen.currentResolution.height); if(gameStateManagerRef.inUI){ Screen.SetResolution((int)screenSize.x, (int)screenSize.y, gameStateManagerRef.fullScreen); } // Developer started in a level. else{ Screen.SetResolution((int)screenResolution.x, (int)screenResolution.y, gameStateManagerRef.fullScreen); } } }
/// <summary> /// Displays the screen corresponding to the screen with the provided /// index /// </summary> /// <param name='screen'> /// Screen represents the number index corresponding to which screen out /// of all game screens needs to be currently displayed. /// JOE, Any new screens to be made in the future should be added to the switch /// statement below /// </param> public void DisplayScreen(ScreenAreas screenArea) { // ensure we're not switching to the same area // if we're selecting a level, then the enums associated // with the button are from GameStateManager not ScreenManager if (!screenArea.Equals(currentScreenArea) && !screenArea.Equals(ScreenAreas.None)) { switch(screenArea) { case ScreenAreas.MainMenu: if (gameObject.GetComponent("MainMenu") == null) gameObject.AddComponent<MainMenu>(); activeScreen.enabled = false; activeScreen = gameObject.GetComponent("MainMenu") as MainMenu; currentScreenArea = ScreenAreas.MainMenu; if (GameStateManager.gameStateManagerRef.isPaused) { GameStateManager.gameStateManagerRef.EnterMainMenu(); } break; case ScreenAreas.Options: if (gameObject.GetComponent("Options") == null) gameObject.AddComponent<Options>(); activeScreen.enabled = false; activeScreen = gameObject.GetComponent("Options") as Options; currentScreenArea = ScreenAreas.Options; break; case ScreenAreas.LevelSelect: gameObject.AddComponent<LevelSelect>(); activeScreen.enabled = false; activeScreen = gameObject.GetComponent("LevelSelect") as LevelSelect; currentScreenArea = ScreenAreas.LevelSelect; break; case ScreenAreas.Pause: if (gameObject.GetComponent("Pause") == null) gameObject.AddComponent<Pause>(); activeScreen.enabled = false; activeScreen = gameObject.GetComponent("Pause") as Pause; currentScreenArea = ScreenAreas.Pause; break; case ScreenAreas.ContinueGame: activeScreen.enabled = false; currentScreenArea = ScreenAreas.InGame; GameStateManager.gameStateManagerRef.ContinueGame(); break; case ScreenAreas.Quit: Application.Quit(); break; default: break; } // ensure active screen script // is enabled since we re-use // scripts and make sure this // we're not just continuing after // a pause if (!activeScreen.enabled && !screenArea.Equals(ScreenAreas.ContinueGame)) { activeScreen.enabled = true; } } }
/// <summary> /// Use this for initialization /// </summary> public void Start() { // start screen is always the first screen to // be displayed so might as well load it here without any // fancy footwork if (currentScreenArea.Equals(ScreenAreas.None)) { gameObject.AddComponent<MainMenu>(); activeScreen = gameObject.GetComponent("MainMenu") as MainMenu; currentScreenArea = ScreenAreas.MainMenu; } }
/// <summary> /// Displays the screen corresponding to the screen with the provided index /// </summary> /// <param name='screen'> /// Screen represents the number index corresponding to which screen out f all game screens needs to be currently displayed. /// JOE, Any new screens to be made in the future should be added to the switch statement below /// </param> public void DisplayScreen(ScreenAreas screenArea) { // Ensure we're not switching to the same area if we're selecting a level, then the enums associated // with the button are from GameStateManager not ScreenManager. if(!screenArea.Equals(currentScreenArea) && !screenArea.Equals(ScreenAreas.None)){ switch(screenArea){ // Test? case ScreenAreas.Test: GameStateManager.statManagerRef.SaveGame(1, 343); break; // Switch to the main menu. case ScreenAreas.MainMenu: if(gameObject.GetComponent("MainMenu") == null){ gameObject.AddComponent<MainMenu>(); } activeScreen.enabled = false; activeScreen = gameObject.GetComponent("MainMenu") as MainMenu; currentScreenArea = ScreenAreas.MainMenu; if(gameStateManagerRef.isPaused){ gameStateManagerRef.EnterMainMenu(); } break; // Switch to the options screen. case ScreenAreas.Options: if(gameObject.GetComponent("Options") == null){ gameObject.AddComponent<Options>(); } activeScreen.enabled = false; activeScreen = gameObject.GetComponent("Options") as Options; currentScreenArea = ScreenAreas.Options; break; // Switch to the level select screen. case ScreenAreas.LevelSelect: if(gameObject.GetComponent("LevelSelect") == null){ gameObject.AddComponent<LevelSelect>(); } activeScreen.enabled = false; activeScreen = gameObject.GetComponent("LevelSelect") as LevelSelect; currentScreenArea = ScreenAreas.LevelSelect; break; // Switch to the pause screen. case ScreenAreas.Pause: if(gameObject.GetComponent("Pause") == null){ gameObject.AddComponent<Pause>(); } activeScreen.enabled = false; activeScreen = gameObject.GetComponent("Pause") as Pause; currentScreenArea = ScreenAreas.Pause; break; // Switch back to the previous in-game screen. case ScreenAreas.ContinueGame: activeScreen.enabled = false; currentScreenArea = ScreenAreas.InGame; gameStateManagerRef.ContinueGame(); break; // Switch to the main menu. case ScreenAreas.BeatLevel: if(gameObject.GetComponent("LevelComplete") == null){ gameObject.AddComponent<LevelComplete>(); } activeScreen.enabled = false; activeScreen = gameObject.GetComponent("LevelComplete") as LevelComplete; currentScreenArea = ScreenAreas.BeatLevel; break; // Exit this game. That's terrible. case ScreenAreas.Quit: Application.Quit(); break; // We shouldn't get to this one. EVER. default: break; } // Ensure active screen script is enabled since we re-use scripts and make sure this we're not // just continuing after a pause. if(!activeScreen.enabled && !screenArea.Equals(ScreenAreas.ContinueGame)){ activeScreen.enabled = true; } } }
/// <summary> /// Use this for initialization /// </summary> public void Start() { // Initialize the reference to the GameStateManager so that is actually points to it. gameStateManagerRef = gameObject.GetComponent<GameStateManager>(); // start screen is always the first screen to be displayed so might as well load it here without any fancy footwork if (currentScreenArea.Equals(ScreenAreas.None)) { gameObject.AddComponent<MainMenu>(); activeScreen = gameObject.GetComponent("MainMenu") as MainMenu; currentScreenArea = ScreenAreas.MainMenu; screenOrientation = ScreenOrientation.Landscape; deviceOrientation = DeviceOrientation.LandscapeLeft; if (Application.platform.Equals(RuntimePlatform.Android)) { using (AndroidJavaClass unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"), metricsClass = new AndroidJavaClass("android.util.DisplayMetrics")) { using (AndroidJavaObject metricsInstance = new AndroidJavaObject("android.util.DisplayMetrics"), activityInstance = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity"), windowManagerInstance = activityInstance.Call<AndroidJavaObject>("getWindowManager"), displayInstance = windowManagerInstance.Call<AndroidJavaObject>("getDefaultDisplay")) { displayInstance.Call("getMetrics", metricsInstance); screenResolution.y = metricsInstance.Get<int>("heightPixels"); screenResolution.x = metricsInstance.Get<int>("widthPixels"); screenSize.x = Screen.width; screenSize.y = Screen.height; Screen.SetResolution((int)screenResolution.x, (int)screenResolution.y, true); deviceOrientation = Input.deviceOrientation; } } } else { // Overall screen resolution must be set initially to screen size for UI, // then set to screen resolution while in game screenSize = new Vector2(Screen.width, Screen.height); screenResolution = new Vector2(Screen.currentResolution.width, Screen.currentResolution.height); Screen.SetResolution((int)screenSize.x, (int)screenSize.y, gameStateManagerRef.fullScreen); } } }