diff --git a/Assets/Materials/UI/UIMat_Black.shmat b/Assets/Materials/UI/UIMat_Black.shmat index 183b5f26..8451828f 100644 --- a/Assets/Materials/UI/UIMat_Black.shmat +++ b/Assets/Materials/UI/UIMat_Black.shmat @@ -1,6 +1,6 @@ - VertexShader: 46580970 FragmentShader: 50110174 - SubPass: UI + SubPass: UI Translucent Properties: data.color: {x: 0, y: 0, z: 0, w: 1} data.textureIndex: 0 diff --git a/Assets/Scripts/Gameplay/SC_GameManager.cs b/Assets/Scripts/Gameplay/SC_GameManager.cs index f9f453f4..26b2c885 100644 --- a/Assets/Scripts/Gameplay/SC_GameManager.cs +++ b/Assets/Scripts/Gameplay/SC_GameManager.cs @@ -95,18 +95,24 @@ public class GameManager : Script AudioHandler.audioClipHandlers["SFXHumming"].SetVolume(0.15f); AudioHandler.audioClipHandlers["SFXHumming"].Play(); - SceneFadeInOut.Instance.CallFadeOut(); + if (SceneFadeInOut.Instance != null) + SceneFadeInOut.Instance.CallFadeOut(); + Application.IsCursorVisible = false; } protected override void update() { if (GamePause || !stealFoodPopUpDone) { + Input.SetMouseCentering(false); + //Application.IsCursorVisible = true; return; } if (currGameState == GameState.START) { + Input.SetMouseCentering(true); + timer -= Time.DeltaTimeF; if(scoreText) scoreText.GetComponent().Text = $"{Score}"; @@ -138,7 +144,8 @@ public class GameManager : Script AudioHandler.StopAllSounds(false); AudioHandler.audioClipHandlers["BGMWin"].Play(); goingToWin = true; - SceneFadeInOut.Instance.CallFadeIn(); + if (SceneFadeInOut.Instance != null) + SceneFadeInOut.Instance.CallFadeIn(); } else if(!goingToWin && (timer < 0 || Input.GetKeyDown(Input.KeyCode.F2))) { @@ -146,12 +153,27 @@ public class GameManager : Script AudioHandler.StopAllSounds(false); AudioHandler.audioClipHandlers["BGMLose"].Play(); goingToLose = true; - SceneFadeInOut.Instance.CallFadeIn(); + if (SceneFadeInOut.Instance != null) + SceneFadeInOut.Instance.CallFadeIn(); } } //Handling transitions - if (SceneFadeInOut.Instance.FadeInFinished()) + if (SceneFadeInOut.Instance != null) + { + if (SceneFadeInOut.Instance.FadeInFinished()) + { + if (goingToWin) + { + SceneManager.ChangeScene(winScene); + } + if (goingToLose) + { + SceneManager.ChangeScene(loseScene); + } + } + } + else { if (goingToWin) { diff --git a/Assets/Scripts/UI/SC_ChangeSceneButton.cs b/Assets/Scripts/UI/SC_ChangeSceneButton.cs index 6a51716b..09e4cf5b 100644 --- a/Assets/Scripts/UI/SC_ChangeSceneButton.cs +++ b/Assets/Scripts/UI/SC_ChangeSceneButton.cs @@ -22,22 +22,19 @@ public class ChangeSceneButton : Script { ui.OnRelease.RegisterAction(() => { - if (sceneID != 0) { - Audio.PlaySFXOnce2D("event:/UI/success"); - - Audio.StopAllSounds(); - + Audio.PlaySFXOnce2D("event:/UI/success"); + Audio.StopAllSounds(); + if (SceneFadeInOut.Instance != null) SceneFadeInOut.Instance.CallFadeIn(); - clickedFlag = true; + clickedFlag = true; } }); } else { Debug.LogError("Failed to register button action for ChangeSceneButton."); - } } protected override void update() diff --git a/Assets/Scripts/UI/SC_EndScene.cs b/Assets/Scripts/UI/SC_EndScene.cs index 2117b24a..7d00c334 100644 --- a/Assets/Scripts/UI/SC_EndScene.cs +++ b/Assets/Scripts/UI/SC_EndScene.cs @@ -1,6 +1,7 @@ using System; using SHADE; using SHADE_Scripting.Audio; +using SHADE_Scripting.UI; public class EndScene : Script { @@ -12,6 +13,15 @@ public class EndScene : Script AudioHandler.audioClipHandlers["SFXMouseDownElement"] = Audio.CreateAudioClip("event:/UI/mouse_down_element"); AudioHandler.audioClipHandlers["SFXUISuccess"] = Audio.CreateAudioClip("event:/UI/success"); } + + protected override void start() + { + Input.SetMouseCentering(false); + Debug.Log("EndScene::Start():"); + Application.IsCursorVisible = true; + SceneFadeInOut.Instance.CallFadeOut(); + } + protected override void update() { if (Input.GetKeyDown(Input.KeyCode.R)) diff --git a/Assets/Scripts/UI/SC_MainMenu.cs b/Assets/Scripts/UI/SC_MainMenu.cs index 59b6594e..16c2d593 100644 --- a/Assets/Scripts/UI/SC_MainMenu.cs +++ b/Assets/Scripts/UI/SC_MainMenu.cs @@ -1,6 +1,7 @@ using System; using SHADE; using SHADE_Scripting.Audio; +using SHADE_Scripting.UI; public class MainMenu : Script { @@ -23,6 +24,9 @@ public class MainMenu : Script protected override void start() { + Input.SetMouseCentering(false); + Application.IsCursorVisible = true; + SceneFadeInOut.Instance.CallFadeOut(); } protected override void update() { diff --git a/Assets/Scripts/UI/SC_PauseMenu.cs b/Assets/Scripts/UI/SC_PauseMenu.cs index c92965d8..a20dd586 100644 --- a/Assets/Scripts/UI/SC_PauseMenu.cs +++ b/Assets/Scripts/UI/SC_PauseMenu.cs @@ -13,7 +13,8 @@ public class PauseMenu : Script protected override void awake() { - GameManager.Instance.GamePause = false; + if (GameManager.Instance != null) + GameManager.Instance.GamePause = false; if (canvas) { @@ -41,6 +42,8 @@ public class PauseMenu : Script if (GameManager.Instance.GamePause) { GameManager.Instance.GamePause = false; + Input.SetMouseCentering(true); + Application.IsCursorVisible = false; AudioHandler.PauseAllSounds(false); if (gamePauseText) gamePauseText.Enabled = false; @@ -91,6 +94,8 @@ public class PauseMenu : Script if (Input.GetKeyDown(Input.KeyCode.Escape) && !GameManager.Instance.GamePause && GameManager.Instance.stealFoodPopUpDone) { GameManager.Instance.GamePause = true; + Input.SetMouseCentering(false); + Application.IsCursorVisible = true; AudioHandler.PauseAllSounds(true); if (gamePauseText) gamePauseText.Enabled = true; diff --git a/Assets/Scripts/UI/SC_SceneFadeInOut.cs b/Assets/Scripts/UI/SC_SceneFadeInOut.cs index 15047e49..c426f8a6 100644 --- a/Assets/Scripts/UI/SC_SceneFadeInOut.cs +++ b/Assets/Scripts/UI/SC_SceneFadeInOut.cs @@ -43,7 +43,6 @@ namespace SHADE_Scripting.UI protected override void start() { - } protected override void update() @@ -56,7 +55,6 @@ namespace SHADE_Scripting.UI if (fadeInTime == 0.0f) { alphaValue = 1.0f; - } else { @@ -64,7 +62,8 @@ namespace SHADE_Scripting.UI } if (alphaValue >= 1.0f) { - alphaValue = 1.0f; + alphaValue = 1.0f; + //GameObject.Parent.SetActive(false); } } @@ -82,8 +81,10 @@ namespace SHADE_Scripting.UI } if (alphaValue <= 0.0f) { - alphaValue = 0.0f; - GameObject.Parent.SetActive(false); + alphaValue = 0.0f; + //This line is to be added so that (because the fade in and out item is usually the front-most UI element) + //the fade in and out UI element does not block functionality of other UI elements + GameObject.Parent.SetActive(false); } } diff --git a/SHADE_Engine/src/Graphics/Windowing/SHWindow.cpp b/SHADE_Engine/src/Graphics/Windowing/SHWindow.cpp index 078d9fc8..84df5f88 100644 --- a/SHADE_Engine/src/Graphics/Windowing/SHWindow.cpp +++ b/SHADE_Engine/src/Graphics/Windowing/SHWindow.cpp @@ -198,7 +198,8 @@ namespace SHADE void SHWindow::SetMouseVisible(bool show) { - ShowCursor(show); + while(GetMouseVisible() != show) + ShowCursor(show); } void SHWindow::SetMousePosition(int x, int y)