From f096b13c656de6b2d838cdccab39ef4fdbaec66b Mon Sep 17 00:00:00 2001
From: adrien <adrien@malingrey.fr>
Date: Wed, 25 Sep 2024 01:11:30 +0200
Subject: [PATCH] enhancements

---
 app.js | 34 +++++++++++++++++++---------------
 1 file changed, 19 insertions(+), 15 deletions(-)

diff --git a/app.js b/app.js
index 9d8bcb5..046c89e 100644
--- a/app.js
+++ b/app.js
@@ -316,7 +316,7 @@ function init() {
     }
 
     settingsDialog.onclose = newGame
-    showSettings()
+    pause()
 }
 startDialog.onclose = init
 
@@ -340,22 +340,19 @@ function draw() {
     batterySprite.draw()
 }
 
-function showSettings() {
-    pause()
-    settingsDialog.showModal()
-}
-window.onblur = showSettings
+window.onblur = pause
 
 function pause() {
     Tone.Transport.pause()
     playing = false
+    settingsDialog.showModal()
 }
 
-settingsButton.onclick = showSettings
+settingsButton.onclick = pause
 
 keyMapInput.onclick =  keyMapInput.onkeyup = function(event) {
     let cursorPosition = keyMapInput.selectionEnd
-    if ((event.key == "ArrowRight" && cursorPosition <=  keyMapInput.value.length) || cursorPosition == 0) {
+    if (cursorPosition == 0 || (event.key == "ArrowRight" && cursorPosition <=  keyMapInput.value.length)) {
         keyMapInput.setSelectionRange(cursorPosition, cursorPosition+1)
     } else {
         keyMapInput.setSelectionRange(cursorPosition-1, cursorPosition)
@@ -439,7 +436,7 @@ let midiSong
 let noteSprites = []
 let explosionSprites = []
 let health
-function nextLevel(time=0) {
+function nextLevel(time=Tone.Transport.seconds) {
     Tone.Transport.pause(time)
     level++
     midiSong = Midi.fromUrl(`midi/${level}.mid`).then((midi) => {
@@ -478,17 +475,24 @@ function resume() {
 }
 
 document.onkeydown = function(event) {
-    if (playing && keyMap.includes(event.key)) {
-        event.preventDefault()
-        let note = FIRST_NOTE + keyMap.indexOf(event.key)
+    if (event.altKey || event.ctrlKey) return
+
+    let keyIndex = keyMap.indexOf(event.key.toLowerCase())
+    if (keyIndex >= 0) {
+        if (event.target != keyMapInput) event.preventDefault()
+        let note = FIRST_NOTE + keyIndex
         shoot(note)
     }
 }
 
 document.onkeyup = function(event) {
-    if (playing && keyMap.includes(event.key)) {
-        event.preventDefault()
-        let note = FIRST_NOTE + keyMap.indexOf(event.key)
+    if (event.altKey || event.ctrlKey) return
+    if (event.key =="Escape") pause()
+
+    let keyIndex = keyMap.indexOf(event.key.toLowerCase())
+    if (keyIndex >= 0) {
+        if (event.target != keyMapInput) event.preventDefault()
+        let note = FIRST_NOTE + keyIndex
         stopShoot(note)
     }
 }