2018-09-22 04:31:35 +08:00
|
|
|
class GameRules{
|
|
|
|
constructor(game){
|
|
|
|
this.difficulty = game.controller.selectedSong.difficulty
|
|
|
|
var frame = 1000 / 60
|
|
|
|
|
|
|
|
switch(this.difficulty){
|
|
|
|
case "easy":
|
|
|
|
case "normal":
|
|
|
|
this.good = 5 / 2 * frame
|
|
|
|
this.ok = 13 / 2 * frame
|
|
|
|
this.bad = 15 / 2 * frame
|
|
|
|
break
|
|
|
|
case "hard":
|
|
|
|
case "oni":
|
2018-10-13 02:04:28 +08:00
|
|
|
case "ura":
|
2020-03-09 20:36:57 +08:00
|
|
|
default:
|
2018-09-22 04:31:35 +08:00
|
|
|
this.good = 3 / 2 * frame
|
|
|
|
this.ok = 9 / 2 * frame
|
|
|
|
this.bad = 13 / 2 * frame
|
|
|
|
break
|
|
|
|
}
|
2020-03-05 23:58:49 +08:00
|
|
|
switch(this.difficulty){
|
|
|
|
case "easy":
|
|
|
|
this.gaugeClear = 30 / 50
|
|
|
|
break
|
|
|
|
case "normal":
|
|
|
|
case "hard":
|
|
|
|
this.gaugeClear = 35 / 50
|
|
|
|
break
|
|
|
|
case "oni":
|
|
|
|
case "ura":
|
|
|
|
this.gaugeClear = 40 / 50
|
|
|
|
break
|
2020-03-09 20:36:57 +08:00
|
|
|
default:
|
|
|
|
this.gaugeClear = 51 / 50
|
|
|
|
break
|
2020-03-05 23:58:49 +08:00
|
|
|
}
|
2018-09-22 04:31:35 +08:00
|
|
|
|
|
|
|
this.daiLeniency = 2 * frame
|
|
|
|
}
|
2020-03-05 23:58:49 +08:00
|
|
|
soulPoints(combo){
|
|
|
|
var good, ok, bad
|
|
|
|
switch(this.difficulty){
|
|
|
|
case "easy":
|
|
|
|
good = Math.floor(10000 / combo * 1.575)
|
|
|
|
ok = Math.floor(good * 0.75)
|
|
|
|
bad = Math.ceil(good * -2)
|
|
|
|
break
|
|
|
|
case "normal":
|
|
|
|
good = Math.floor(10000 / combo / 0.7)
|
|
|
|
ok = Math.floor(good * 0.75)
|
|
|
|
bad = Math.ceil(good / -0.75)
|
|
|
|
break
|
|
|
|
case "hard":
|
|
|
|
good = Math.floor(10000 / combo * 1.5)
|
|
|
|
ok = Math.floor(good * 0.75)
|
|
|
|
bad = Math.ceil(good / -0.8)
|
|
|
|
break
|
|
|
|
case "oni":
|
|
|
|
case "ura":
|
|
|
|
good = Math.floor(10000 / combo / 0.7)
|
|
|
|
ok = Math.floor(good * 0.5)
|
|
|
|
bad = Math.ceil(good * -1.6)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
return {good: good, ok: ok, bad: bad}
|
|
|
|
}
|
2020-03-09 20:36:57 +08:00
|
|
|
gaugePercent(gauge){
|
|
|
|
return Math.floor(gauge / 200) / 50
|
|
|
|
}
|
2020-03-05 23:58:49 +08:00
|
|
|
clearReached(gauge){
|
2020-03-09 20:36:57 +08:00
|
|
|
return this.gaugePercent(gauge) >= this.gaugeClear
|
2020-03-05 23:58:49 +08:00
|
|
|
}
|
2018-09-22 04:31:35 +08:00
|
|
|
}
|