diff --git a/public/src/js/keyboard.js b/public/src/js/keyboard.js index 2960a97..f038a44 100644 --- a/public/src/js/keyboard.js +++ b/public/src/js/keyboard.js @@ -31,24 +31,11 @@ class Keyboard{ } this.keyboardEvents = 0 - var layout = settings.getItem("gamepadLayout") var gameBtn = {} - if(layout === "b"){ - gameBtn[this.kbd["don_l"]] = ["d", "r", "ls"] - gameBtn[this.kbd["don_r"]] = ["a", "x", "rs"] - gameBtn[this.kbd["ka_l"]] = ["u", "l", "lb", "lt"] - gameBtn[this.kbd["ka_r"]] = ["b", "y", "rb", "rt"] - }else if(layout === "c"){ - gameBtn[this.kbd["don_l"]] = ["d", "l", "ls"] - gameBtn[this.kbd["don_r"]] = ["a", "b", "rs"] - gameBtn[this.kbd["ka_l"]] = ["u", "r", "lb", "lt"] - gameBtn[this.kbd["ka_r"]] = ["x", "y", "rb", "rt"] - }else{ - gameBtn[this.kbd["don_l"]] = ["u", "d", "l", "r", "ls"] - gameBtn[this.kbd["don_r"]] = ["a", "b", "x", "y", "rs"] - gameBtn[this.kbd["ka_l"]] = ["lb", "lt"] - gameBtn[this.kbd["ka_r"]] = ["rb", "rt"] - } + gameBtn[this.kbd["don_l"]] = ["u", "d", "l", "r", "ls"] + gameBtn[this.kbd["don_r"]] = ["a", "b", "x", "y", "rs"] + gameBtn[this.kbd["ka_l"]] = ["lb", "lt"] + gameBtn[this.kbd["ka_r"]] = ["rb", "rt"] this.gamepad = new Gamepad(gameBtn) this.gamepadInterval = setInterval(this.gamepadKeys.bind(this), 1000 / 60 / 2) diff --git a/public/src/js/settings.js b/public/src/js/settings.js index 0e38926..b72c13b 100644 --- a/public/src/js/settings.js +++ b/public/src/js/settings.js @@ -23,12 +23,6 @@ class Settings{ ka_r: ["k"] }, touch: false - }, - gamepadLayout: { - type: "select", - options: ["a", "b", "c"], - default: "a", - gamepad: true } } @@ -82,25 +76,18 @@ class SettingsView{ loader.changePage("settings", false) assets.sounds["bgm_settings"].playLoop(0.1, false, 0, 1.392, 26.992) - this.endButton = document.getElementById("tutorial-end-button") if(touchEnabled){ document.getElementById("tutorial-outer").classList.add("touch-enabled") } - var gamepadEnabled = false - if("getGamepads" in navigator){ - var gamepads = navigator.getGamepads() - for(var i = 0; i < gamepads.length; i++){ - if(gamepads[i]){ - gamepadEnabled = true - break - } - } - } this.mode = "settings" var tutorialTitle = document.getElementById("tutorial-title") tutorialTitle.innerText = strings.gameSettings tutorialTitle.setAttribute("alt", strings.gameSettings) + this.defaultButton = document.getElementById("settings-default") + this.defaultButton.innerText = strings.settings.default + this.defaultButton.setAttribute("alt", strings.settings.default) + this.endButton = document.getElementById("tutorial-end-button") this.endButton.innerText = strings.settings.ok this.endButton.setAttribute("alt", strings.settings.ok) this.resolution = settings.getItem("resolution") @@ -112,8 +99,7 @@ class SettingsView{ var current = settings.items[i] if( !touchEnabled && current.touch === true || - touchEnabled && current.touch === false || - !gamepadEnabled && current.gamepad === true + touchEnabled && current.touch === false ){ continue } @@ -145,17 +131,23 @@ class SettingsView{ valueDiv: valueDiv }) } + this.items.push({ + id: "default", + settingBox: this.defaultButton + }) this.items.push({ id: "back", settingBox: this.endButton }) this.setKbd() + pageEvents.add(this.defaultButton, ["mousedown", "touchstart"], this.defaultSettings.bind(this)) pageEvents.add(this.endButton, ["mousedown", "touchstart"], this.onEnd.bind(this)) pageEvents.keyAdd(this, "all", "down", this.keyEvent.bind(this)) this.gamepad = new Gamepad({ "confirm": ["b", "ls", "rs"], - "previous": ["u", "l", "lb", "lt", "lsu", "lsl"], + "up": ["u", "lsu"], + "previous": ["l", "lb", "lt", "lsl"], "next": ["d", "r", "rb", "rt", "lsd", "lsr"], "back": ["start", "a"] }, this.keyPressed.bind(this)) @@ -166,7 +158,8 @@ class SettingsView{ var kbdSettings = settings.getItem("keyboardSettings") this.kbd = { "confirm": ["enter", " ", kbdSettings.don_l[0], kbdSettings.don_r[0]], - "previous": ["arrowleft", "arrowup", kbdSettings.ka_l[0]], + "up": ["arrowup"], + "previous": ["arrowleft", kbdSettings.ka_l[0]], "next": ["arrowright", "arrowdown", kbdSettings.ka_r[0]], "back": ["backspace", "escape"] } @@ -258,12 +251,16 @@ class SettingsView{ if(name === "confirm"){ if(selected.id === "back"){ this.onEnd() + }else if(selected.id === "default"){ + this.defaultSettings() }else{ this.setValue(selected.id) } - }else if(name === "previous" || name === "next"){ + }else if(name === "up" || name === "previous" || name === "next"){ selected.settingBox.classList.remove("selected") - this.selected = this.mod(this.items.length, this.selected + (name === "next" ? 1 : -1)) + do{ + this.selected = this.mod(this.items.length, this.selected + (name === "next" ? 1 : -1)) + }while(this.items[this.selected].id === "default" && name !== "previous") this.items[this.selected].settingBox.classList.add("selected") assets.sounds["se_ka"].play() }else if(name === "back"){ @@ -303,6 +300,27 @@ class SettingsView{ selected.valueDiv.classList.remove("selected") this.getValue(selected.id, selected.valueDiv) } + defaultSettings(event){ + if(event && event.type === "touchstart"){ + event.preventDefault() + } + var selectedIndex = this.items.findIndex(item => item.id === "default") + if(this.selected !== selectedIndex){ + this.items[this.selected].settingBox.classList.remove("selected") + this.selected = selectedIndex + this.items[this.selected].settingBox.classList.add("selected") + } + for(var i in settings.items){ + settings.setItem(i, null) + } + for(var i in this.items){ + var item = this.items[i] + if(item.valueDiv){ + this.getValue(item.id, item.valueDiv) + } + } + assets.sounds["se_don"].play() + } onEnd(event){ var touched = false if(event){ @@ -329,6 +347,7 @@ class SettingsView{ for(var i in this.items){ pageEvents.remove(this.items[i].settingBox, ["mousedown", "touchstart"]) } + delete this.defaultButton delete this.endButton delete this.items if(this.resolution !== settings.getItem("resolution")){ diff --git a/public/src/js/strings.js b/public/src/js/strings.js index 39a3bde..9d692ba 100644 --- a/public/src/js/strings.js +++ b/public/src/js/strings.js @@ -117,14 +117,9 @@ don_r: "面(右)", ka_r: "ふち(右)" }, - gamepadLayout: { - name: "そうさタイプ設定", - a: "タイプA", - b: "タイプB", - c: "タイプC" - }, on: "オン", off: "オフ", + default: "既定値にリセット", ok: "OK" } this.browserSupport = { @@ -253,14 +248,9 @@ function StringsEn(){ don_r: "Right Surface", ka_r: "Right Rim" }, - gamepadLayout: { - name: "Gamepad Layout", - a: "Type A", - b: "Type B", - c: "Type C" - }, on: "On", off: "Off", + default: "Reset to Defaults", ok: "OK" } this.browserSupport = { @@ -389,14 +379,9 @@ function StringsCn(){ don_r: "Right Surface", ka_r: "Right Rim" }, - gamepadLayout: { - name: "操作类型设定", - a: "类型A", - b: "类型B", - c: "类型C" - }, on: "开", off: "关", + default: "重置为默认值", ok: "确定" } this.browserSupport = { @@ -525,14 +510,9 @@ function StringsTw(){ don_r: "Right Surface", ka_r: "Right Rim" }, - gamepadLayout: { - name: "操作類型設定", - a: "類型A", - b: "類型B", - c: "類型C" - }, on: "開", off: "關", + default: "重置為默認值", ok: "確定" } this.browserSupport = { @@ -661,14 +641,9 @@ function StringsKo(){ don_r: "Right Surface", ka_r: "Right Rim" }, - gamepadLayout: { - name: "조작 타입 설정", - a: "타입 A", - b: "타입 B", - c: "타입 C" - }, on: "온", off: "오프", + default: "기본값으로 재설정", ok: "확인" } this.browserSupport = { diff --git a/public/src/views/settings.html b/public/src/views/settings.html index bfaa4ee..2333ff5 100644 --- a/public/src/views/settings.html +++ b/public/src/views/settings.html @@ -2,6 +2,9 @@