diff --git a/Assets/Audio/Master.bank b/Assets/Audio/Master.bank index 2f87ff17..21c524fe 100644 Binary files a/Assets/Audio/Master.bank and b/Assets/Audio/Master.bank differ diff --git a/Assets/Audio/Music.bank b/Assets/Audio/Music.bank index 7a1390c6..a7a856e5 100644 Binary files a/Assets/Audio/Music.bank and b/Assets/Audio/Music.bank differ diff --git a/Assets/Audio/SFX.bank b/Assets/Audio/SFX.bank index 8656abd6..d1c9cf58 100644 Binary files a/Assets/Audio/SFX.bank and b/Assets/Audio/SFX.bank differ diff --git a/Assets/Audio/UI.bank b/Assets/Audio/UI.bank index 44f05317..92edfdf6 100644 Binary files a/Assets/Audio/UI.bank and b/Assets/Audio/UI.bank differ diff --git a/Assets/Scripts/Audio/AudioHandler.cs b/Assets/Scripts/Audio/AudioHandler.cs new file mode 100644 index 00000000..f2e552c1 --- /dev/null +++ b/Assets/Scripts/Audio/AudioHandler.cs @@ -0,0 +1,23 @@ +using SHADE; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SHADE_Scripting.Audio +{ + public static class AudioHandler + { + public static Dictionary audioClipHandlers = new Dictionary(); + + //Functions here, maybe + public static void stopAllSounds(bool fadeOut) + { + foreach (KeyValuePair h in audioClipHandlers) + { + h.Value.Stop(fadeOut); + } + } + } +} diff --git a/Assets/Scripts/Audio/AudioHandler.cs.shmeta b/Assets/Scripts/Audio/AudioHandler.cs.shmeta new file mode 100644 index 00000000..1b9e38f8 --- /dev/null +++ b/Assets/Scripts/Audio/AudioHandler.cs.shmeta @@ -0,0 +1,3 @@ +Name: AudioHandler +ID: 159235425 +Type: 9 diff --git a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/Homeowner1.cs b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/Homeowner1.cs index ff315df2..84c7c485 100644 --- a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/Homeowner1.cs +++ b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/Homeowner1.cs @@ -14,6 +14,7 @@ using SHADE; using SHADE_Scripting.AIBehaviour.BehaviourTree; +using SHADE_Scripting.Audio; using System; using System.Collections.Generic; using System.Linq; @@ -99,6 +100,17 @@ public partial class Homeowner1 : BehaviourTree SetData("turningSpeed", turningSpeed); SetData("distanceToCapture", distanceToCapture); SetData("baseCaptureTime", captureTime);*/ + + + //These should be somewhere else + //Debug.Log("TESTING"); + AudioHandler.audioClipHandlers["BGMUnalert"] = Audio.CreateAudioClip("event:/Music/player_undetected"); + AudioHandler.audioClipHandlers["BGMAlert"] = Audio.CreateAudioClip("event:/Music/player_detected"); + AudioHandler.audioClipHandlers["BGMAdaptive"] = Audio.CreateAudioClip("event:/Music/bgm_adaptive"); + + AudioHandler.audioClipHandlers["SFXFootstep"] = Audio.CreateAudioClip("event:/Homeowner/homeowner_footsteps"); + AudioHandler.audioClipHandlers["SFXDetectAh"] = Audio.CreateAudioClip("event:/Homeowner/homeowner_detect_raccoon"); + AudioHandler.audioClipHandlers["SFXDetectSting"] = Audio.CreateAudioClip("event:/Music/stingers/player_detected"); } //Called every tick @@ -132,7 +144,6 @@ public partial class Homeowner1 : BehaviourTree if (GetData("baseCaptureTime") == null || (float)GetData("baseCaptureTime") != captureTime) SetData("baseCaptureTime", captureTime); - events.Tick(); //Footsteps SFX, move them somewhere else soon @@ -141,7 +152,8 @@ public partial class Homeowner1 : BehaviourTree footstepTimeRemaining -= velocity * Time.DeltaTimeF; if (footstepTimeRemaining < 0.0f) { - Audio.PlaySFXOnce2D("event:/Homeowner/homeowner_footsteps"); + //Audio.PlaySFXOnce2D("event:/Homeowner/homeowner_footsteps"); + //AudioHandler.audioClipHandlers["SFXFootstep"].Play(); footstepTimeRemaining = footstepSFXIntervalMultiplier; } //Debug.Log("Ticked"); diff --git a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafChase.cs b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafChase.cs index de3352d6..2a3647b3 100644 --- a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafChase.cs +++ b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafChase.cs @@ -11,6 +11,7 @@ using SHADE; using SHADE_Scripting.AIBehaviour.BehaviourTree; +using SHADE_Scripting.Audio; using System; using System.Collections.Generic; using System.Linq; @@ -111,7 +112,9 @@ public partial class LeafChase : BehaviourTreeNode if (GetNodeData("isAlert") != null && (bool)GetNodeData("isAlert") == true) { - Audio.PlaySFXOnce2D("event:/Homeowner/humming"); + //AudioHandler.audioClipHandlers["BGMAdpative"].SetParameter("Detected", 0.0f); + Audio.SetParameter("Detected", 0.0f); + AudioHandler.audioClipHandlers["SFXHumming"].Play(); } SetNodeData("isAlert", false); diff --git a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafPatrol.cs b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafPatrol.cs index 84c45779..ba061972 100644 --- a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafPatrol.cs +++ b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafPatrol.cs @@ -11,6 +11,7 @@ using SHADE; using SHADE_Scripting.AIBehaviour.BehaviourTree; +using SHADE_Scripting.Audio; using System; using System.Collections.Generic; using System.Linq; @@ -239,9 +240,12 @@ public partial class LeafPatrol : BehaviourTreeNode if (GetNodeData("isAlert") != null && (bool)GetNodeData("isAlert")) { //Debug.Log("Unalert"); - Audio.PlaySFXOnce2D("event:/Homeowner/humming"); - Audio.StopAllSounds(); - Audio.PlayBGMOnce2D("event:/Music/player_undetected"); + //AudioHandler.audioClipHandlers["BGMAlert"].Stop(true); + //Audio.PlaySFXOnce2D("event:/Homeowner/humming"); + AudioHandler.audioClipHandlers["SFXHumming"].Play(); + //AudioHandler.audioClipHandlers["BGMUnalert"].Play(); + //AudioHandler.audioClipHandlers["BGMAdaptive"].SetParameter("Detected", 0.0f); + Audio.SetParameter("Detected", 0.0f); } SetNodeData("isAlert", false); } diff --git a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafSearch.cs b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafSearch.cs index a48ffcf7..b2760e4a 100644 --- a/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafSearch.cs +++ b/Assets/Scripts/Gameplay/AIBehaviour/Implemented/LeafNodes/LeafSearch.cs @@ -11,6 +11,7 @@ using SHADE; using SHADE_Scripting.AIBehaviour.BehaviourTree; +using SHADE_Scripting.Audio; using System; using System.Collections.Generic; using System.Linq; @@ -65,7 +66,9 @@ public partial class LeafSearch : BehaviourTreeNode { if (GetNodeData("isAlert") != null && (bool)GetNodeData("isAlert") == true) { - Audio.PlaySFXOnce2D("event:/Homeowner/humming"); + //AudioHandler.audioClipHandlers["BGMAdaptive"].SetParameter("Detected", 0.0f); + Audio.SetParameter("Detected", 0.0f); + AudioHandler.audioClipHandlers["SFXHumming"].Play(); reevaluateWaypoint(); } SetNodeData("isAlert", false); @@ -185,19 +188,27 @@ public partial class LeafSearch : BehaviourTreeNode if (GetNodeData("isAlert") == null) { SetNodeData("isAlert", true); - Audio.PlaySFXOnce2D("event:/Homeowner/homeowner_detect_raccoon"); - Audio.PlaySFXOnce2D("event:/Music/stingers/player_detected"); - Audio.StopAllSounds(); - Audio.PlayBGMOnce2D("event:/Music/player_detected"); + //Audio.StopAllSounds(); + AudioHandler.audioClipHandlers["SFXDetectAh"].Play(); + AudioHandler.audioClipHandlers["SFXDetectSting"].Play(); + //AudioHandler.audioClipHandlers["BGMAlert"].Play(); + AudioHandler.audioClipHandlers["SFXHumming"].Stop(false); + //AudioHandler.audioClipHandlers["BGMUnalert"].Stop(true); + //AudioHandler.audioClipHandlers["BGMAdaptive"].SetParameter("Detected", 1.0f); + Audio.SetParameter("Detected", 1.0f); } else { if (GetNodeData("isAlert") != null && (bool)GetNodeData("isAlert") == false) { - Audio.PlaySFXOnce2D("event:/Homeowner/homeowner_detect_raccoon"); - Audio.PlaySFXOnce2D("event:/Music/stingers/player_detected"); - Audio.StopAllSounds(); - Audio.PlayBGMOnce2D("event:/Music/player_detected"); + //Audio.StopAllSounds(); + AudioHandler.audioClipHandlers["SFXDetectAh"].Play(); + AudioHandler.audioClipHandlers["SFXDetectSting"].Play(); + //AudioHandler.audioClipHandlers["BGMAlert"].Play(); + AudioHandler.audioClipHandlers["SFXHumming"].Stop(false); + //AudioHandler.audioClipHandlers["BGMUnalert"].Stop(true); + //AudioHandler.audioClipHandlers["BGMAdaptive"].SetParameter("Detected", 1.0f); + Audio.SetParameter("Detected", 1.0f); } SetNodeData("isAlert", true); } diff --git a/Assets/Scripts/Gameplay/Item/SC_Breakable.cs b/Assets/Scripts/Gameplay/Item/SC_Breakable.cs index 7b58485b..45a2230e 100644 --- a/Assets/Scripts/Gameplay/Item/SC_Breakable.cs +++ b/Assets/Scripts/Gameplay/Item/SC_Breakable.cs @@ -1,4 +1,5 @@ using SHADE; +using SHADE_Scripting.Audio; using System; using System.Collections.Generic; using System.Runtime.CompilerServices; @@ -31,6 +32,8 @@ public class Breakable : Script } isBreak = false; + + AudioHandler.audioClipHandlers["SFXBreak"] = Audio.CreateAudioClip("event:/Props/impact_break"); } protected override void update() @@ -72,7 +75,7 @@ public class Breakable : Script } isBreak = false; - Audio.PlaySFXOnce2D("event:/Props/impact_break"); + AudioHandler.audioClipHandlers["SFXBreak"].Play(); GameObject.SetActive(false); } } \ No newline at end of file diff --git a/Assets/Scripts/Gameplay/Item/SC_Item.cs b/Assets/Scripts/Gameplay/Item/SC_Item.cs index 1494ea42..0c8dabe6 100644 --- a/Assets/Scripts/Gameplay/Item/SC_Item.cs +++ b/Assets/Scripts/Gameplay/Item/SC_Item.cs @@ -1,4 +1,5 @@ using SHADE; +using SHADE_Scripting.Audio; using System; public class Item : Script { @@ -29,6 +30,9 @@ public class Item : Script collider.GetCollisionShape(0).Density = density; returnBack = false; + + AudioHandler.audioClipHandlers["SFXImpactElastic"] = Audio.CreateAudioClip("event:/Props/impact_elastic"); + AudioHandler.audioClipHandlers["SFXImpactHard"] = Audio.CreateAudioClip("event:/Props/impact_hard"); } protected override void start() @@ -54,11 +58,11 @@ public class Item : Script } if (playSound) - { - if(currCategory == ItemCategory.LIGHT) - Audio.PlaySFXOnce2D("event:/Props/impact_elastic"); + { + if (currCategory == ItemCategory.LIGHT) + AudioHandler.audioClipHandlers["SFXImpactElastic"].Play(); else if (currCategory == ItemCategory.MEDIUM || currCategory == ItemCategory.HEAVY) - Audio.PlaySFXOnce2D("event:/Props/impact_hard"); + AudioHandler.audioClipHandlers["SFXImpactHard"].Play(); playSound = false; } diff --git a/Assets/Scripts/Gameplay/Player/SC_PickAndThrow.cs b/Assets/Scripts/Gameplay/Player/SC_PickAndThrow.cs index c650f619..3d14e965 100644 --- a/Assets/Scripts/Gameplay/Player/SC_PickAndThrow.cs +++ b/Assets/Scripts/Gameplay/Player/SC_PickAndThrow.cs @@ -1,5 +1,6 @@ using SHADE; using SHADE_Scripting; +using SHADE_Scripting.Audio; using System; using System.Collections.Generic; using static PlayerController; @@ -43,6 +44,8 @@ public class PickAndThrow : Script if(!tpc) Debug.LogError("TPC EMPTY"); + AudioHandler.audioClipHandlers["SFXThrow"] = Audio.CreateAudioClip("event:/Raccoon/raccoon_throw"); + timer = delayTimer; } protected override void update() @@ -72,7 +75,7 @@ public class PickAndThrow : Script if (Input.GetMouseButtonUp(Input.MouseCode.LeftButton) && pc.isAiming) { - Audio.PlaySFXOnce2D("event:/Raccoon/raccoon_throw"); + AudioHandler.audioClipHandlers["SFXThrow"].Play(); itemRidigBody.IsGravityEnabled = true; itemCollider.GetCollisionShape(0).IsTrigger = false; pc.isAiming = false; diff --git a/Assets/Scripts/Gameplay/SC_GameManager.cs b/Assets/Scripts/Gameplay/SC_GameManager.cs index 97565c41..d1607688 100644 --- a/Assets/Scripts/Gameplay/SC_GameManager.cs +++ b/Assets/Scripts/Gameplay/SC_GameManager.cs @@ -1,4 +1,5 @@ using SHADE; +using SHADE_Scripting.Audio; using System; using System.Collections.Generic; @@ -38,6 +39,23 @@ public class GameManager : Script public static GameManager Instance { get; private set; } + protected override void start() + { + base.start(); + + AudioHandler.audioClipHandlers["BGMAdaptive"] = Audio.CreateAudioClip("event:/Music/bgm_adaptive"); + AudioHandler.audioClipHandlers["BGMAdaptive"].Play(); + + Audio.SetParameter("Detected", 0.0f); + + AudioHandler.audioClipHandlers["KitchenAmbience"] = Audio.CreateAudioClip("event:/Ambience/roomtone_kitchen"); + AudioHandler.audioClipHandlers["KitchenAmbience"].Play(); + + AudioHandler.audioClipHandlers["SFXHumming"] = Audio.CreateAudioClip("event:/Homeowner/homeowner_humming"); + AudioHandler.audioClipHandlers["SFXHumming"].SetVolume(0.15f); + AudioHandler.audioClipHandlers["SFXHumming"].Play(); + } + protected override void awake() { if (Instance != null && Instance != this) @@ -45,8 +63,12 @@ public class GameManager : Script else Instance = this; - Audio.PlayBGMOnce2D("event:/Music/player_undetected"); - Audio.PlayBGMOnce2D("event:/Ambience/roomtone_kitchen"); + + //AudioHandler.audioClipHandlers["BGMAdaptive"].SetParameter("Detected", 0.0f); + //Audio.PlayBGMOnce2D("event:/Music/player_undetected"); + + //Audio.PlayBGMOnce2D("event:/Ambience/roomtone_kitchen"); + totalItemCount = 0; Score = 0; currGameState = GameState.START; @@ -54,6 +76,9 @@ public class GameManager : Script currMultiplierCombo = 1; currMultiplierDuration = 0; fontScalar = new Vector3(multiplierFont / maxMultiplierDuration, multiplierFont / maxMultiplierDuration , multiplierFont / maxMultiplierDuration); + + AudioHandler.audioClipHandlers["BGMWin"] = Audio.CreateAudioClip("event:/Music/stingers/game_win"); + AudioHandler.audioClipHandlers["BGMLose"] = Audio.CreateAudioClip("event:/Music/stingers/game_lose"); } protected override void update() @@ -89,16 +114,22 @@ public class GameManager : Script if ((timer > 0 && totalItemCount < 0) || Input.GetKeyDown(Input.KeyCode.F1)) { currGameState = GameState.WIN; - Audio.StopAllSounds(); + //Audio.StopAllSounds(); //Calling this outright breaks audio clip handlers + AudioHandler.stopAllSounds(false); + AudioHandler.audioClipHandlers["BGMWin"].Play(); SceneManager.ChangeScene(winScene); - Audio.PlaySFXOnce2D("event:/Music/stingers/game_win"); + //Audio.PlaySFXOnce2D("event:/Music/stingers/game_win"); + } else if(timer < 0 || Input.GetKeyDown(Input.KeyCode.F2)) { currGameState = GameState.LOSE; - Audio.StopAllSounds(); + //Audio.StopAllSounds(); + AudioHandler.stopAllSounds(false); + AudioHandler.audioClipHandlers["BGMLose"].Play(); SceneManager.ChangeScene(loseScene); - Audio.PlaySFXOnce2D("event:/Music/stingers/game_lose"); + //Audio.PlaySFXOnce2D("event:/Music/stingers/game_lose"); + } } } diff --git a/Assets/Scripts/Gameplay/SC_ScoringZone.cs b/Assets/Scripts/Gameplay/SC_ScoringZone.cs index 89b55fe2..e9d1d0aa 100644 --- a/Assets/Scripts/Gameplay/SC_ScoringZone.cs +++ b/Assets/Scripts/Gameplay/SC_ScoringZone.cs @@ -1,17 +1,19 @@ using SHADE; +using SHADE_Scripting.Audio; using System; public class ScoringZone : Script { protected override void awake() { + AudioHandler.audioClipHandlers["SFXItemScore"] = Audio.CreateAudioClip("event:/Music/stingers/item_scored"); } protected override void onTriggerEnter(CollisionInfo info) { if (GameManager.Instance && info.GameObject.GetScript() && info.GameObject.IsActiveSelf) { - Audio.PlaySFXOnce2D("event:/Music/stingers/item_scored"); + AudioHandler.audioClipHandlers["SFXItemScore"].Play(); GameManager.Instance.Score += info.GameObject.GetScript().Score * GameManager.Instance.currMultiplierCombo; GameManager.Instance.ItemScored(); info.GameObject.SetActive(false); diff --git a/Assets/Scripts/UI/SC_EndScene.cs b/Assets/Scripts/UI/SC_EndScene.cs index 3b8c6bf0..b934e2bd 100644 --- a/Assets/Scripts/UI/SC_EndScene.cs +++ b/Assets/Scripts/UI/SC_EndScene.cs @@ -1,5 +1,6 @@ using System; using SHADE; +using SHADE_Scripting.Audio; public class EndScene : Script { @@ -8,28 +9,36 @@ public class EndScene : Script protected override void awake() { + AudioHandler.audioClipHandlers["SFXMouseDownElement"] = Audio.CreateAudioClip("event:/UI/mouse_down_element"); + AudioHandler.audioClipHandlers["SFXUISuccess"] = Audio.CreateAudioClip("event:/UI/success"); } protected override void update() { if (Input.GetKeyDown(Input.KeyCode.R)) { - Audio.PlaySFXOnce2D("event:/UI/mouse_down_element"); + //Audio.PlaySFXOnce2D("event:/UI/mouse_down_element"); + AudioHandler.audioClipHandlers["SFXMouseDownElement"].Play(); } if (Input.GetKeyUp(Input.KeyCode.R)) { - Audio.PlaySFXOnce2D("event:/UI/success"); - Audio.StopAllSounds(); + //Audio.PlaySFXOnce2D("event:/UI/success"); + //Audio.StopAllSounds(); + AudioHandler.stopAllSounds(false); + AudioHandler.audioClipHandlers["SFXUISuccess"].Play(); SceneManager.ChangeScene(mainGameScene); } if (Input.GetKeyDown(Input.KeyCode.M)) { - Audio.PlaySFXOnce2D("event:/UI/mouse_down_element"); + //Audio.PlaySFXOnce2D("event:/UI/mouse_down_element"); + AudioHandler.audioClipHandlers["SFXMouseDownElement"].Play(); } if (Input.GetKeyUp(Input.KeyCode.M)) { - Audio.PlaySFXOnce2D("event:/UI/success"); - Audio.StopAllSounds(); + //Audio.PlaySFXOnce2D("event:/UI/success"); + //Audio.StopAllSounds(); + AudioHandler.stopAllSounds(false); + AudioHandler.audioClipHandlers["SFXUISuccess"].Play(); SceneManager.ChangeScene(mainMainScene); } diff --git a/Assets/Scripts/UI/SC_MainMenu.cs b/Assets/Scripts/UI/SC_MainMenu.cs index 067e4104..8af27d64 100644 --- a/Assets/Scripts/UI/SC_MainMenu.cs +++ b/Assets/Scripts/UI/SC_MainMenu.cs @@ -1,23 +1,30 @@ using System; using SHADE; +using SHADE_Scripting.Audio; public class MainMenu : Script { public uint sceneID; protected override void awake() { - Audio.PlayBGMOnce2D("event:/Music/main_menu"); + AudioHandler.audioClipHandlers["BGMMainMenu"] = Audio.CreateAudioClip("event:/Music/main_menu"); + AudioHandler.audioClipHandlers["SFXMouseDownElement"] = Audio.CreateAudioClip("event:/UI/mouse_down_element"); + AudioHandler.audioClipHandlers["SFXUISuccess"] = Audio.CreateAudioClip("event:/UI/success"); + //Audio.PlayBGMOnce2D("event:/Music/main_menu"); + AudioHandler.audioClipHandlers["BGMMainMenu"].Play(); } protected override void update() { if (Input.GetKeyDown(Input.KeyCode.Space)) { - Audio.PlaySFXOnce2D("event:/UI/mouse_down_element"); + //Audio.PlaySFXOnce2D("event:/UI/mouse_down_element"); + AudioHandler.audioClipHandlers["SFXMouseDownElement"].Play(); } if (Input.GetKeyUp(Input.KeyCode.Space)) { - Audio.PlaySFXOnce2D("event:/UI/success"); + //Audio.PlaySFXOnce2D("event:/UI/success"); + AudioHandler.audioClipHandlers["SFXUISuccess"].Play(); SceneManager.ChangeScene(sceneID); Audio.StopAllSounds(); }