From 1f5cfd36f7c53dd9b076f662cbb49c239ccb2644 Mon Sep 17 00:00:00 2001 From: mushgunAX Date: Wed, 1 Mar 2023 17:36:02 +0800 Subject: [PATCH] Scene transitions done --- Assets/Scenes/Level1.shade | 6 +-- Assets/Scenes/Level2.shade | 6 +-- Assets/Scenes/LoseScene.shade | 6 +-- Assets/Scenes/MainMenu.shade | 6 +-- Assets/Scenes/WinScene.shade | 6 +-- Assets/Scripts/Audio/AudioHandler.cs | 4 +- Assets/Scripts/Gameplay/SC_GameManager.cs | 36 ++++++++++--- Assets/Scripts/UI/SC_ChangeSceneButton.cs | 5 +- Assets/Scripts/UI/SC_EndScene.cs | 4 +- Assets/Scripts/UI/SC_PauseMenu.cs | 4 +- Assets/Scripts/UI/SC_SceneFadeInOut.cs | 61 +++++++++++++++++++---- 11 files changed, 97 insertions(+), 47 deletions(-) diff --git a/Assets/Scenes/Level1.shade b/Assets/Scenes/Level1.shade index bbfcd35c..3aca2ae6 100644 --- a/Assets/Scenes/Level1.shade +++ b/Assets/Scenes/Level1.shade @@ -5323,8 +5323,6 @@ Scripts: - Type: SHADE_Scripting.UI.SceneFadeInOut Enabled: true - fadeIn: false - fadeOut: true alphaValue: 1 - fadeInRate: 2 - fadeOutRate: 2 \ No newline at end of file + fadeInTime: 0.5 + fadeOutTime: 0.5 \ No newline at end of file diff --git a/Assets/Scenes/Level2.shade b/Assets/Scenes/Level2.shade index 812218dd..f0c33b5b 100644 --- a/Assets/Scenes/Level2.shade +++ b/Assets/Scenes/Level2.shade @@ -13331,8 +13331,6 @@ Scripts: - Type: SHADE_Scripting.UI.SceneFadeInOut Enabled: true - fadeIn: false - fadeOut: true alphaValue: 1 - fadeInRate: 2 - fadeOutRate: 2 \ No newline at end of file + fadeInTime: 0.5 + fadeOutTime: 0.5 \ No newline at end of file diff --git a/Assets/Scenes/LoseScene.shade b/Assets/Scenes/LoseScene.shade index 2a9cafd1..bd9d45c3 100644 --- a/Assets/Scenes/LoseScene.shade +++ b/Assets/Scenes/LoseScene.shade @@ -163,8 +163,6 @@ Scripts: - Type: SHADE_Scripting.UI.SceneFadeInOut Enabled: true - fadeIn: false - fadeOut: true alphaValue: 1 - fadeInRate: 2 - fadeOutRate: 2 \ No newline at end of file + fadeInTime: 0.5 + fadeOutTime: 0.5 \ No newline at end of file diff --git a/Assets/Scenes/MainMenu.shade b/Assets/Scenes/MainMenu.shade index 367c3910..946e7a8d 100644 --- a/Assets/Scenes/MainMenu.shade +++ b/Assets/Scenes/MainMenu.shade @@ -1121,8 +1121,6 @@ Scripts: - Type: SHADE_Scripting.UI.SceneFadeInOut Enabled: true - fadeIn: false - fadeOut: true alphaValue: 1 - fadeInRate: 2 - fadeOutRate: 2 \ No newline at end of file + fadeInTime: 0.5 + fadeOutTime: 0.5 \ No newline at end of file diff --git a/Assets/Scenes/WinScene.shade b/Assets/Scenes/WinScene.shade index c7cd909b..57096086 100644 --- a/Assets/Scenes/WinScene.shade +++ b/Assets/Scenes/WinScene.shade @@ -163,8 +163,6 @@ Scripts: - Type: SHADE_Scripting.UI.SceneFadeInOut Enabled: true - fadeIn: false - fadeOut: true alphaValue: 1 - fadeInRate: 2 - fadeOutRate: 2 \ No newline at end of file + fadeInTime: 0.5 + fadeOutTime: 0.5 \ No newline at end of file diff --git a/Assets/Scripts/Audio/AudioHandler.cs b/Assets/Scripts/Audio/AudioHandler.cs index c6067819..4743b4c5 100644 --- a/Assets/Scripts/Audio/AudioHandler.cs +++ b/Assets/Scripts/Audio/AudioHandler.cs @@ -12,7 +12,7 @@ namespace SHADE_Scripting.Audio public static Dictionary audioClipHandlers = new Dictionary(); //Functions here, maybe - public static void stopAllSounds(bool fadeOut) + public static void StopAllSounds(bool fadeOut) { foreach (KeyValuePair h in audioClipHandlers) { @@ -20,7 +20,7 @@ namespace SHADE_Scripting.Audio } } - public static void pauseAllSounds(bool pause) + public static void PauseAllSounds(bool pause) { foreach (KeyValuePair h in audioClipHandlers) { diff --git a/Assets/Scripts/Gameplay/SC_GameManager.cs b/Assets/Scripts/Gameplay/SC_GameManager.cs index 1cebe002..3746ec0c 100644 --- a/Assets/Scripts/Gameplay/SC_GameManager.cs +++ b/Assets/Scripts/Gameplay/SC_GameManager.cs @@ -1,5 +1,6 @@ using SHADE; using SHADE_Scripting.Audio; +using SHADE_Scripting.UI; using System; using System.Collections.Generic; @@ -43,6 +44,10 @@ public class GameManager : Script public bool itemShatter { get; set; } + //For scene transitions + private bool goingToWin; + private bool goingToLose; + protected override void awake() { if (Instance != null && Instance != this) @@ -61,11 +66,13 @@ public class GameManager : Script AudioHandler.audioClipHandlers["BGMWin"] = Audio.CreateAudioClip("event:/Music/stingers/game_win"); AudioHandler.audioClipHandlers["BGMLose"] = Audio.CreateAudioClip("event:/Music/stingers/game_lose"); + + goingToWin = false; + goingToLose = false; } protected override void start() { - AudioHandler.audioClipHandlers["BGMAdaptive"] = Audio.CreateAudioClip("event:/Music/bgm_adaptive"); AudioHandler.audioClipHandlers["BGMAdaptive"].Play(); @@ -113,21 +120,34 @@ public class GameManager : Script //multiplierText.GetComponent().LocalScale = Vector3.Zero; } - if ((timer > 0 && totalItemCount <= 0 && !itemShatter) || Input.GetKeyDown(Input.KeyCode.F1)) + if (!goingToLose && ((timer > 0 && totalItemCount <= 0 && !itemShatter) || Input.GetKeyDown(Input.KeyCode.F1))) { currGameState = GameState.WIN; - AudioHandler.stopAllSounds(false); + AudioHandler.StopAllSounds(false); AudioHandler.audioClipHandlers["BGMWin"].Play(); - SceneManager.ChangeScene(winScene); - + goingToWin = true; + SceneFadeInOut.Instance.CallFadeIn(); } - else if(timer < 0 || Input.GetKeyDown(Input.KeyCode.F2)) + else if(!goingToWin && (timer < 0 || Input.GetKeyDown(Input.KeyCode.F2))) { currGameState = GameState.LOSE; - AudioHandler.stopAllSounds(false); + AudioHandler.StopAllSounds(false); AudioHandler.audioClipHandlers["BGMLose"].Play(); + goingToLose = true; + SceneFadeInOut.Instance.CallFadeIn(); + } + } + + //Handling transitions + if (SceneFadeInOut.Instance.FadeInFinished()) + { + if (goingToWin) + { + SceneManager.ChangeScene(winScene); + } + if (goingToLose) + { SceneManager.ChangeScene(loseScene); - } } } diff --git a/Assets/Scripts/UI/SC_ChangeSceneButton.cs b/Assets/Scripts/UI/SC_ChangeSceneButton.cs index 7b479d19..6a51716b 100644 --- a/Assets/Scripts/UI/SC_ChangeSceneButton.cs +++ b/Assets/Scripts/UI/SC_ChangeSceneButton.cs @@ -29,8 +29,7 @@ public class ChangeSceneButton : Script Audio.StopAllSounds(); - SceneFadeInOut.Instance.fadeOut = false; - SceneFadeInOut.Instance.fadeIn = true; + SceneFadeInOut.Instance.CallFadeIn(); clickedFlag = true; } }); @@ -43,7 +42,7 @@ public class ChangeSceneButton : Script } protected override void update() { - if (clickedFlag && sceneID != 0 && SceneFadeInOut.Instance.alphaValue >= 1.0f) + if (clickedFlag && sceneID != 0 && SceneFadeInOut.Instance.FadeInFinished()) { SceneManager.ChangeScene(sceneID); } diff --git a/Assets/Scripts/UI/SC_EndScene.cs b/Assets/Scripts/UI/SC_EndScene.cs index b934e2bd..2117b24a 100644 --- a/Assets/Scripts/UI/SC_EndScene.cs +++ b/Assets/Scripts/UI/SC_EndScene.cs @@ -23,7 +23,7 @@ public class EndScene : Script { //Audio.PlaySFXOnce2D("event:/UI/success"); //Audio.StopAllSounds(); - AudioHandler.stopAllSounds(false); + AudioHandler.StopAllSounds(false); AudioHandler.audioClipHandlers["SFXUISuccess"].Play(); SceneManager.ChangeScene(mainGameScene); } @@ -37,7 +37,7 @@ public class EndScene : Script { //Audio.PlaySFXOnce2D("event:/UI/success"); //Audio.StopAllSounds(); - AudioHandler.stopAllSounds(false); + AudioHandler.StopAllSounds(false); AudioHandler.audioClipHandlers["SFXUISuccess"].Play(); SceneManager.ChangeScene(mainMainScene); } diff --git a/Assets/Scripts/UI/SC_PauseMenu.cs b/Assets/Scripts/UI/SC_PauseMenu.cs index 521b48ea..71e2b8c3 100644 --- a/Assets/Scripts/UI/SC_PauseMenu.cs +++ b/Assets/Scripts/UI/SC_PauseMenu.cs @@ -39,7 +39,7 @@ public class PauseMenu : Script if (GameManager.Instance.GamePause) { GameManager.Instance.GamePause = false; - AudioHandler.pauseAllSounds(false); + AudioHandler.PauseAllSounds(false); if (gamePauseText) gamePauseText.GetComponent().Enabled = false; if (canvas) @@ -89,7 +89,7 @@ public class PauseMenu : Script if (Input.GetKeyDown(Input.KeyCode.Escape) && !GameManager.Instance.GamePause) { GameManager.Instance.GamePause = true; - AudioHandler.pauseAllSounds(true); + AudioHandler.PauseAllSounds(true); if (gamePauseText) gamePauseText.GetComponent().Enabled = true; if (canvas) diff --git a/Assets/Scripts/UI/SC_SceneFadeInOut.cs b/Assets/Scripts/UI/SC_SceneFadeInOut.cs index df245d26..5c6ebb77 100644 --- a/Assets/Scripts/UI/SC_SceneFadeInOut.cs +++ b/Assets/Scripts/UI/SC_SceneFadeInOut.cs @@ -9,20 +9,20 @@ namespace SHADE_Scripting.UI { public class SceneFadeInOut : Script { - [Tooltip("If true, the panel fadeUI fades in (increasing alpha). If false, no fading. Mutually exclusive with fadeIn")] - public bool fadeIn; + //[Tooltip("If true, the panel fadeUI fades in (increasing alpha). If false, no fading. Mutually exclusive with fadeIn")] + private bool fadeIn; - [Tooltip("If true, the panel fadeUI fades out (decreasing alpha). If false, no fading. Mutually exclusive with fadeIn")] - public bool fadeOut; + //[Tooltip("If true, the panel fadeUI fades out (decreasing alpha). If false, no fading. Mutually exclusive with fadeIn")] + private bool fadeOut; - [Tooltip("The alpha value of the UI that is faded. Between 0 and 1 inclusive.")] + [Tooltip("The initial alpha value of the UI that is faded. Between 0 and 1 inclusive.")] public float alphaValue; [SerializeField] - private float fadeInRate; + private float fadeInTime; [SerializeField] - private float fadeOutRate; + private float fadeOutTime; private Renderable fadeR; @@ -42,7 +42,7 @@ namespace SHADE_Scripting.UI protected override void start() { - + CallFadeOut(); } protected override void update() @@ -52,14 +52,28 @@ namespace SHADE_Scripting.UI if (fadeIn) //fading in { fadeOut = false; - alphaValue += fadeInRate * Time.DeltaTimeF; + if (fadeInTime == 0.0f) + { + alphaValue = 1.0f; + } + else + { + alphaValue += (1.0f / fadeInTime) * Time.DeltaTimeF; + } if (alphaValue >= 1.0f) alphaValue = 1.0f; } if (fadeOut) //fading out { fadeIn = false; - alphaValue -= fadeOutRate * Time.DeltaTimeF; + if (fadeOutTime == 0.0f) + { + alphaValue = 0.0f; + } + else + { + alphaValue -= (1.0f / fadeOutTime) * Time.DeltaTimeF; + } if (alphaValue <= 0.0f) alphaValue = 0.0f; } @@ -73,5 +87,32 @@ namespace SHADE_Scripting.UI Instance = null; } + public void CallFadeIn() + { + fadeIn = true; + fadeOut = false; + } + + public void CallFadeOut() + { + fadeOut = true; + fadeIn = false; + } + + public void CallFadeStop() + { + fadeOut = false; + fadeIn = false; + } + + public bool FadeOutFinished() + { + return (alphaValue <= 0.0f); + } + + public bool FadeInFinished() + { + return (alphaValue >= 1.0f); + } } }