From 9ff4885173e42dacf35097a6df52891a72aaeefa Mon Sep 17 00:00:00 2001
From: Cameron Taylor <cameron.taylor.ninja@gmail.com>
Date: Wed, 11 Oct 2023 19:39:52 -0400
Subject: [PATCH] charting sound effects in progress!

---
 assets                                         |  2 +-
 .../ui/debug/charting/ChartEditorCommand.hx    | 16 ++++++++++------
 .../ui/debug/charting/ChartEditorState.hx      | 18 +++++++++++++++++-
 .../charting/ChartEditorToolboxHandler.hx      |  4 ++++
 4 files changed, 32 insertions(+), 8 deletions(-)

diff --git a/assets b/assets
index 6e5ed4602..b767f2d43 160000
--- a/assets
+++ b/assets
@@ -1 +1 @@
-Subproject commit 6e5ed46026a2eb1e575c5accf9192b90c13ff857
+Subproject commit b767f2d43bf357e0d092fdf255a28963fe42cdff
diff --git a/source/funkin/ui/debug/charting/ChartEditorCommand.hx b/source/funkin/ui/debug/charting/ChartEditorCommand.hx
index c358c1d3d..ccefea67d 100644
--- a/source/funkin/ui/debug/charting/ChartEditorCommand.hx
+++ b/source/funkin/ui/debug/charting/ChartEditorCommand.hx
@@ -64,7 +64,7 @@ class AddNotesCommand implements ChartEditorCommand
       state.currentEventSelection = [];
     }
 
-    ChartEditorAudioHandler.playSound(Paths.sound('funnyNoise/funnyNoise-08'));
+    ChartEditorAudioHandler.playSound(Paths.sound('chartingSounds/noteLay'));
 
     state.saveDataDirty = true;
     state.noteDisplayDirty = true;
@@ -78,7 +78,7 @@ class AddNotesCommand implements ChartEditorCommand
     state.currentSongChartNoteData = SongDataUtils.subtractNotes(state.currentSongChartNoteData, notes);
     state.currentNoteSelection = [];
     state.currentEventSelection = [];
-    ChartEditorAudioHandler.playSound(Paths.sound('funnyNoise/funnyNoise-01'));
+    ChartEditorAudioHandler.playSound(Paths.sound('chartingSounds/undo'));
 
     state.saveDataDirty = true;
     state.noteDisplayDirty = true;
@@ -131,7 +131,7 @@ class RemoveNotesCommand implements ChartEditorCommand
     }
     state.currentNoteSelection = notes;
     state.currentEventSelection = [];
-    ChartEditorAudioHandler.playSound(Paths.sound('funnyNoise/funnyNoise-08'));
+    ChartEditorAudioHandler.playSound(Paths.sound('chartingSounds/undo'));
 
     state.saveDataDirty = true;
     state.noteDisplayDirty = true;
@@ -252,7 +252,7 @@ class AddEventsCommand implements ChartEditorCommand
       state.currentEventSelection = events;
     }
 
-    ChartEditorAudioHandler.playSound(Paths.sound('funnyNoise/funnyNoise-08'));
+    ChartEditorAudioHandler.playSound(Paths.sound('chartingSounds/noteLay'));
 
     state.saveDataDirty = true;
     state.noteDisplayDirty = true;
@@ -312,7 +312,7 @@ class RemoveEventsCommand implements ChartEditorCommand
       state.currentSongChartEventData.push(event);
     }
     state.currentEventSelection = events;
-    ChartEditorAudioHandler.playSound(Paths.sound('funnyNoise/funnyNoise-08'));
+    ChartEditorAudioHandler.playSound(Paths.sound('chartingSounds/undo'));
 
     state.saveDataDirty = true;
     state.noteDisplayDirty = true;
@@ -376,7 +376,7 @@ class RemoveItemsCommand implements ChartEditorCommand
     state.currentNoteSelection = notes;
     state.currentEventSelection = events;
 
-    ChartEditorAudioHandler.playSound(Paths.sound('funnyNoise/funnyNoise-08'));
+    ChartEditorAudioHandler.playSound(Paths.sound('chartingSounds/undo'));
 
     state.saveDataDirty = true;
     state.noteDisplayDirty = true;
@@ -777,6 +777,8 @@ class PasteItemsCommand implements ChartEditorCommand
 
   public function undo(state:ChartEditorState):Void
   {
+    ChartEditorAudioHandler.playSound(Paths.sound('chartingSounds/undo'));
+
     state.currentSongChartNoteData = SongDataUtils.subtractNotes(state.currentSongChartNoteData, addedNotes);
     state.currentSongChartEventData = SongDataUtils.subtractEvents(state.currentSongChartEventData, addedEvents);
     state.currentNoteSelection = [];
@@ -829,6 +831,8 @@ class ExtendNoteLengthCommand implements ChartEditorCommand
 
   public function undo(state:ChartEditorState):Void
   {
+    ChartEditorAudioHandler.playSound(Paths.sound('chartingSounds/undo'));
+
     note.length = oldLength;
 
     state.saveDataDirty = true;
diff --git a/source/funkin/ui/debug/charting/ChartEditorState.hx b/source/funkin/ui/debug/charting/ChartEditorState.hx
index 67e3c1dc8..277079e31 100644
--- a/source/funkin/ui/debug/charting/ChartEditorState.hx
+++ b/source/funkin/ui/debug/charting/ChartEditorState.hx
@@ -2096,11 +2096,18 @@ class ChartEditorState extends HaxeUIState
     }
   }
 
+  var dragLengthCurrent:Float = 0;
+  var stretchySounds:Bool = false;
+
   /**
    * Handle display of the mouse cursor.
    */
   function handleCursor():Void
   {
+    // Mouse sounds
+    if (FlxG.mouse.justPressed) FlxG.sound.play(Paths.sound("chartingSounds/ClickDown"));
+    if (FlxG.mouse.justReleased) FlxG.sound.play(Paths.sound("chartingSounds/ClickUp"));
+
     // Note: If a menu is open in HaxeUI, don't handle cursor behavior.
     var shouldHandleCursor:Bool = !isCursorOverHaxeUI || (selectionBoxStartPos != null);
     var eventColumn:Int = (STRUMLINE_SIZE * 2 + 1) - 1;
@@ -2449,6 +2456,14 @@ class ChartEditorState extends HaxeUIState
 
         if (dragLengthSteps > 0)
         {
+          if (dragLengthCurrent != dragLengthSteps)
+          {
+            stretchySounds = !stretchySounds;
+            ChartEditorAudioHandler.playSound(Paths.sound('chartingSounds/stretch' + (stretchySounds ? '1' : '2') + '_UI'));
+
+            dragLengthCurrent = dragLengthSteps;
+          }
+
           gridGhostHoldNote.visible = true;
           gridGhostHoldNote.noteData = gridGhostNote.noteData;
           gridGhostHoldNote.noteDirection = gridGhostNote.noteData.getDirection();
@@ -2466,6 +2481,7 @@ class ChartEditorState extends HaxeUIState
         {
           if (dragLengthSteps > 0)
           {
+            ChartEditorAudioHandler.playSound(Paths.sound('chartingSounds/stretchSNAP_UI'));
             // Apply the new length.
             performCommand(new ExtendNoteLengthCommand(currentPlaceNoteData, dragLengthMs));
           }
@@ -4206,7 +4222,7 @@ class ChartEditorState extends HaxeUIState
 
   function playMetronomeTick(high:Bool = false):Void
   {
-    ChartEditorAudioHandler.playSound(Paths.sound('pianoStuff/piano-${high ? '001' : '008'}'));
+    ChartEditorAudioHandler.playSound(Paths.sound('chartingSounds/metronome${high ? '1' : '2'}'));
   }
 
   function isNoteSelected(note:Null<SongNoteData>):Bool
diff --git a/source/funkin/ui/debug/charting/ChartEditorToolboxHandler.hx b/source/funkin/ui/debug/charting/ChartEditorToolboxHandler.hx
index 6f89b6b63..25418a74e 100644
--- a/source/funkin/ui/debug/charting/ChartEditorToolboxHandler.hx
+++ b/source/funkin/ui/debug/charting/ChartEditorToolboxHandler.hx
@@ -72,6 +72,8 @@ class ChartEditorToolboxHandler
     {
       toolbox.showDialog(false);
 
+      ChartEditorAudioHandler.playSound(Paths.sound('chartingSounds/openWindow'));
+
       switch (id)
       {
         case ChartEditorState.CHART_EDITOR_TOOLBOX_TOOLS_LAYOUT:
@@ -109,6 +111,8 @@ class ChartEditorToolboxHandler
     {
       toolbox.hideDialog(DialogButton.CANCEL);
 
+      ChartEditorAudioHandler.playSound(Paths.sound('chartingSounds/exitWindow'));
+
       switch (id)
       {
         case ChartEditorState.CHART_EDITOR_TOOLBOX_TOOLS_LAYOUT: