82 lines
1.8 KiB
JavaScript
82 lines
1.8 KiB
JavaScript
let jsKeyRenamer = new Proxy({
|
|
["←"] : "ArrowLeft",
|
|
["→"] : "ArrowRight",
|
|
["↑"] : "ArrowUp",
|
|
["↓"] : "ArrowDown",
|
|
["Espace"] : " ",
|
|
["Échap."] : "Escape",
|
|
["Ret. arrière"]: "Backspace",
|
|
["Entrée"] : "Enter",
|
|
}, {
|
|
get(obj, keyName) {
|
|
return keyName in obj? obj[keyName] : keyName
|
|
}
|
|
})
|
|
let friendyKeyRenamer = new Proxy({
|
|
["ArrowLeft"] : "←",
|
|
["ArrowRight"] : "→",
|
|
["ArrowUp"] : "↑",
|
|
["ArrowDown"] : "↓",
|
|
[" "] : "Espace",
|
|
["Escape"] : "Échap.",
|
|
["Backspace"] : "Ret. arrière",
|
|
["Enter"] : "Entrée",
|
|
}, {
|
|
get(obj, keyName) {
|
|
return keyName in obj? obj[keyName] : keyName
|
|
}
|
|
})
|
|
|
|
class Settings {
|
|
constructor() {
|
|
this.startLevel = 1
|
|
|
|
let keyMaps = {
|
|
key: {},
|
|
action: {}
|
|
}
|
|
|
|
this.key = new Proxy(keyMaps, {
|
|
set(km, action, key) {
|
|
km.action[key] = action
|
|
return km.key[action] = jsKeyRenamer[key]
|
|
},
|
|
has(km, action) {
|
|
return action in km.key
|
|
},
|
|
get(km, action) {
|
|
return friendyKeyRenamer[km.key[action]]
|
|
}
|
|
})
|
|
this.action = new Proxy(keyMaps, {
|
|
set(km, key, action) {
|
|
km.key[action] = key
|
|
return km.action[key] = action
|
|
},
|
|
has(km, key) {
|
|
return key in km.action
|
|
},
|
|
get(km, key) {
|
|
return km.action[key]
|
|
}
|
|
})
|
|
|
|
this.key.moveLeft = "ArrowLeft"
|
|
this.key.moveRight = "ArrowRight"
|
|
this.key.rotateCCW = "w"
|
|
this.key.rotateCW = "ArrowUp"
|
|
this.key.softDrop = "ArrowDown"
|
|
this.key.hardDrop = " "
|
|
this.key.hold = "c"
|
|
this.key.pause = "Escape"
|
|
|
|
this.arrDelay = 50
|
|
this.dasDelay = 300
|
|
|
|
this.musicVolume = 50
|
|
this.sfxVolume = 50
|
|
}
|
|
}
|
|
|
|
|
|
export { Settings } |