From 10cccc9b70f5fc49cb8bdc56812d9a76e2715eda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerard=20Gasc=C3=B3n?= <52170489+GerardGascon@users.noreply.github.com> Date: Thu, 22 Sep 2022 13:52:08 +0200 Subject: [PATCH] Added in-dialogue sounds --- README.md | 4 +--- Tools/DialogueSystem/DialogueUtility.cs | 20 ++++++++++++++++++- .../DialogueSystem/DialogueVertexAnimator.cs | 3 +++ package.json | 2 +- 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 1cc8b71..b9678df 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,6 @@ This package will be updated once I find another useful tool or someone suggest - Basic menu with **music and SFX sliders** as well as **resolution and quality dropdowns.** - An **object pooler** with the ability to create pools with an undetermined size. - A basic **scene manager** with a loading screen with progress bar. -- A simple **timer** that is displayed inside a TextMeshPro object. All of that comes with some editor menu items for creating all of that as fast as possible. @@ -102,7 +101,6 @@ Text commands: --> Pauses during a period of time --> Reproduces an animation --> Changes reveal speed - --> Plays a sound from the Audio Manager ``` ### SceneManager @@ -144,4 +142,4 @@ timer.Restart(); //Restarts the timer You can easily set up some things by right clicking in your Project Tab and then selecting Tools and clicking on the one you want to create. -Also you can right click in the Hierarchy for easily creating some GameObjects with the Tools in it. +Also you can right click in the Hierarchy for easily creating some GameObjects with the Tools in it. \ No newline at end of file diff --git a/Tools/DialogueSystem/DialogueUtility.cs b/Tools/DialogueSystem/DialogueUtility.cs index 0483a00..98a67c3 100644 --- a/Tools/DialogueSystem/DialogueUtility.cs +++ b/Tools/DialogueSystem/DialogueUtility.cs @@ -11,6 +11,8 @@ namespace SimpleTools.DialogueSystem { const string REMAINDER_REGEX = "(.*?((?=>)|(/|$)))"; const string PAUSE_REGEX_STRING = "" + REMAINDER_REGEX + ")>"; static readonly Regex pauseRegex = new Regex(PAUSE_REGEX_STRING); + const string SOUND_REGEX_STRING = "" + REMAINDER_REGEX + ")>"; + static readonly Regex soundRegex = new Regex(SOUND_REGEX_STRING); const string SPEED_REGEX_STRING = "" + REMAINDER_REGEX + ")>"; static readonly Regex speedRegex = new Regex(SPEED_REGEX_STRING); const string ANIM_START_REGEX_STRING = "" + REMAINDER_REGEX + ")>"; @@ -31,6 +33,7 @@ namespace SimpleTools.DialogueSystem { processedMessage = message; processedMessage = HandlePauseTags(processedMessage, result); + processedMessage = HandleSoundTags(processedMessage, result); processedMessage = HandleSpeedTags(processedMessage, result); processedMessage = HandleAnimStartTags(processedMessage, result); processedMessage = HandleAnimEndTags(processedMessage, result); @@ -96,6 +99,20 @@ namespace SimpleTools.DialogueSystem { processedMessage = Regex.Replace(processedMessage, PAUSE_REGEX_STRING, ""); return processedMessage; } + static string HandleSoundTags(string processedMessage, List result) { + MatchCollection soundMatches = soundRegex.Matches(processedMessage); + foreach (Match match in soundMatches) { + string val = match.Groups["sound"].Value; + string soundName = val; + result.Add(new DialogueCommand { + position = VisibleCharactersUpToIndex(processedMessage, match.Index), + type = DialogueCommandType.Sound, + stringValue = soundName + }); + } + processedMessage = Regex.Replace(processedMessage, SOUND_REGEX_STRING, ""); + return processedMessage; + } static TextAnimationType GetTextAnimationType(string stringVal) { TextAnimationType result; @@ -139,7 +156,8 @@ namespace SimpleTools.DialogueSystem { Pause, TextSpeedChange, AnimStart, - AnimEnd + AnimEnd, + Sound } public enum TextAnimationType { diff --git a/Tools/DialogueSystem/DialogueVertexAnimator.cs b/Tools/DialogueSystem/DialogueVertexAnimator.cs index bb20fc1..24eb6e4 100644 --- a/Tools/DialogueSystem/DialogueVertexAnimator.cs +++ b/Tools/DialogueSystem/DialogueVertexAnimator.cs @@ -134,6 +134,9 @@ namespace SimpleTools.DialogueSystem { case DialogueCommandType.TextSpeedChange: secondsPerCharacter = 1f / command.floatValue; break; + case DialogueCommandType.Sound: + AudioManager.AudioManager.instance.PlayOneShot(command.stringValue); + break; } commands.RemoveAt(i); i--; diff --git a/package.json b/package.json index e8cfdfd..a1f46e7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "com.geri.simpletools", - "version": "1.2.1", + "version": "1.2.2", "displayName": "Simple Tools", "description": "This package contains simple tools to use in your project.", "unity": "2018.4",