From e45b9ced3a5424d3d92afd542b730fcd357c5abb Mon Sep 17 00:00:00 2001 From: Samuel Gfeller Date: Thu, 29 Feb 2024 18:08:58 +0100 Subject: [PATCH] Added mic sensitivity slider [SG-122] --- index.php | 2 +- src/assets/styles/style.css | 58 ++++++++++++++----- .../configuration/mic-sensitivity-option.js | 25 ++++++++ src/components/game-core/ui/note-displayer.js | 4 +- .../roadmap-selector/fret-shape-selector.js | 8 +-- .../note-on-fretboard-generator.js | 4 +- .../note-on-fretboard-note-handler.js | 10 ++-- .../note-on-fretboard-progress-updater.js | 2 +- .../note-on-fretboard-shuffler.js | 8 +-- .../note-on-fretboard/range-selector.js | 6 +- .../detected-note/detected-note-verifier.js | 4 +- .../frequency-bars-controller.js | 14 +++-- .../core-game-coordination-initializer.js | 19 ++++-- .../game-configuration-manager.js | 2 +- .../game-initialization/game-initializer.js | 8 +-- src/features/game-core/game-loader.js | 2 +- .../game-progress/game-progress-updater.js | 2 +- .../game-start/core-game-coordinator.js | 10 ++-- .../game-ui/game-elements-visualizer.js | 2 +- .../game-core/game-ui/level-up-visualizer.js | 2 +- src/features/game-core/tuner/tune-operator.js | 8 ++- .../metronome-practice-coordinator.js | 4 +- .../metronome-practice-initializer.js | 6 +- .../note-in-key-game-coordinator.js | 4 +- .../note-in-key-game-initializer.js | 34 +++++------ .../note-in-key/note-in-key-game-no-guitar.js | 2 +- .../note-in-key/note-in-key-generator.js | 4 +- .../fretboard-note-game-coordinator.js | 10 ++-- .../note-on-fretboard-event-handler.js | 6 +- .../note-on-fretboard-event-listener-adder.js | 6 +- .../note-on-fretboard-game-initializer.js | 34 +++++------ .../note-in-key-note-handler.js | 6 +- 32 files changed, 188 insertions(+), 128 deletions(-) create mode 100644 src/components/configuration/mic-sensitivity-option.js diff --git a/index.php b/index.php index 5078325..3bdc314 100644 --- a/index.php +++ b/index.php @@ -1,6 +1,6 @@ div { /* Treble clef staff is 200px wide */ width: 200px; } } + @media (max-height: 500px) { #detected-note { margin-top: 0; } } + @media (min-width: 641px) and (min-height: 600px) { .note-value-span.note-value-span { font-size: 130px; } + #game-container.no-guitar .note-value-span.note-value-span { font-size: 100px; } @@ -548,7 +573,8 @@ #game-container { gap: 40px; } - .roadmap-image{ + + .roadmap-image { width: 70%; } @@ -563,6 +589,7 @@ /* gap: 0;*/ /*}*/ } + @media (max-height: 660px) { #game-container { gap: 20px; @@ -573,6 +600,7 @@ #game-container { gap: 50px; } + #game-container.no-guitar { gap: 20px; } diff --git a/src/components/configuration/mic-sensitivity-option.js b/src/components/configuration/mic-sensitivity-option.js new file mode 100644 index 0000000..f701712 --- /dev/null +++ b/src/components/configuration/mic-sensitivity-option.js @@ -0,0 +1,25 @@ +import { + GameConfigurationManager +} from "../../features/game-core/game-initialization/game-configuration-manager.js?v=2.1.3"; + +export class MicSensitivityOption { + static addMicSensitivityOption() { + if (!document.getElementById('mic-sensitivity-option-title') + && !document.getElementById('mic-sensitivity-option')) { + document.querySelector('#config-inner-div').insertAdjacentHTML('beforeend', ` + Mic sensitivity +
+ High + + Low +
+ `); + GameConfigurationManager.setupGameModeOptionsStateAndValue([document.querySelector('#mic-sensitivity-option')]); + } + } + + static removeMicSensitivityOption() { + document.getElementById('mic-sensitivity-option-title')?.remove(); + document.getElementById('mic-sensitivity-option')?.remove(); + } +} \ No newline at end of file diff --git a/src/components/game-core/ui/note-displayer.js b/src/components/game-core/ui/note-displayer.js index c2704ef..e473b29 100644 --- a/src/components/game-core/ui/note-displayer.js +++ b/src/components/game-core/ui/note-displayer.js @@ -1,4 +1,4 @@ -import {TrebleClefVisualizer} from "../../../features/treble-clef/treble-clef-visualizer.js?v=2.1.1"; +import {TrebleClefVisualizer} from "../../../features/treble-clef/treble-clef-visualizer.js?v=2.1.3"; export class NoteDisplayer { @@ -95,7 +95,7 @@ export class NoteDisplayer { * @param color */ static updateFrequencyBarsFillStyle(color) { - const event = new CustomEvent('updateFrequencyBarsFillStyle', {detail: color}); + const event = new CustomEvent('update-frequency-bars-fill-style', {detail: color}); document.dispatchEvent(event); } diff --git a/src/components/game-modes/note-in-key/roadmap-selector/fret-shape-selector.js b/src/components/game-modes/note-in-key/roadmap-selector/fret-shape-selector.js index 787e00c..37db7a5 100644 --- a/src/components/game-modes/note-in-key/roadmap-selector/fret-shape-selector.js +++ b/src/components/game-modes/note-in-key/roadmap-selector/fret-shape-selector.js @@ -1,7 +1,7 @@ -import {DualRangeSlider} from "./dual-range-slider.js?v=2.1.1"; -import {NoteInKeyGenerator} from "../../../../features/game-modes/note-in-key/note-in-key-generator.js?v=2.1.1"; -import {availableNotesOnStrings} from "../../../configuration/config-data.js?v=2.1.1"; -import {ModalHandler} from "../../../game-core/ui/modal-handler.js?v=2.1.1"; +import {DualRangeSlider} from "./dual-range-slider.js?v=2.1.3"; +import {NoteInKeyGenerator} from "../../../../features/game-modes/note-in-key/note-in-key-generator.js?v=2.1.3"; +import {availableNotesOnStrings} from "../../../configuration/config-data.js?v=2.1.3"; +import {ModalHandler} from "../../../game-core/ui/modal-handler.js?v=2.1.3"; export class FretShapeSelector { diff --git a/src/components/game-modes/note-on-fretboard/note-on-fretboard-generator.js b/src/components/game-modes/note-on-fretboard/note-on-fretboard-generator.js index 215bead..c3dd1b1 100644 --- a/src/components/game-modes/note-on-fretboard/note-on-fretboard-generator.js +++ b/src/components/game-modes/note-on-fretboard/note-on-fretboard-generator.js @@ -1,5 +1,5 @@ -import {NoteDisplayer} from "../../game-core/ui/note-displayer.js?v=2.1.1"; -import {NoteOnFretboardShuffler} from "./note-on-fretboard-shuffler.js?v=2.1.1"; +import {NoteDisplayer} from "../../game-core/ui/note-displayer.js?v=2.1.3"; +import {NoteOnFretboardShuffler} from "./note-on-fretboard-shuffler.js?v=2.1.3"; export class NoteOnFretboardGenerator { constructor() { diff --git a/src/components/game-modes/note-on-fretboard/note-on-fretboard-note-handler.js b/src/components/game-modes/note-on-fretboard/note-on-fretboard-note-handler.js index 04fdc0c..0fc1b8b 100644 --- a/src/components/game-modes/note-on-fretboard/note-on-fretboard-note-handler.js +++ b/src/components/game-modes/note-on-fretboard/note-on-fretboard-note-handler.js @@ -1,8 +1,8 @@ -import {DetectedNoteVerifier} from "../../../features/detected-note/detected-note-verifier.js?v=2.1.1"; -import {NoteDisplayer} from "../../game-core/ui/note-displayer.js?v=2.1.1"; -import {GameProgressVisualizer} from "../../../features/game-core/game-progress/game-progress-visualizer.js?v=2.1.1"; -import {NoteOnFretboardGenerator} from "./note-on-fretboard-generator.js?v=2.1.1"; -import {NoteOnFretboardProgressUpdater} from "./note-on-fretboard-progress-updater.js?v=2.1.1"; +import {DetectedNoteVerifier} from "../../../features/detected-note/detected-note-verifier.js?v=2.1.3"; +import {NoteDisplayer} from "../../game-core/ui/note-displayer.js?v=2.1.3"; +import {GameProgressVisualizer} from "../../../features/game-core/game-progress/game-progress-visualizer.js?v=2.1.3"; +import {NoteOnFretboardGenerator} from "./note-on-fretboard-generator.js?v=2.1.3"; +import {NoteOnFretboardProgressUpdater} from "./note-on-fretboard-progress-updater.js?v=2.1.3"; /** * Note display coordinator when playing the "game" which diff --git a/src/components/game-modes/note-on-fretboard/note-on-fretboard-progress-updater.js b/src/components/game-modes/note-on-fretboard/note-on-fretboard-progress-updater.js index 855d266..d571aa7 100644 --- a/src/components/game-modes/note-on-fretboard/note-on-fretboard-progress-updater.js +++ b/src/components/game-modes/note-on-fretboard/note-on-fretboard-progress-updater.js @@ -1,4 +1,4 @@ -import {GameProgressVisualizer} from "../../../features/game-core/game-progress/game-progress-visualizer.js?v=2.1.1"; +import {GameProgressVisualizer} from "../../../features/game-core/game-progress/game-progress-visualizer.js?v=2.1.3"; /** * Progress update for games that use the metronome and have challenging diff --git a/src/components/game-modes/note-on-fretboard/note-on-fretboard-shuffler.js b/src/components/game-modes/note-on-fretboard/note-on-fretboard-shuffler.js index ea7cb62..45f9e23 100644 --- a/src/components/game-modes/note-on-fretboard/note-on-fretboard-shuffler.js +++ b/src/components/game-modes/note-on-fretboard/note-on-fretboard-shuffler.js @@ -18,7 +18,6 @@ export class NoteOnFretboardShuffler { shuffleNotesList(notesOnStrings) { // Generate all possible note combinations for each string this.noteCombinationsToBeShuffled = this.getNoteCombinationsFromSelectedRange(notesOnStrings); - return this.shuffleNotes(); } @@ -33,16 +32,13 @@ export class NoteOnFretboardShuffler { // If a fretboard range is set, only add the notes within the range const selectedRange = JSON.parse(localStorage.getItem(`note-on-fretboard-range`)); - if (!selectedRange) { - return notesOnStrings; - } let notesInsideSelectedRange = []; for (let string in notesOnStrings) { for (const noteIndex in notesOnStrings[string]) { // Note index is the fret position - if (parseInt(noteIndex) >= parseInt(selectedRange.lowerLimit) - && parseInt(noteIndex) <= parseInt(selectedRange.upperLimit)) { + if (!selectedRange || (parseInt(noteIndex) >= parseInt(selectedRange.lowerLimit) + && parseInt(noteIndex) <= parseInt(selectedRange.upperLimit))) { // Create a note combination by concatenating the string and note const noteCombination = `${string}|${notesOnStrings[string][noteIndex]}`; notesInsideSelectedRange.push(noteCombination); // Add the note combination to the notesList diff --git a/src/components/game-modes/note-on-fretboard/range-selector.js b/src/components/game-modes/note-on-fretboard/range-selector.js index ec40f63..663ed4e 100644 --- a/src/components/game-modes/note-on-fretboard/range-selector.js +++ b/src/components/game-modes/note-on-fretboard/range-selector.js @@ -1,6 +1,6 @@ -import {DualRangeSlider} from "../note-in-key/roadmap-selector/dual-range-slider.js?v=2.1.1"; -import {ModalHandler} from "../../game-core/ui/modal-handler.js?v=2.1.1"; -import {availableNotesOnStrings} from "../../configuration/config-data.js?v=2.1.1"; +import {DualRangeSlider} from "../note-in-key/roadmap-selector/dual-range-slider.js?v=2.1.3"; +import {ModalHandler} from "../../game-core/ui/modal-handler.js?v=2.1.3"; +import {availableNotesOnStrings} from "../../configuration/config-data.js?v=2.1.3"; export class RangeSelector { diff --git a/src/features/detected-note/detected-note-verifier.js b/src/features/detected-note/detected-note-verifier.js index 0c6bf3a..0963b37 100644 --- a/src/features/detected-note/detected-note-verifier.js +++ b/src/features/detected-note/detected-note-verifier.js @@ -1,5 +1,5 @@ -import {DetectedNoteVisualizer} from "./detected-note-visualizer.js?v=2.1.1"; -import {NoteDisplayer} from "../../components/game-core/ui/note-displayer.js?v=2.1.1"; +import {DetectedNoteVisualizer} from "./detected-note-visualizer.js?v=2.1.3"; +import {NoteDisplayer} from "../../components/game-core/ui/note-displayer.js?v=2.1.3"; export class DetectedNoteVerifier { // Variable is set in note-combination-coordinator each time new note is displayed diff --git a/src/features/game-core/frequency-bars/frequency-bars-controller.js b/src/features/game-core/frequency-bars/frequency-bars-controller.js index 03db028..2015963 100644 --- a/src/features/game-core/frequency-bars/frequency-bars-controller.js +++ b/src/features/game-core/frequency-bars/frequency-bars-controller.js @@ -1,4 +1,4 @@ -import {FrequencyBarsVisualizer} from "./frequency-bars-visualizer.js?v=2.1.1"; +import {FrequencyBarsVisualizer} from "./frequency-bars-visualizer.js?v=2.1.3"; export class FrequencyBarsController { frequencyData = null; @@ -6,12 +6,14 @@ export class FrequencyBarsController { frequencyBarsVisualizer = null; constructor() { - // Listen for the updateFrequencyBarsFillStyle event - document.addEventListener('updateFrequencyBarsFillStyle', (event) => { - this.frequencyBarsVisualizer.canvasContext.fillStyle = event.detail; - }); + this.frequencyBarsFillStyleEventHandlerVar = this.frequencyBarsFillStyleEventHandler.bind(this); } + frequencyBarsFillStyleEventHandler(event) { + this.frequencyBarsVisualizer.canvasContext.fillStyle = event.detail; + } + + updateFrequencyBars(tuneOperator) { // requestAnimationFrame calls the function on the next frame but shouldn't if the game is paused if (!this.frequencyBarsVisualizer) { @@ -33,11 +35,13 @@ export class FrequencyBarsController { `); this.frequencyBarsVisualizer = new FrequencyBarsVisualizer(); + document.addEventListener('update-frequency-bars-fill-style', this.frequencyBarsFillStyleEventHandlerVar); } removeFrequencyBarsAndDetectedNoteFromDom() { document.querySelector('#frequency-bars')?.remove(); document.querySelector('#detected-note-div')?.remove(); this.frequencyBarsVisualizer = null; + document.removeEventListener('update-frequency-bars-fill-style', this.frequencyBarsFillStyleEventHandlerVar); } } \ No newline at end of file diff --git a/src/features/game-core/game-initialization/core-game-coordination-initializer.js b/src/features/game-core/game-initialization/core-game-coordination-initializer.js index 67b2b96..20294c2 100644 --- a/src/features/game-core/game-initialization/core-game-coordination-initializer.js +++ b/src/features/game-core/game-initialization/core-game-coordination-initializer.js @@ -1,10 +1,11 @@ -import {CoreGameCoordinator} from "../game-start/core-game-coordinator.js?v=2.1.1"; +import {CoreGameCoordinator} from "../game-start/core-game-coordinator.js?v=2.1.3"; import { FretboardNoteGameCoordinator -} from "../../game-modes/note-on-fretboard/fretboard-note-game-coordinator.js?v=2.1.1"; -import {NoteInKeyGameCoordinator} from "../../game-modes/note-in-key/note-in-key-game-coordinator.js?v=2.1.1"; -import {GameConfigurationManager} from "./game-configuration-manager.js?v=2.1.1"; -import {MetronomePracticeCoordinator} from "../../game-modes/metronome/metronome-practice-coordinator.js?v=2.1.1"; +} from "../../game-modes/note-on-fretboard/fretboard-note-game-coordinator.js?v=2.1.3"; +import {NoteInKeyGameCoordinator} from "../../game-modes/note-in-key/note-in-key-game-coordinator.js?v=2.1.3"; +import {GameConfigurationManager} from "./game-configuration-manager.js?v=2.1.3"; +import {MetronomePracticeCoordinator} from "../../game-modes/metronome/metronome-practice-coordinator.js?v=2.1.3"; +import {MicSensitivityOption} from "../../../components/configuration/mic-sensitivity-option.js?v=2.1.3"; export class CoreGameCoordinationInitializer { @@ -42,6 +43,14 @@ export class CoreGameCoordinationInitializer { } // All game coordinators MUST implement a play() and stop() method + // Add mic sensitivity option if note detector is enabled + console.log(this.coreGameCoordinator.noteDetectorEnabled); + if (this.coreGameCoordinator.noteDetectorEnabled) { + MicSensitivityOption.addMicSensitivityOption(); + }else{ + MicSensitivityOption.removeMicSensitivityOption(); + } + // Init game mode options after they have been added via instantiation of the correct gameModeCoordinator above GameConfigurationManager.initGameModeOptions(); } diff --git a/src/features/game-core/game-initialization/game-configuration-manager.js b/src/features/game-core/game-initialization/game-configuration-manager.js index cd9337a..1ea8c3c 100644 --- a/src/features/game-core/game-initialization/game-configuration-manager.js +++ b/src/features/game-core/game-initialization/game-configuration-manager.js @@ -1,4 +1,4 @@ -import {GameProgressVisualizer} from "../game-progress/game-progress-visualizer.js?v=2.1.1"; +import {GameProgressVisualizer} from "../game-progress/game-progress-visualizer.js?v=2.1.3"; export class GameConfigurationManager { diff --git a/src/features/game-core/game-initialization/game-initializer.js b/src/features/game-core/game-initialization/game-initializer.js index f906109..67a0d87 100644 --- a/src/features/game-core/game-initialization/game-initializer.js +++ b/src/features/game-core/game-initialization/game-initializer.js @@ -1,7 +1,7 @@ -import {GameConfigurationManager} from "./game-configuration-manager.js?v=2.1.1"; -import {CoreGameCoordinationInitializer} from "./core-game-coordination-initializer.js?v=2.1.1"; -import {VisibilityChangeHandler} from "./visibility-change-handler.js?v=2.1.1"; -import {GameElementsVisualizer} from "../game-ui/game-elements-visualizer.js?v=2.1.1"; +import {GameConfigurationManager} from "./game-configuration-manager.js?v=2.1.3"; +import {CoreGameCoordinationInitializer} from "./core-game-coordination-initializer.js?v=2.1.3"; +import {VisibilityChangeHandler} from "./visibility-change-handler.js?v=2.1.3"; +import {GameElementsVisualizer} from "../game-ui/game-elements-visualizer.js?v=2.1.3"; export class GameInitializer { constructor() { diff --git a/src/features/game-core/game-loader.js b/src/features/game-core/game-loader.js index 18bffb2..43a6c41 100644 --- a/src/features/game-core/game-loader.js +++ b/src/features/game-core/game-loader.js @@ -1,4 +1,4 @@ -import {GameInitializer} from "./game-initialization/game-initializer.js?v=2.1.1"; +import {GameInitializer} from "./game-initialization/game-initializer.js?v=2.1.3"; export class GameLoader { constructor() { diff --git a/src/features/game-core/game-progress/game-progress-updater.js b/src/features/game-core/game-progress/game-progress-updater.js index 65b8355..554b9ef 100644 --- a/src/features/game-core/game-progress/game-progress-updater.js +++ b/src/features/game-core/game-progress/game-progress-updater.js @@ -1,4 +1,4 @@ -import {GameProgressVisualizer} from "./game-progress-visualizer.js?v=2.1.1"; +import {GameProgressVisualizer} from "./game-progress-visualizer.js?v=2.1.3"; /** * Progress update for games that use the metronome and have challenging diff --git a/src/features/game-core/game-start/core-game-coordinator.js b/src/features/game-core/game-start/core-game-coordinator.js index 3379672..0e85f32 100644 --- a/src/features/game-core/game-start/core-game-coordinator.js +++ b/src/features/game-core/game-start/core-game-coordinator.js @@ -1,8 +1,8 @@ -import {MetronomeOperator} from "../metronome/metronome-operator.js?v=2.1.1"; -import {TuneOperator} from "../tuner/tune-operator.js?v=2.1.1"; -import {FrequencyBarsController} from "../frequency-bars/frequency-bars-controller.js?v=2.1.1"; -import {GameElementsVisualizer} from "../game-ui/game-elements-visualizer.js?v=2.1.1"; -import {ScreenWakeLocker} from "../wake-lock/screen-wake-locker.js?v=2.1.1"; +import {MetronomeOperator} from "../metronome/metronome-operator.js?v=2.1.3"; +import {TuneOperator} from "../tuner/tune-operator.js?v=2.1.3"; +import {FrequencyBarsController} from "../frequency-bars/frequency-bars-controller.js?v=2.1.3"; +import {GameElementsVisualizer} from "../game-ui/game-elements-visualizer.js?v=2.1.3"; +import {ScreenWakeLocker} from "../wake-lock/screen-wake-locker.js?v=2.1.3"; export class CoreGameCoordinator { metronomeOperator = new MetronomeOperator(); diff --git a/src/features/game-core/game-ui/game-elements-visualizer.js b/src/features/game-core/game-ui/game-elements-visualizer.js index 9001db4..27cfba4 100644 --- a/src/features/game-core/game-ui/game-elements-visualizer.js +++ b/src/features/game-core/game-ui/game-elements-visualizer.js @@ -1,4 +1,4 @@ -import {GameLevelTracker} from "../game-progress/game-level-tracker.js?v=2.1.1"; +import {GameLevelTracker} from "../game-progress/game-level-tracker.js?v=2.1.3"; export class GameElementsVisualizer { static hideGameElementsAndDisplayInstructions() { diff --git a/src/features/game-core/game-ui/level-up-visualizer.js b/src/features/game-core/game-ui/level-up-visualizer.js index 40d7dd9..5e68fcf 100644 --- a/src/features/game-core/game-ui/level-up-visualizer.js +++ b/src/features/game-core/game-ui/level-up-visualizer.js @@ -1,4 +1,4 @@ -import {ModalHandler} from "../../../components/game-core/ui/modal-handler.js?v=2.1.1"; +import {ModalHandler} from "../../../components/game-core/ui/modal-handler.js?v=2.1.3"; export class LevelUpVisualizer { /** diff --git a/src/features/game-core/tuner/tune-operator.js b/src/features/game-core/tuner/tune-operator.js index 56f160b..3b9725f 100644 --- a/src/features/game-core/tuner/tune-operator.js +++ b/src/features/game-core/tuner/tune-operator.js @@ -22,8 +22,6 @@ export class TuneOperator { "A♯ | B♭", "B", ]; - // Check if user is on mobile as sensitivity must be set to a higher value - this.isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); } /** @@ -96,8 +94,12 @@ export class TuneOperator { const frequency = self.pitchDetector.do(audioData); amplitude /= audioData.length; + let amplitudeSetting = localStorage.getItem('mic-sensitivity-option'); + // Mic sensitivity value divided by 1000 is the min amplitude. If value 50 -> 0.05 + amplitudeSetting = amplitudeSetting ? parseInt(amplitudeSetting) / 1000 : 0.1; + // If amplitude is not high enough, not trying to figure out note as its probably only background noise - if (frequency && amplitude > (this.isMobile ? 0.01 : 0.05)) { + if (frequency && amplitude > amplitudeSetting) { const note = self.getNote(frequency); diff --git a/src/features/game-modes/metronome/metronome-practice-coordinator.js b/src/features/game-modes/metronome/metronome-practice-coordinator.js index 3fc4171..9e75638 100644 --- a/src/features/game-modes/metronome/metronome-practice-coordinator.js +++ b/src/features/game-modes/metronome/metronome-practice-coordinator.js @@ -1,5 +1,5 @@ -import {MetronomePracticeInitializer} from "./metronome-practice-initializer.js?v=2.1.1"; -import {MetronomePracticeTimer} from "./metronome-practice-timer.js?v=2.1.1"; +import {MetronomePracticeInitializer} from "./metronome-practice-initializer.js?v=2.1.3"; +import {MetronomePracticeTimer} from "./metronome-practice-timer.js?v=2.1.3"; export class MetronomePracticeCoordinator { diff --git a/src/features/game-modes/metronome/metronome-practice-initializer.js b/src/features/game-modes/metronome/metronome-practice-initializer.js index 4ae799a..7a4c72b 100644 --- a/src/features/game-modes/metronome/metronome-practice-initializer.js +++ b/src/features/game-modes/metronome/metronome-practice-initializer.js @@ -1,6 +1,6 @@ -import {MetronomePracticeTimer} from "./metronome-practice-timer.js?v=2.1.1"; -import {LevelUpVisualizer} from "../../game-core/game-ui/level-up-visualizer.js?v=2.1.1"; -import {BpmInput} from "../../../components/configuration/bpm-input.js?v=2.1.1"; +import {MetronomePracticeTimer} from "./metronome-practice-timer.js?v=2.1.3"; +import {LevelUpVisualizer} from "../../game-core/game-ui/level-up-visualizer.js?v=2.1.3"; +import {BpmInput} from "../../../components/configuration/bpm-input.js?v=2.1.3"; export class MetronomePracticeInitializer { // Changed in metronome-practice-coordinator diff --git a/src/features/game-modes/note-in-key/note-in-key-game-coordinator.js b/src/features/game-modes/note-in-key/note-in-key-game-coordinator.js index 7aff6ce..9369427 100644 --- a/src/features/game-modes/note-in-key/note-in-key-game-coordinator.js +++ b/src/features/game-modes/note-in-key/note-in-key-game-coordinator.js @@ -1,5 +1,5 @@ -import {NoteInKeyGameNoGuitar} from "./note-in-key-game-no-guitar.js?v=2.1.1"; -import {NoteInKeyGameInitializer} from "./note-in-key-game-initializer.js?v=2.1.1"; +import {NoteInKeyGameNoGuitar} from "./note-in-key-game-no-guitar.js?v=2.1.3"; +import {NoteInKeyGameInitializer} from "./note-in-key-game-initializer.js?v=2.1.3"; export class NoteInKeyGameCoordinator { string; diff --git a/src/features/game-modes/note-in-key/note-in-key-game-initializer.js b/src/features/game-modes/note-in-key/note-in-key-game-initializer.js index 3b9972b..5df20e6 100644 --- a/src/features/game-modes/note-in-key/note-in-key-game-initializer.js +++ b/src/features/game-modes/note-in-key/note-in-key-game-initializer.js @@ -1,14 +1,14 @@ -import {NoteInKeyGameCoordinator} from "./note-in-key-game-coordinator.js?v=2.1.1"; -import {LevelUpVisualizer} from "../../game-core/game-ui/level-up-visualizer.js?v=2.1.1"; -import {GameConfigurationManager} from "../../game-core/game-initialization/game-configuration-manager.js?v=2.1.1"; -import {GameProgressVisualizer} from "../../game-core/game-progress/game-progress-visualizer.js?v=2.1.1"; -import {NoteInKeyGenerator} from "./note-in-key-generator.js?v=2.1.1"; -import {NoteInKeyNoteHandler} from "../../practice-note-combination/note-in-key-note-handler.js?v=2.1.1"; -import {NoteInKeyGameNoGuitar} from "./note-in-key-game-no-guitar.js?v=2.1.1"; -import {GameElementsVisualizer} from "../../game-core/game-ui/game-elements-visualizer.js?v=2.1.1"; +import {NoteInKeyGameCoordinator} from "./note-in-key-game-coordinator.js?v=2.1.3"; +import {LevelUpVisualizer} from "../../game-core/game-ui/level-up-visualizer.js?v=2.1.3"; +import {GameConfigurationManager} from "../../game-core/game-initialization/game-configuration-manager.js?v=2.1.3"; +import {GameProgressVisualizer} from "../../game-core/game-progress/game-progress-visualizer.js?v=2.1.3"; +import {NoteInKeyGenerator} from "./note-in-key-generator.js?v=2.1.3"; +import {NoteInKeyNoteHandler} from "../../practice-note-combination/note-in-key-note-handler.js?v=2.1.3"; +import {NoteInKeyGameNoGuitar} from "./note-in-key-game-no-guitar.js?v=2.1.3"; +import {GameElementsVisualizer} from "../../game-core/game-ui/game-elements-visualizer.js?v=2.1.3"; import { FretShapeSelector -} from "../../../components/game-modes/note-in-key/roadmap-selector/fret-shape-selector.js?v=2.1.1"; +} from "../../../components/game-modes/note-in-key/roadmap-selector/fret-shape-selector.js?v=2.1.3"; export class NoteInKeyGameInitializer { @@ -126,11 +126,11 @@ export class NoteInKeyGameInitializer { document.removeEventListener('reload-key-and-string', this.reloadKeyAndStringEventHandlerVar); // Remove string options - document.querySelector('#note-in-key-game-strings-div').remove(); - document.querySelector('#string-option-title').remove(); - document.querySelector('#scale-roadmaps').remove(); + document.querySelector('#note-in-key-game-strings-div')?.remove(); + document.querySelector('#string-option-title')?.remove(); + document.querySelector('#scale-roadmaps')?.remove(); - document.querySelector('#note-and-string-container').remove(); + document.querySelector('#note-and-string-container')?.remove(); // Event listeners that were tied to html components that are not removed or replaced on game mode change // don't need to be removed as that removes the event listeners from the html components as well @@ -238,19 +238,19 @@ export class NoteInKeyGameInitializer { A diff --git a/src/features/game-modes/note-in-key/note-in-key-game-no-guitar.js b/src/features/game-modes/note-in-key/note-in-key-game-no-guitar.js index beab1a0..3952fb5 100644 --- a/src/features/game-modes/note-in-key/note-in-key-game-no-guitar.js +++ b/src/features/game-modes/note-in-key/note-in-key-game-no-guitar.js @@ -1,4 +1,4 @@ -import {GameProgressVisualizer} from "../../game-core/game-progress/game-progress-visualizer.js?v=2.1.1"; +import {GameProgressVisualizer} from "../../game-core/game-progress/game-progress-visualizer.js?v=2.1.3"; export class NoteInKeyGameNoGuitar { static diatonicNotesOnStrings; diff --git a/src/features/game-modes/note-in-key/note-in-key-generator.js b/src/features/game-modes/note-in-key/note-in-key-generator.js index 03ecc6c..6a46364 100644 --- a/src/features/game-modes/note-in-key/note-in-key-generator.js +++ b/src/features/game-modes/note-in-key/note-in-key-generator.js @@ -1,9 +1,9 @@ -import {ArrayShuffler} from "../../../components/shuffler/array-shuffler.js?v=2.1.1"; +import {ArrayShuffler} from "../../../components/shuffler/array-shuffler.js?v=2.1.3"; import { availableNotesOnStrings, shape1keyNote, shape2keyNote -} from "../../../components/configuration/config-data.js?v=2.1.1"; +} from "../../../components/configuration/config-data.js?v=2.1.3"; export class NoteInKeyGenerator { diatonicNotesOnStrings; diff --git a/src/features/game-modes/note-on-fretboard/fretboard-note-game-coordinator.js b/src/features/game-modes/note-on-fretboard/fretboard-note-game-coordinator.js index 003cf82..9358283 100644 --- a/src/features/game-modes/note-on-fretboard/fretboard-note-game-coordinator.js +++ b/src/features/game-modes/note-on-fretboard/fretboard-note-game-coordinator.js @@ -1,7 +1,7 @@ import { NoteOnFretboardNoteHandler -} from "../../../components/game-modes/note-on-fretboard/note-on-fretboard-note-handler.js?v=2.1.1"; -import {NoteOnFretboardGameInitializer} from "./initialization/note-on-fretboard-game-initializer.js?v=2.1.1"; +} from "../../../components/game-modes/note-on-fretboard/note-on-fretboard-note-handler.js?v=2.1.3"; +import {NoteOnFretboardGameInitializer} from "./initialization/note-on-fretboard-game-initializer.js?v=2.1.3"; /** * Game mode "note-on-fretboard" core logic @@ -30,11 +30,11 @@ export class FretboardNoteGameCoordinator { */ play() { // Add challenging combinations (if checkbox checked) - if (document.querySelector('#challenging-notes-preset input').checked) { - const getTrebleClefChallengingNotes = document.querySelector('#fretboard-note-game-treble-clef input').checked; + // if (document.querySelector('#challenging-notes-preset input').checked) { + // const getTrebleClefChallengingNotes = document.querySelector('#fretboard-note-game-treble-clef input').checked; // this.noteDisplayer.challengingCombinations = // FretboardGameChallengingNotesProvider.getChallengingNotes(getTrebleClefChallengingNotes); - } + // } this.noteOnFretboardNoteHandler.beingGame(); this.noteOnFretboardNoteHandler.displayNotes(true); diff --git a/src/features/game-modes/note-on-fretboard/initialization/note-on-fretboard-event-handler.js b/src/features/game-modes/note-on-fretboard/initialization/note-on-fretboard-event-handler.js index 1ed72ea..6fec9b4 100644 --- a/src/features/game-modes/note-on-fretboard/initialization/note-on-fretboard-event-handler.js +++ b/src/features/game-modes/note-on-fretboard/initialization/note-on-fretboard-event-handler.js @@ -1,6 +1,6 @@ -import {GameLevelTracker} from "../../../game-core/game-progress/game-level-tracker.js?v=2.1.1"; -import {GameElementsVisualizer} from "../../../game-core/game-ui/game-elements-visualizer.js?v=2.1.1"; -import {LevelUpVisualizer} from "../../../game-core/game-ui/level-up-visualizer.js?v=2.1.1"; +import {GameLevelTracker} from "../../../game-core/game-progress/game-level-tracker.js?v=2.1.3"; +import {GameElementsVisualizer} from "../../../game-core/game-ui/game-elements-visualizer.js?v=2.1.3"; +import {LevelUpVisualizer} from "../../../game-core/game-ui/level-up-visualizer.js?v=2.1.3"; export class NoteOnFretboardEventHandler{ diff --git a/src/features/game-modes/note-on-fretboard/initialization/note-on-fretboard-event-listener-adder.js b/src/features/game-modes/note-on-fretboard/initialization/note-on-fretboard-event-listener-adder.js index aee874f..fba16b6 100644 --- a/src/features/game-modes/note-on-fretboard/initialization/note-on-fretboard-event-listener-adder.js +++ b/src/features/game-modes/note-on-fretboard/initialization/note-on-fretboard-event-listener-adder.js @@ -1,6 +1,6 @@ -import {GameProgressVisualizer} from "../../../game-core/game-progress/game-progress-visualizer.js?v=2.1.1"; -import {NoteOnFretboardEventHandler} from "./note-on-fretboard-event-handler.js?v=2.1.1"; -import {RangeSelector} from "../../../../components/game-modes/note-on-fretboard/range-selector.js?v=2.1.1"; +import {GameProgressVisualizer} from "../../../game-core/game-progress/game-progress-visualizer.js?v=2.1.3"; +import {NoteOnFretboardEventHandler} from "./note-on-fretboard-event-handler.js?v=2.1.3"; +import {RangeSelector} from "../../../../components/game-modes/note-on-fretboard/range-selector.js?v=2.1.3"; export class NoteOnFretboardEventListenerAdder { diff --git a/src/features/game-modes/note-on-fretboard/initialization/note-on-fretboard-game-initializer.js b/src/features/game-modes/note-on-fretboard/initialization/note-on-fretboard-game-initializer.js index 49e4409..d6102da 100644 --- a/src/features/game-modes/note-on-fretboard/initialization/note-on-fretboard-game-initializer.js +++ b/src/features/game-modes/note-on-fretboard/initialization/note-on-fretboard-game-initializer.js @@ -1,8 +1,8 @@ -import {BpmInput} from "../../../../components/configuration/bpm-input.js?v=2.1.1"; -import {GameConfigurationManager} from "../../../game-core/game-initialization/game-configuration-manager.js?v=2.1.1"; -import {availableNotesOnStrings} from "../../../../components/configuration/config-data.js?v=2.1.1"; -import {GameLevelTracker} from "../../../game-core/game-progress/game-level-tracker.js?v=2.1.1"; -import {NoteOnFretboardEventListenerAdder} from "./note-on-fretboard-event-listener-adder.js?v=2.1.1"; +import {BpmInput} from "../../../../components/configuration/bpm-input.js?v=2.1.3"; +import {GameConfigurationManager} from "../../../game-core/game-initialization/game-configuration-manager.js?v=2.1.3"; +import {availableNotesOnStrings} from "../../../../components/configuration/config-data.js?v=2.1.3"; +import {GameLevelTracker} from "../../../game-core/game-progress/game-level-tracker.js?v=2.1.3"; +import {NoteOnFretboardEventListenerAdder} from "./note-on-fretboard-event-listener-adder.js?v=2.1.3"; export class NoteOnFretboardGameInitializer { @@ -102,27 +102,23 @@ export class NoteOnFretboardGameInitializer { + name -