japanese-drum-game/public/src/js/titlescreen.js

68 lines
1.6 KiB
JavaScript
Raw Normal View History

2018-09-18 06:37:59 +08:00
class Titlescreen{
constructor(){
loader.changePage("titlescreen")
this.titleScreen = document.getElementById("title-screen")
2018-10-09 14:59:36 +08:00
pageEvents.keyAdd(this, "all", "down", this.keyDown.bind(this))
2018-10-13 02:04:28 +08:00
pageEvents.add(this.titleScreen, ["mousedown", "touchstart"], this.onPressed.bind(this))
2018-09-18 06:37:59 +08:00
assets.sounds["title"].play()
2018-09-27 02:30:57 +08:00
this.gamepad = new Gamepad({
2018-10-09 14:59:36 +08:00
"13": ["a", "b", "x", "y", "start", "ls", "rs"]
2018-10-09 04:32:25 +08:00
}, pressed => {
2018-09-27 02:30:57 +08:00
if(pressed){
this.onPressed()
}
})
2018-11-02 06:05:18 +08:00
if(p2.session){
pageEvents.add(p2, "message", response => {
if(response.type === "songsel"){
this.goNext(true)
}
})
}
2015-07-17 16:22:46 +08:00
}
2018-10-09 14:59:36 +08:00
keyDown(event, code){
if(!code){
code = event.keyCode
}
2018-10-23 22:51:55 +08:00
if(code == 13 || code == 32 || code == 70 || code == 74){
// Enter, Space, F, J
2018-10-09 14:59:36 +08:00
this.onPressed()
}
}
onPressed(event){
2018-10-09 14:59:36 +08:00
if(event){
if(event.type === "touchstart"){
event.preventDefault()
this.touched = true
}else if(event.type === "mousedown" && event.which !== 1){
return
}
}
2018-10-06 01:03:59 +08:00
this.titleScreen.style.cursor = "auto"
2018-09-18 06:37:59 +08:00
this.clean()
assets.sounds["don"].play()
2018-11-02 06:05:18 +08:00
this.goNext()
2018-09-27 02:30:57 +08:00
}
2018-11-02 06:05:18 +08:00
goNext(fromP2){
if(p2.session && !fromP2){
p2.send("songsel")
}else if(fromP2 || this.touched || localStorage.getItem("tutorial") === "true"){
pageEvents.remove(p2, "message")
setTimeout(() => {
new SongSelect(false, false, this.touched)
}, 500)
}else{
2018-11-02 06:05:18 +08:00
setTimeout(() => {
new Tutorial()
}, 500)
2018-09-18 06:37:59 +08:00
}
}
clean(){
2018-09-27 02:30:57 +08:00
this.gamepad.clean()
2018-09-18 06:37:59 +08:00
assets.sounds["title"].stop()
2018-10-09 14:59:36 +08:00
pageEvents.keyRemove(this, "all")
2018-10-13 02:04:28 +08:00
pageEvents.remove(this.titleScreen, ["mousedown", "touchstart"])
2018-09-18 06:37:59 +08:00
delete this.titleScreen
}
}