Add balloon and drumroll notes
This commit is contained in:
@@ -1,73 +1,98 @@
|
||||
class Mekadon{
|
||||
constructor(controller, game){
|
||||
this.controller = controller
|
||||
this.game = game
|
||||
this.lr = false
|
||||
this.keys = {}
|
||||
}
|
||||
play(circle){
|
||||
if(circle.getStatus() == 450){
|
||||
return this.playNow(circle)
|
||||
}
|
||||
}
|
||||
playAt(circle, ms, score){
|
||||
var currentMs = circle.getMS() - this.controller.getElapsedTime().ms
|
||||
if(ms > currentMs - 10){
|
||||
return this.playNow(circle, score)
|
||||
}
|
||||
}
|
||||
miss(circle){
|
||||
var currentMs = circle.getMS() - this.controller.getElapsedTime().ms
|
||||
if(0 > currentMs - 10){
|
||||
this.controller.displayScore(0, true)
|
||||
this.game.updateCurrentCircle()
|
||||
this.game.updateCombo(0)
|
||||
this.game.updateGlobalScore(0)
|
||||
return true
|
||||
}
|
||||
}
|
||||
playNow(circle, score){
|
||||
var kbd = this.controller.getBindings()
|
||||
if(circle.getType() == "don"){
|
||||
this.setKey(this.lr ? kbd["don_l"] : kbd["don_r"])
|
||||
this.lr = !this.lr
|
||||
}else if(circle.getType() == "daiDon"){
|
||||
this.setKey(kbd["don_l"])
|
||||
this.setKey(kbd["don_r"])
|
||||
this.lr = false
|
||||
}else if(circle.getType() == "ka"){
|
||||
this.setKey(this.lr ? kbd["ka_l"] : kbd["ka_r"])
|
||||
this.lr = !this.lr
|
||||
}else if(circle.getType() == "daiKa"){
|
||||
this.setKey(kbd["ka_l"])
|
||||
this.setKey(kbd["ka_r"])
|
||||
this.lr = false
|
||||
}
|
||||
if(typeof score == "undefined"){
|
||||
score = this.game.checkScore(circle)
|
||||
}else{
|
||||
this.controller.displayScore(score)
|
||||
this.game.updateCombo(score)
|
||||
this.game.updateGlobalScore(score)
|
||||
}
|
||||
circle.updateStatus(score)
|
||||
circle.played(score)
|
||||
this.game.updateCurrentCircle()
|
||||
return true
|
||||
}
|
||||
setKey(keyCode){
|
||||
var self = this
|
||||
if(this.keys[keyCode]){
|
||||
clearTimeout(this.keys[keyCode])
|
||||
self.clearKey(keyCode)
|
||||
}
|
||||
this.controller.setKey(keyCode, true)
|
||||
this.keys[keyCode] = setTimeout(function(){
|
||||
self.clearKey(keyCode)
|
||||
},100)
|
||||
}
|
||||
clearKey(keyCode){
|
||||
this.controller.setKey(keyCode, false)
|
||||
delete this.keys[keyCode]
|
||||
}
|
||||
constructor(controller, game){
|
||||
this.controller = controller
|
||||
this.game = game
|
||||
this.lr = false
|
||||
this.keys = {}
|
||||
this.lastHit = -Infinity
|
||||
}
|
||||
play(circle){
|
||||
var type = circle.getType()
|
||||
if(type == "balloon"){
|
||||
this.playDrumrollAt(circle, 0, 30)
|
||||
}else if(type == "drumroll" || type == "daiDrumroll"){
|
||||
this.playDrumrollAt(circle, 0, 60)
|
||||
}else{
|
||||
this.playAt(circle, 0, 450)
|
||||
}
|
||||
}
|
||||
playAt(circle, ms, score){
|
||||
var currentMs = circle.getMS() - this.getMS()
|
||||
if(ms > currentMs - 10){
|
||||
return this.playNow(circle, score)
|
||||
}
|
||||
}
|
||||
playDrumrollAt(circle, ms, pace){
|
||||
if(pace && this.getMS() >= this.lastHit + pace){
|
||||
this.playAt(circle, ms)
|
||||
}
|
||||
}
|
||||
miss(circle){
|
||||
var currentMs = circle.getMS() - this.getMS()
|
||||
if(0 >= currentMs - 10){
|
||||
this.controller.displayScore(0, true)
|
||||
this.game.updateCurrentCircle()
|
||||
this.game.updateCombo(0)
|
||||
this.game.updateGlobalScore(0)
|
||||
return true
|
||||
}
|
||||
}
|
||||
playNow(circle, score){
|
||||
var kbd = this.controller.getBindings()
|
||||
var type = circle.getType()
|
||||
if(type == "don" || type == "balloon" || type == "drumroll" || type == "daiDrumroll"){
|
||||
this.setKey(this.lr ? kbd["don_l"] : kbd["don_r"])
|
||||
this.lr = !this.lr
|
||||
}else if(type == "daiDon"){
|
||||
this.setKey(kbd["don_l"])
|
||||
this.setKey(kbd["don_r"])
|
||||
this.lr = false
|
||||
}else if(type == "ka"){
|
||||
this.setKey(this.lr ? kbd["ka_l"] : kbd["ka_r"])
|
||||
this.lr = !this.lr
|
||||
}else if(type == "daiKa"){
|
||||
this.setKey(kbd["ka_l"])
|
||||
this.setKey(kbd["ka_r"])
|
||||
this.lr = false
|
||||
}
|
||||
if(type == "balloon"){
|
||||
if(circle.requiredHits == 1){
|
||||
assets.sounds["balloon"].play()
|
||||
}
|
||||
this.game.checkBalloon(circle)
|
||||
}else if(type == "drumroll" || type == "daiDrumroll"){
|
||||
this.game.checkDrumroll(circle)
|
||||
}else{
|
||||
if(typeof score == "undefined"){
|
||||
score = this.game.checkScore(circle)
|
||||
}else{
|
||||
this.controller.displayScore(score)
|
||||
this.game.updateCombo(score)
|
||||
this.game.updateGlobalScore(score)
|
||||
this.game.updateCurrentCircle()
|
||||
}
|
||||
circle.updateStatus(score)
|
||||
circle.played(score)
|
||||
}
|
||||
this.lastHit = this.getMS()
|
||||
return true
|
||||
}
|
||||
getMS(){
|
||||
return this.controller.getElapsedTime().ms
|
||||
}
|
||||
setKey(keyCode){
|
||||
var self = this
|
||||
if(this.keys[keyCode]){
|
||||
clearTimeout(this.keys[keyCode])
|
||||
self.clearKey(keyCode)
|
||||
}
|
||||
this.controller.setKey(keyCode, true)
|
||||
this.keys[keyCode] = setTimeout(function(){
|
||||
self.clearKey(keyCode)
|
||||
}, 100)
|
||||
}
|
||||
clearKey(keyCode){
|
||||
this.controller.setKey(keyCode, false)
|
||||
delete this.keys[keyCode]
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user