Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
T
Taiko Web
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nanahira
Taiko Web
Commits
c72b5a74
Commit
c72b5a74
authored
Feb 20, 2019
by
LoveEevee
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add animations and fix behaviour
parent
76e56736
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
344 additions
and
128 deletions
+344
-128
public/src/js/canvascache.js
public/src/js/canvascache.js
+1
-0
public/src/js/canvasdraw.js
public/src/js/canvasdraw.js
+6
-3
public/src/js/debug.js
public/src/js/debug.js
+6
-2
public/src/js/game.js
public/src/js/game.js
+114
-50
public/src/js/main.js
public/src/js/main.js
+3
-1
public/src/js/mekadon.js
public/src/js/mekadon.js
+6
-0
public/src/js/parsetja.js
public/src/js/parsetja.js
+44
-40
public/src/js/strings.js
public/src/js/strings.js
+28
-3
public/src/js/view.js
public/src/js/view.js
+132
-25
public/src/views/debug.html
public/src/views/debug.html
+4
-4
No files found.
public/src/js/canvascache.js
View file @
c72b5a74
...
@@ -11,6 +11,7 @@ class CanvasCache{
...
@@ -11,6 +11,7 @@ class CanvasCache{
this
.
map
=
new
Map
()
this
.
map
=
new
Map
()
this
.
canvas
=
document
.
createElement
(
"
canvas
"
)
this
.
canvas
=
document
.
createElement
(
"
canvas
"
)
this
.
ctx
=
this
.
canvas
.
getContext
(
"
2d
"
)
this
.
ctx
=
this
.
canvas
.
getContext
(
"
2d
"
)
document
.
body
.
appendChild
(
this
.
canvas
)
}
}
this
.
scale
=
scale
this
.
scale
=
scale
this
.
x
=
0
this
.
x
=
0
...
...
public/src/js/canvasdraw.js
View file @
c72b5a74
...
@@ -268,6 +268,9 @@
...
@@ -268,6 +268,9 @@
easeOut
(
pos
){
easeOut
(
pos
){
return
Math
.
sin
(
Math
.
PI
/
2
*
pos
)
return
Math
.
sin
(
Math
.
PI
/
2
*
pos
)
}
}
easeOutBack
(
pos
){
return
Math
.
sin
(
Math
.
PI
/
1.74
*
pos
)
*
1.03
}
easeInOut
(
pos
){
easeInOut
(
pos
){
return
(
Math
.
cos
(
Math
.
PI
*
pos
)
-
1
)
/
-
2
return
(
Math
.
cos
(
Math
.
PI
*
pos
)
-
1
)
/
-
2
}
}
...
@@ -572,7 +575,7 @@
...
@@ -572,7 +575,7 @@
}
}
if
(
symbol
.
ura
){
if
(
symbol
.
ura
){
ctx
.
font
=
(
30
*
mul
)
+
"
px Meiryo, sans-serif
"
ctx
.
font
=
(
30
*
mul
)
+
"
px Meiryo, sans-serif
"
ctx
.
textBaseline
=
"
center
"
ctx
.
textBaseline
=
"
middle
"
ctx
.
beginPath
()
ctx
.
beginPath
()
ctx
.
arc
(
currentX
,
currentY
+
(
17
*
mul
),
(
18
*
mul
),
0
,
Math
.
PI
*
2
)
ctx
.
arc
(
currentX
,
currentY
+
(
17
*
mul
),
(
18
*
mul
),
0
,
Math
.
PI
*
2
)
if
(
action
===
"
stroke
"
){
if
(
action
===
"
stroke
"
){
...
@@ -581,7 +584,7 @@
...
@@ -581,7 +584,7 @@
}
else
if
(
action
===
"
fill
"
){
}
else
if
(
action
===
"
fill
"
){
ctx
.
strokeStyle
=
config
.
fill
ctx
.
strokeStyle
=
config
.
fill
ctx
.
lineWidth
=
2.5
*
mul
ctx
.
lineWidth
=
2.5
*
mul
ctx
.
fillText
(
symbol
.
text
,
currentX
,
currentY
)
ctx
.
fillText
(
symbol
.
text
,
currentX
,
currentY
+
(
17
*
mul
)
)
}
}
ctx
.
stroke
()
ctx
.
stroke
()
}
else
{
}
else
{
...
@@ -788,7 +791,7 @@
...
@@ -788,7 +791,7 @@
}
}
if
(
symbol
.
ura
){
if
(
symbol
.
ura
){
ctx
.
font
=
(
30
*
mul
)
+
"
px Meiryo, sans-serif
"
ctx
.
font
=
(
30
*
mul
)
+
"
px Meiryo, sans-serif
"
ctx
.
textBaseline
=
"
center
"
ctx
.
textBaseline
=
"
middle
"
ctx
.
beginPath
()
ctx
.
beginPath
()
ctx
.
arc
(
currentX
,
currentY
+
(
17
*
mul
),
(
18
*
mul
),
0
,
Math
.
PI
*
2
)
ctx
.
arc
(
currentX
,
currentY
+
(
17
*
mul
),
(
18
*
mul
),
0
,
Math
.
PI
*
2
)
if
(
action
===
"
strokeText
"
){
if
(
action
===
"
strokeText
"
){
...
...
public/src/js/debug.js
View file @
c72b5a74
...
@@ -116,7 +116,9 @@ class Debug{
...
@@ -116,7 +116,9 @@ class Debug{
this
.
branchReset
(
null
,
true
)
this
.
branchReset
(
null
,
true
)
}
}
var
measures
=
this
.
controller
.
parsedSongData
.
measures
var
measures
=
this
.
controller
.
parsedSongData
.
measures
.
filter
((
measure
,
i
,
array
)
=>
{
return
i
===
0
||
Math
.
abs
(
measure
.
ms
-
array
[
i
-
1
].
ms
)
>
0.01
})
this
.
measureNumSlider
.
setMinMax
(
0
,
measures
.
length
-
1
)
this
.
measureNumSlider
.
setMinMax
(
0
,
measures
.
length
-
1
)
if
(
this
.
measureNum
&&
measures
.
length
>
this
.
measureNum
){
if
(
this
.
measureNum
&&
measures
.
length
>
this
.
measureNum
){
var
measureMS
=
measures
[
this
.
measureNum
].
ms
var
measureMS
=
measures
[
this
.
measureNum
].
ms
...
@@ -197,7 +199,9 @@ class Debug{
...
@@ -197,7 +199,9 @@ class Debug{
var
game
=
this
.
controller
.
game
var
game
=
this
.
controller
.
game
var
name
=
this
.
branchSelect
.
value
var
name
=
this
.
branchSelect
.
value
game
.
branch
=
name
===
"
auto
"
?
false
:
name
game
.
branch
=
name
===
"
auto
"
?
false
:
name
game
.
branchSet
=
false
game
.
branchSet
=
name
===
"
auto
"
var
selectedOption
=
this
.
branchSelect
.
selectedOptions
[
0
]
this
.
branchSelect
.
style
.
background
=
selectedOption
.
style
.
background
if
(
this
.
restartCheckbox
.
checked
&&
!
noRestart
){
if
(
this
.
restartCheckbox
.
checked
&&
!
noRestart
){
this
.
restartSong
()
this
.
restartSong
()
}
}
...
...
public/src/js/game.js
View file @
c72b5a74
...
@@ -28,8 +28,8 @@ class Game{
...
@@ -28,8 +28,8 @@ class Game{
this
.
musicFadeOut
=
0
this
.
musicFadeOut
=
0
this
.
fadeOutStarted
=
false
this
.
fadeOutStarted
=
false
this
.
currentTimingPoint
=
0
this
.
currentTimingPoint
=
0
this
.
sectionNotes
=
[
]
this
.
branchNames
=
[
"
normal
"
,
"
advanced
"
,
"
master
"
]
this
.
sectionDrumroll
=
0
this
.
resetSection
()
assets
.
songs
.
forEach
(
song
=>
{
assets
.
songs
.
forEach
(
song
=>
{
if
(
song
.
id
==
selectedSong
.
folder
){
if
(
song
.
id
==
selectedSong
.
folder
){
...
@@ -77,7 +77,7 @@ class Game{
...
@@ -77,7 +77,7 @@ class Game{
var
index
=
0
var
index
=
0
for
(
var
i
=
startIndex
;
i
<
circles
.
length
;
i
++
){
for
(
var
i
=
startIndex
;
i
<
circles
.
length
;
i
++
){
var
circle
=
circles
[
i
]
var
circle
=
circles
[
i
]
if
((
!
circle
.
branch
||
circle
.
branch
.
active
)
&&
!
circle
.
isPlayed
){
if
(
circle
&&
(
!
circle
.
branch
||
circle
.
branch
.
active
)
&&
!
circle
.
isPlayed
){
var
type
=
circle
.
type
var
type
=
circle
.
type
var
drumrollNotes
=
type
===
"
balloon
"
||
type
===
"
drumroll
"
||
type
===
"
daiDrumroll
"
var
drumrollNotes
=
type
===
"
balloon
"
||
type
===
"
drumroll
"
||
type
===
"
daiDrumroll
"
var
endTime
=
circle
.
endTime
+
(
drumrollNotes
?
0
:
this
.
rules
.
bad
)
var
endTime
=
circle
.
endTime
+
(
drumrollNotes
?
0
:
this
.
rules
.
bad
)
...
@@ -100,6 +100,9 @@ class Game{
...
@@ -100,6 +100,9 @@ class Game{
if
(
ms
>
endTime
){
if
(
ms
>
endTime
){
if
(
!
this
.
controller
.
autoPlayEnabled
){
if
(
!
this
.
controller
.
autoPlayEnabled
){
if
(
drumrollNotes
){
if
(
drumrollNotes
){
if
(
circle
.
section
&&
circle
.
timesHit
===
0
){
this
.
resetSection
()
}
circle
.
played
(
-
1
,
false
)
circle
.
played
(
-
1
,
false
)
this
.
updateCurrentCircle
()
this
.
updateCurrentCircle
()
if
(
this
.
controller
.
multiplayer
===
1
){
if
(
this
.
controller
.
multiplayer
===
1
){
...
@@ -112,6 +115,9 @@ class Game{
...
@@ -112,6 +115,9 @@ class Game{
p2
.
send
(
"
drumroll
"
,
value
)
p2
.
send
(
"
drumroll
"
,
value
)
}
}
}
else
{
}
else
{
if
(
circle
.
section
){
this
.
resetSection
()
}
var
currentScore
=
0
var
currentScore
=
0
circle
.
played
(
-
1
,
type
===
"
daiDon
"
||
type
===
"
daiKa
"
)
circle
.
played
(
-
1
,
type
===
"
daiDon
"
||
type
===
"
daiKa
"
)
this
.
sectionNotes
.
push
(
0
)
this
.
sectionNotes
.
push
(
0
)
...
@@ -137,47 +143,62 @@ class Game{
...
@@ -137,47 +143,62 @@ class Game{
}
}
var
branches
=
this
.
songData
.
branches
var
branches
=
this
.
songData
.
branches
if
(
branches
){
if
(
branches
){
if
(
this
.
controller
.
multiplayer
===
2
||
this
.
branch
){
var
force
=
this
.
controller
.
multiplayer
===
2
?
p2
:
this
var
parent
=
this
.
controller
.
multiplayer
===
2
?
p2
:
thi
s
var
measures
=
this
.
songData
.
measure
s
var
view
=
this
.
controller
.
view
if
(
this
.
controller
.
multiplayer
===
2
||
force
.
branch
){
if
(
view
.
branch
!==
parent
.
branch
){
if
(
!
force
.
branchSet
){
view
.
branchAnimate
=
{
force
.
branchSet
=
true
ms
:
ms
,
if
(
branches
.
length
){
fromBranch
:
view
.
branch
this
.
setBranch
(
branches
[
0
],
force
.
branch
)
}
}
view
.
branch
=
parent
.
branch
var
view
=
this
.
controller
.
view
}
var
currentMeasure
=
view
.
branch
if
(
!
parent
.
branchSet
){
for
(
var
i
=
measures
.
length
;
i
--
;){
parent
.
branchSet
=
true
var
measure
=
measures
[
i
]
for
(
var
i
=
0
;
i
<
branches
.
length
;
i
++
){
if
(
measure
.
nextBranch
&&
measure
.
ms
<=
ms
){
this
.
setBranch
(
branches
[
i
],
parent
.
branch
)
currentMeasure
=
measure
.
nextBranch
.
active
}
}
if
(
view
.
branch
!==
currentMeasure
){
view
.
branchAnimate
=
{
ms
:
ms
,
fromBranch
:
view
.
branch
}
view
.
branch
=
currentMeasure
}
}
}
}
}
else
{
}
var
measures
=
this
.
songData
.
measures
for
(
var
i
=
0
;
i
<
measures
.
length
;
i
++
){
for
(
var
i
=
0
;
i
<
measures
.
length
;
i
++
){
var
measure
=
measures
[
i
]
var
measure
=
measures
[
i
]
if
(
measure
.
ms
>
ms
){
if
(
measure
.
ms
>
ms
){
break
break
}
else
if
(
measure
.
nextBranch
&&
!
measure
.
gameChecked
){
}
else
if
(
measure
.
nextBranch
&&
!
measure
.
gameChecked
){
measure
.
gameChecked
=
true
measure
.
gameChecked
=
true
var
branch
=
measure
.
nextBranch
var
branch
=
measure
.
nextBranch
if
(
branch
.
type
){
if
(
branch
.
type
){
var
accuracy
=
0
if
(
branch
.
type
===
"
drumroll
"
){
if
(
branch
.
type
===
"
drumroll
"
){
var
accuracy
=
this
.
sectionDrumroll
if
(
force
.
branch
){
var
accuracy
=
Math
.
max
(
0
,
branch
.
requirement
[
force
.
branch
])
}
else
{
}
else
{
var
accuracy
=
this
.
section
Notes
.
reduce
((
a
,
b
)
=>
a
+
b
)
/
this
.
sectionNotes
.
length
*
100
var
accuracy
=
this
.
section
Drumroll
}
}
if
(
accuracy
>=
branch
.
requirement
[
1
]){
}
else
if
(
this
.
sectionNotes
.
length
!==
0
){
this
.
setBranch
(
branch
,
"
master
"
)
if
(
force
.
branch
){
}
else
if
(
accuracy
>=
branch
.
requirement
[
0
]){
var
accuracy
=
Math
.
max
(
0
,
Math
.
min
(
100
,
branch
.
requirement
[
force
.
branch
]))
this
.
setBranch
(
branch
,
"
advanced
"
)
}
else
{
}
else
{
this
.
setBranch
(
branch
,
"
normal
"
)
var
accuracy
=
this
.
sectionNotes
.
reduce
((
a
,
b
)
=>
a
+
b
)
/
this
.
sectionNotes
.
length
*
100
}
}
}
else
if
(
this
.
controller
.
multiplayer
===
1
){
p2
.
send
(
"
branch
"
,
"
normal
"
)
}
}
if
(
accuracy
>=
branch
.
requirement
.
master
){
this
.
setBranch
(
branch
,
"
master
"
)
}
else
if
(
accuracy
>=
branch
.
requirement
.
advanced
){
this
.
setBranch
(
branch
,
"
advanced
"
)
}
else
{
this
.
setBranch
(
branch
,
"
normal
"
)
}
}
else
if
(
this
.
controller
.
multiplayer
===
1
){
p2
.
send
(
"
branch
"
,
"
normal
"
)
}
}
}
}
}
}
...
@@ -273,6 +294,9 @@ class Game{
...
@@ -273,6 +294,9 @@ class Game{
this
.
updateCombo
(
score
)
this
.
updateCombo
(
score
)
this
.
updateGlobalScore
(
score
,
typeDai
&&
keyDai
?
2
:
1
,
circle
.
gogoTime
)
this
.
updateGlobalScore
(
score
,
typeDai
&&
keyDai
?
2
:
1
,
circle
.
gogoTime
)
this
.
updateCurrentCircle
()
this
.
updateCurrentCircle
()
if
(
circle
.
section
){
this
.
resetSection
()
}
this
.
sectionNotes
.
push
(
score
===
450
?
1
:
(
score
===
230
?
0.5
:
0
))
this
.
sectionNotes
.
push
(
score
===
450
?
1
:
(
score
===
230
?
0.5
:
0
))
if
(
this
.
controller
.
multiplayer
===
1
){
if
(
this
.
controller
.
multiplayer
===
1
){
var
value
=
{
var
value
=
{
...
@@ -327,6 +351,9 @@ class Game{
...
@@ -327,6 +351,9 @@ class Game{
var
ms
=
this
.
elapsedTime
var
ms
=
this
.
elapsedTime
var
dai
=
circle
.
type
===
"
daiDrumroll
"
var
dai
=
circle
.
type
===
"
daiDrumroll
"
var
score
=
100
var
score
=
100
if
(
circle
.
section
&&
circle
.
timesHit
===
0
){
this
.
resetSection
()
}
circle
.
hit
(
keysKa
)
circle
.
hit
(
keysKa
)
var
keyTime
=
this
.
controller
.
getKeyTime
()
var
keyTime
=
this
.
controller
.
getKeyTime
()
if
(
circle
.
type
===
"
drumroll
"
){
if
(
circle
.
type
===
"
drumroll
"
){
...
@@ -347,9 +374,7 @@ class Game{
...
@@ -347,9 +374,7 @@ class Game{
circleAnim
.
animate
(
ms
)
circleAnim
.
animate
(
ms
)
this
.
view
.
drumroll
.
push
(
circleAnim
)
this
.
view
.
drumroll
.
push
(
circleAnim
)
this
.
globalScore
.
drumroll
++
this
.
globalScore
.
drumroll
++
if
(
this
.
controller
.
multiplayer
!==
2
){
this
.
sectionDrumroll
++
this
.
sectionDrumroll
++
}
this
.
globalScore
.
points
+=
score
*
(
dai
?
2
:
1
)
this
.
globalScore
.
points
+=
score
*
(
dai
?
2
:
1
)
this
.
view
.
setDarkBg
(
false
)
this
.
view
.
setDarkBg
(
false
)
}
}
...
@@ -473,10 +498,6 @@ class Game{
...
@@ -473,10 +498,6 @@ class Game{
do
{
do
{
var
circle
=
circles
[
++
this
.
currentCircle
]
var
circle
=
circles
[
++
this
.
currentCircle
]
}
while
(
circle
&&
circle
.
branch
&&
!
circle
.
branch
.
active
)
}
while
(
circle
&&
circle
.
branch
&&
!
circle
.
branch
.
active
)
if
(
circle
&&
circle
.
section
){
this
.
sectionNotes
=
[]
this
.
sectionDrumroll
=
0
}
}
}
getCurrentCircle
(){
getCurrentCircle
(){
return
this
.
currentCircle
return
this
.
currentCircle
...
@@ -530,16 +551,59 @@ class Game{
...
@@ -530,16 +551,59 @@ class Game{
}
}
this
.
globalScore
.
points
+=
Math
.
floor
(
score
*
multiplier
/
10
)
*
10
this
.
globalScore
.
points
+=
Math
.
floor
(
score
*
multiplier
/
10
)
*
10
}
}
setBranch
(
branch
,
name
){
setBranch
(
currentBranch
,
activeName
){
var
names
=
[
"
normal
"
,
"
advanced
"
,
"
master
"
]
var
pastActive
=
currentBranch
.
active
for
(
var
i
in
names
){
var
ms
=
currentBranch
.
ms
if
(
names
[
i
]
in
branch
){
for
(
var
i
=
0
;
i
<
this
.
songData
.
branches
.
length
;
i
++
){
branch
[
names
[
i
]].
active
=
names
[
i
]
===
name
var
branch
=
this
.
songData
.
branches
[
i
]
if
(
branch
.
ms
>=
ms
){
var
relevantName
=
activeName
var
req
=
branch
.
requirement
var
noNormal
=
req
.
advanced
<=
0
var
noAdvanced
=
req
.
master
<=
0
||
req
.
advanced
>=
req
.
master
||
branch
.
type
===
"
accuracy
"
&&
req
.
advanced
>
100
var
noMaster
=
branch
.
type
===
"
accuracy
"
&&
req
.
master
>
100
if
(
relevantName
===
"
normal
"
&&
noNormal
){
relevantName
=
noAdvanced
?
"
master
"
:
"
advanced
"
}
if
(
relevantName
===
"
advanced
"
&&
noAdvanced
){
relevantName
=
noMaster
?
"
normal
"
:
"
master
"
}
if
(
relevantName
===
"
master
"
&&
noMaster
){
relevantName
=
noAdvanced
?
"
normal
"
:
"
advanced
"
}
for
(
var
j
in
this
.
branchNames
){
var
name
=
this
.
branchNames
[
j
]
if
(
name
in
branch
){
branch
[
name
].
active
=
name
===
relevantName
}
}
if
(
branch
===
currentBranch
){
activeName
=
relevantName
}
branch
.
active
=
relevantName
}
}
var
circles
=
this
.
songData
.
circles
var
circle
=
circles
[
this
.
currentCircle
]
if
(
!
circle
||
circle
.
branch
===
currentBranch
[
pastActive
]){
var
ms
=
this
.
elapsedTime
var
closestCircle
=
circles
.
findIndex
(
circle
=>
{
return
(
!
circle
.
branch
||
circle
.
branch
.
active
)
&&
circle
.
endTime
>=
ms
})
if
(
closestCircle
!==
-
1
){
this
.
currentCircle
=
closestCircle
}
}
}
}
branch
.
active
=
name
this
.
HPGain
=
100
/
this
.
songData
.
circles
.
filter
(
circle
=>
{
var
type
=
circle
.
type
return
(
type
===
"
don
"
||
type
===
"
ka
"
||
type
===
"
daiDon
"
||
type
===
"
daiKa
"
)
&&
(
!
circle
.
branch
||
circle
.
branch
.
active
)
}).
length
if
(
this
.
controller
.
multiplayer
===
1
){
if
(
this
.
controller
.
multiplayer
===
1
){
p2
.
send
(
"
branch
"
,
n
ame
)
p2
.
send
(
"
branch
"
,
activeN
ame
)
}
}
}
}
resetSection
(){
this
.
sectionNotes
=
[]
this
.
sectionDrumroll
=
0
}
}
}
public/src/js/main.js
View file @
c72b5a74
...
@@ -106,7 +106,9 @@ pageEvents.keyAdd(debugObj, "all", "down", event => {
...
@@ -106,7 +106,9 @@ pageEvents.keyAdd(debugObj, "all", "down", event => {
}
else
if
(
debugObj
.
state
===
"
minimised
"
){
}
else
if
(
debugObj
.
state
===
"
minimised
"
){
debugObj
.
debug
.
restore
()
debugObj
.
debug
.
restore
()
}
else
{
}
else
{
debugObj
.
debug
=
new
Debug
()
try
{
debugObj
.
debug
=
new
Debug
()
}
catch
(
e
){}
}
}
}
}
if
(
event
.
keyCode
===
82
&&
debugObj
.
debug
&&
debugObj
.
controller
){
if
(
event
.
keyCode
===
82
&&
debugObj
.
debug
&&
debugObj
.
controller
){
...
...
public/src/js/mekadon.js
View file @
c72b5a74
...
@@ -8,6 +8,9 @@ class Mekadon{
...
@@ -8,6 +8,9 @@ class Mekadon{
play
(
circle
){
play
(
circle
){
var
type
=
circle
.
type
var
type
=
circle
.
type
if
((
type
===
"
balloon
"
||
type
===
"
drumroll
"
||
type
===
"
daiDrumroll
"
)
&&
this
.
getMS
()
>
circle
.
endTime
){
if
((
type
===
"
balloon
"
||
type
===
"
drumroll
"
||
type
===
"
daiDrumroll
"
)
&&
this
.
getMS
()
>
circle
.
endTime
){
if
(
circle
.
section
&&
circle
.
timesHit
===
0
){
this
.
game
.
resetSection
()
}
circle
.
played
(
-
1
,
false
)
circle
.
played
(
-
1
,
false
)
this
.
game
.
updateCurrentCircle
()
this
.
game
.
updateCurrentCircle
()
}
}
...
@@ -96,6 +99,9 @@ class Mekadon{
...
@@ -96,6 +99,9 @@ class Mekadon{
this
.
game
.
updateGlobalScore
(
score
,
keyDai
?
2
:
1
,
circle
.
gogoTime
)
this
.
game
.
updateGlobalScore
(
score
,
keyDai
?
2
:
1
,
circle
.
gogoTime
)
this
.
game
.
updateCurrentCircle
()
this
.
game
.
updateCurrentCircle
()
circle
.
played
(
score
,
keyDai
)
circle
.
played
(
score
,
keyDai
)
if
(
circle
.
section
){
this
.
game
.
resetSection
()
}
this
.
game
.
sectionNotes
.
push
(
score
===
450
?
1
:
(
score
===
230
?
0.5
:
0
))
this
.
game
.
sectionNotes
.
push
(
score
===
450
?
1
:
(
score
===
230
?
0.5
:
0
))
}
}
this
.
lastHit
=
ms
this
.
lastHit
=
ms
...
...
public/src/js/parsetja.js
View file @
c72b5a74
...
@@ -137,7 +137,7 @@
...
@@ -137,7 +137,7 @@
var
branchObj
=
{}
var
branchObj
=
{}
var
currentBranch
=
false
var
currentBranch
=
false
var
branchSettings
=
{}
var
branchSettings
=
{}
var
branch
Pushed
=
false
var
branch
FirstMeasure
=
false
var
sectionBegin
=
true
var
sectionBegin
=
true
var
currentMeasure
=
[]
var
currentMeasure
=
[]
...
@@ -157,8 +157,10 @@
...
@@ -157,8 +157,10 @@
originalMS
:
ms
,
originalMS
:
ms
,
speed
:
speed
,
speed
:
speed
,
visible
:
barLine
,
visible
:
barLine
,
branch
:
currentBranch
branch
:
currentBranch
,
branchFirst
:
branchFirstMeasure
})
})
branchFirstMeasure
=
false
if
(
currentMeasure
.
length
){
if
(
currentMeasure
.
length
){
for
(
var
i
=
0
;
i
<
currentMeasure
.
length
;
i
++
){
for
(
var
i
=
0
;
i
<
currentMeasure
.
length
;
i
++
){
var
note
=
currentMeasure
[
i
]
var
note
=
currentMeasure
[
i
]
...
@@ -222,14 +224,14 @@
...
@@ -222,14 +224,14 @@
gogo
=
false
gogo
=
false
break
break
case
"
bpmchange
"
:
case
"
bpmchange
"
:
bpm
=
parseFloat
(
value
)
bpm
=
parseFloat
(
value
)
||
bpm
break
break
case
"
scroll
"
:
case
"
scroll
"
:
scroll
=
parseFloat
(
value
)
scroll
=
parseFloat
(
value
)
||
scroll
break
break
case
"
measure
"
:
case
"
measure
"
:
var
[
numerator
,
denominator
]
=
value
.
split
(
"
/
"
)
var
[
numerator
,
denominator
]
=
value
.
split
(
"
/
"
)
measure
=
numerator
/
denominator
*
4
measure
=
numerator
/
denominator
*
4
||
measure
break
break
case
"
delay
"
:
case
"
delay
"
:
ms
+=
(
parseFloat
(
value
)
||
0
)
*
1000
ms
+=
(
parseFloat
(
value
)
||
0
)
*
1000
...
@@ -243,7 +245,7 @@
...
@@ -243,7 +245,7 @@
case
"
branchstart
"
:
case
"
branchstart
"
:
branch
=
true
branch
=
true
currentBranch
=
false
currentBranch
=
false
branch
Pushed
=
fals
e
branch
FirstMeasure
=
tru
e
branchSettings
=
{
branchSettings
=
{
ms
:
ms
,
ms
:
ms
,
gogo
:
gogo
,
gogo
:
gogo
,
...
@@ -255,26 +257,45 @@
...
@@ -255,26 +257,45 @@
if
(
!
this
.
branches
){
if
(
!
this
.
branches
){
this
.
branches
=
[]
this
.
branches
=
[]
}
}
var
req
=
{
advanced
:
parseFloat
(
value
[
1
])
||
0
,
master
:
parseFloat
(
value
[
2
])
||
0
}
if
(
req
.
advanced
>
0
){
var
active
=
req
.
master
>
0
?
"
normal
"
:
"
master
"
}
else
{
var
active
=
req
.
master
>
0
?
"
advanced
"
:
"
master
"
}
branchObj
=
{
branchObj
=
{
ms
:
ms
,
ms
:
ms
,
originalMS
:
ms
,
originalMS
:
ms
,
type
:
value
[
0
].
toLowerCase
()
===
"
r
"
?
"
drumroll
"
:
"
perfect
"
,
active
:
active
,
requirement
:
[
type
:
value
[
0
].
trim
().
toLowerCase
()
===
"
r
"
?
"
drumroll
"
:
"
accuracy
"
,
parseFloat
(
value
[
1
]),
requirement
:
req
parseFloat
(
value
[
2
])
}
]
this
.
branches
.
push
(
branchObj
)
if
(
this
.
measures
.
length
===
1
&&
branchObj
.
type
===
"
drumroll
"
){
for
(
var
i
=
circles
.
length
;
i
--
;){
var
circle
=
circles
[
i
]
if
(
circle
.
endTime
&&
circle
.
type
===
"
drumroll
"
||
circle
.
type
===
"
daiDrumroll
"
||
circle
.
type
===
"
balloon
"
){
this
.
measures
.
push
({
ms
:
circle
.
endTime
,
originalMS
:
circle
.
endTime
,
speed
:
circle
.
bpm
*
circle
.
scroll
/
60
,
visible
:
false
,
branch
:
circle
.
branch
})
break
}
}
}
if
(
this
.
measures
.
length
!==
0
){
this
.
measures
[
this
.
measures
.
length
-
1
].
nextBranch
=
branchObj
}
}
break
break
case
"
branchend
"
:
case
"
branchend
"
:
branch
=
false
branch
=
false
currentBranch
=
false
currentBranch
=
false
if
(
this
.
measures
.
length
!==
0
){
this
.
measures
[
this
.
measures
.
length
-
1
].
nextBranch
=
{
ms
:
ms
,
originalMS
:
ms
,
active
:
"
normal
"
}
}
break
break
case
"
section
"
:
case
"
section
"
:
sectionBegin
=
true
sectionBegin
=
true
...
@@ -283,37 +304,19 @@
...
@@ -283,37 +304,19 @@
}
}
break
break
case
"
n
"
:
case
"
e
"
:
case
"
m
"
:
case
"
n
"
:
case
"
e
"
:
case
"
m
"
:
if
(
!
branchPushed
){
if
(
!
branch
){
branchPushed
=
true
break
this
.
branches
.
push
(
branchObj
)
if
(
this
.
measures
.
length
===
1
&&
branchObj
.
type
===
"
drumroll
"
){
for
(
var
i
=
circles
.
length
;
i
--
;){
var
circle
=
circles
[
i
]
if
(
circle
.
endTime
&&
circle
.
type
===
"
drumroll
"
||
circle
.
type
===
"
daiDrumroll
"
||
circle
.
type
===
"
balloon
"
){
this
.
measures
.
push
({
ms
:
circle
.
endTime
,
originalMS
:
circle
.
endTime
,
speed
:
circle
.
bpm
*
circle
.
scroll
/
60
,
visible
:
false
,
branch
:
circle
.
branch
})
break
}
}
}
if
(
this
.
measures
.
length
!==
0
){
this
.
measures
[
this
.
measures
.
length
-
1
].
nextBranch
=
branchObj
}
}
}
ms
=
branchSettings
.
ms
ms
=
branchSettings
.
ms
gogo
=
branchSettings
.
gogo
gogo
=
branchSettings
.
gogo
bpm
=
branchSettings
.
bpm
bpm
=
branchSettings
.
bpm
scroll
=
branchSettings
.
scroll
scroll
=
branchSettings
.
scroll
sectionBegin
=
branchSettings
.
sectionBegin
sectionBegin
=
branchSettings
.
sectionBegin
branchFirstMeasure
=
true
var
branchName
=
name
===
"
m
"
?
"
master
"
:
(
name
===
"
e
"
?
"
advanced
"
:
"
normal
"
)
var
branchName
=
name
===
"
m
"
?
"
master
"
:
(
name
===
"
e
"
?
"
advanced
"
:
"
normal
"
)
currentBranch
=
{
currentBranch
=
{
name
:
branchName
,
name
:
branchName
,
active
:
branchName
===
"
normal
"
active
:
branchName
===
branchObj
.
active
}
}
branchObj
[
branchName
]
=
currentBranch
branchObj
[
branchName
]
=
currentBranch
break
break
...
@@ -432,6 +435,7 @@
...
@@ -432,6 +435,7 @@
if
(
this
.
branches
){
if
(
this
.
branches
){
circles
.
sort
((
a
,
b
)
=>
a
.
ms
>
b
.
ms
?
1
:
-
1
)
circles
.
sort
((
a
,
b
)
=>
a
.
ms
>
b
.
ms
?
1
:
-
1
)
this
.
measures
.
sort
((
a
,
b
)
=>
a
.
ms
>
b
.
ms
?
1
:
-
1
)
circles
.
forEach
((
circle
,
i
)
=>
circle
.
id
=
i
+
1
)
circles
.
forEach
((
circle
,
i
)
=>
circle
.
id
=
i
+
1
)
}
}
return
circles
return
circles
...
...
public/src/js/strings.js
View file @
c72b5a74
...
@@ -54,6 +54,11 @@
...
@@ -54,6 +54,11 @@
this
.
good
=
"
良
"
this
.
good
=
"
良
"
this
.
ok
=
"
可
"
this
.
ok
=
"
可
"
this
.
bad
=
"
不可
"
this
.
bad
=
"
不可
"
this
.
branch
=
{
"
normal
"
:
"
普通譜面
"
,
"
advanced
"
:
"
玄人譜面
"
,
"
master
"
:
"
達人譜面
"
}
this
.
pauseOptions
=
[
this
.
pauseOptions
=
[
"
演奏をつづける
"
,
"
演奏をつづける
"
,
"
はじめからやりなおす
"
,
"
はじめからやりなおす
"
,
...
@@ -136,7 +141,7 @@ function StringsEn(){
...
@@ -136,7 +141,7 @@ function StringsEn(){
this
.
normal
=
"
Normal
"
this
.
normal
=
"
Normal
"
this
.
hard
=
"
Hard
"
this
.
hard
=
"
Hard
"
this
.
oni
=
"
Extreme
"
this
.
oni
=
"
Extreme
"
this
.
songBranch
=
"
Forked Path
s
"
this
.
songBranch
=
"
Diverge Note
s
"
this
.
sessionStart
=
"
Begin an Online Session!
"
this
.
sessionStart
=
"
Begin an Online Session!
"
this
.
sessionEnd
=
"
End Online Session
"
this
.
sessionEnd
=
"
End Online Session
"
this
.
loading
=
"
Loading...
"
this
.
loading
=
"
Loading...
"
...
@@ -156,6 +161,11 @@ function StringsEn(){
...
@@ -156,6 +161,11 @@ function StringsEn(){
this
.
good
=
"
GOOD
"
this
.
good
=
"
GOOD
"
this
.
ok
=
"
OK
"
this
.
ok
=
"
OK
"
this
.
bad
=
"
BAD
"
this
.
bad
=
"
BAD
"
this
.
branch
=
{
"
normal
"
:
"
Normal
"
,
"
advanced
"
:
"
Professional
"
,
"
master
"
:
"
Master
"
}
this
.
pauseOptions
=
[
this
.
pauseOptions
=
[
"
Continue
"
,
"
Continue
"
,
"
Retry
"
,
"
Retry
"
,
...
@@ -238,7 +248,7 @@ function StringsCn(){
...
@@ -238,7 +248,7 @@ function StringsCn(){
this
.
normal
=
"
普通
"
this
.
normal
=
"
普通
"
this
.
hard
=
"
困难
"
this
.
hard
=
"
困难
"
this
.
oni
=
"
魔王
"
this
.
oni
=
"
魔王
"
this
.
songBranch
=
"
有
分数分支
"
this
.
songBranch
=
"
有
谱面分歧
"
this
.
sessionStart
=
"
开始在线会话!
"
this
.
sessionStart
=
"
开始在线会话!
"
this
.
sessionEnd
=
"
结束在线会话
"
this
.
sessionEnd
=
"
结束在线会话
"
this
.
loading
=
"
加载中...
"
this
.
loading
=
"
加载中...
"
...
@@ -258,6 +268,11 @@ function StringsCn(){
...
@@ -258,6 +268,11 @@ function StringsCn(){
this
.
good
=
"
良
"
this
.
good
=
"
良
"
this
.
ok
=
"
可
"
this
.
ok
=
"
可
"
this
.
bad
=
"
不可
"
this
.
bad
=
"
不可
"
this
.
branch
=
{
"
normal
"
:
"
一般谱面
"
,
"
advanced
"
:
"
进阶谱面
"
,
"
master
"
:
"
达人谱面
"
}
this
.
pauseOptions
=
[
this
.
pauseOptions
=
[
"
继续演奏
"
,
"
继续演奏
"
,
"
从头开始
"
,
"
从头开始
"
,
...
@@ -340,7 +355,7 @@ function StringsTw(){
...
@@ -340,7 +355,7 @@ function StringsTw(){
this
.
normal
=
"
普通
"
this
.
normal
=
"
普通
"
this
.
hard
=
"
困難
"
this
.
hard
=
"
困難
"
this
.
oni
=
"
魔王
"
this
.
oni
=
"
魔王
"
this
.
songBranch
=
"
有
分數分支
"
this
.
songBranch
=
"
有
譜面分歧
"
this
.
sessionStart
=
"
開始多人模式!
"
this
.
sessionStart
=
"
開始多人模式!
"
this
.
sessionEnd
=
"
結束多人模式
"
this
.
sessionEnd
=
"
結束多人模式
"
this
.
loading
=
"
讀取中...
"
this
.
loading
=
"
讀取中...
"
...
@@ -360,6 +375,11 @@ function StringsTw(){
...
@@ -360,6 +375,11 @@ function StringsTw(){
this
.
good
=
"
良
"
this
.
good
=
"
良
"
this
.
ok
=
"
可
"
this
.
ok
=
"
可
"
this
.
bad
=
"
不可
"
this
.
bad
=
"
不可
"
this
.
branch
=
{
"
normal
"
:
"
一般譜面
"
,
"
advanced
"
:
"
進階譜面
"
,
"
master
"
:
"
達人譜面
"
}
this
.
pauseOptions
=
[
this
.
pauseOptions
=
[
"
繼續演奏
"
,
"
繼續演奏
"
,
"
從頭開始
"
,
"
從頭開始
"
,
...
@@ -462,6 +482,11 @@ function StringsKo(){
...
@@ -462,6 +482,11 @@ function StringsKo(){
this
.
good
=
"
얼쑤
"
this
.
good
=
"
얼쑤
"
this
.
ok
=
"
좋다
"
this
.
ok
=
"
좋다
"
this
.
bad
=
"
에구
"
this
.
bad
=
"
에구
"
this
.
branch
=
{
"
normal
"
:
"
보통 악보
"
,
"
advanced
"
:
"
현인 악보
"
,
"
master
"
:
"
달인 악보
"
}
this
.
pauseOptions
=
[
this
.
pauseOptions
=
[
"
연주 계속하기
"
,
"
연주 계속하기
"
,
"
처음부터 다시
"
,
"
처음부터 다시
"
,
...
...
public/src/js/view.js
View file @
c72b5a74
...
@@ -82,9 +82,24 @@
...
@@ -82,9 +82,24 @@
fromBranch
:
"
normal
"
fromBranch
:
"
normal
"
}
}
this
.
branchMap
=
{
this
.
branchMap
=
{
"
normal
"
:
"
rgba(0, 0, 0, 0)
"
,
"
normal
"
:
{
"
advanced
"
:
"
rgba(29, 129, 189, 0.4)
"
,
"
bg
"
:
"
rgba(0, 0, 0, 0)
"
,
"
master
"
:
"
rgba(230, 29, 189, 0.4)
"
"
text
"
:
"
#d3d3d3
"
,
"
stroke
"
:
"
#393939
"
,
"
shadow
"
:
"
#000
"
},
"
advanced
"
:
{
"
bg
"
:
"
rgba(29, 129, 189, 0.4)
"
,
"
text
"
:
"
#94d7e7
"
,
"
stroke
"
:
"
#315973
"
,
"
shadow
"
:
"
#082031
"
},
"
master
"
:
{
"
bg
"
:
"
rgba(230, 29, 189, 0.4)
"
,
"
text
"
:
"
#f796ef
"
,
"
stroke
"
:
"
#7e2e6e
"
,
"
shadow
"
:
"
#3e0836
"
}
}
}
}
}
...
@@ -97,6 +112,7 @@
...
@@ -97,6 +112,7 @@
this
.
titleCache
=
new
CanvasCache
()
this
.
titleCache
=
new
CanvasCache
()
this
.
comboCache
=
new
CanvasCache
()
this
.
comboCache
=
new
CanvasCache
()
this
.
pauseCache
=
new
CanvasCache
()
this
.
pauseCache
=
new
CanvasCache
()
this
.
branchCache
=
new
CanvasCache
()
this
.
multiplayer
=
this
.
controller
.
multiplayer
this
.
multiplayer
=
this
.
controller
.
multiplayer
...
@@ -144,7 +160,8 @@
...
@@ -144,7 +160,8 @@
}
}
this
.
setDonBg
()
this
.
setDonBg
()
this
.
lastMousemove
=
this
.
controller
.
game
.
getAccurateTime
()
this
.
startTime
=
this
.
controller
.
game
.
getAccurateTime
()
this
.
lastMousemove
=
this
.
startTime
pageEvents
.
mouseAdd
(
this
,
this
.
onmousemove
.
bind
(
this
))
pageEvents
.
mouseAdd
(
this
,
this
.
onmousemove
.
bind
(
this
))
this
.
refresh
()
this
.
refresh
()
...
@@ -174,6 +191,7 @@
...
@@ -174,6 +191,7 @@
}
}
var
ratio
=
(
ratioX
<
ratioY
?
ratioX
:
ratioY
)
var
ratio
=
(
ratioX
<
ratioY
?
ratioX
:
ratioY
)
var
resized
=
false
if
(
this
.
winW
!==
winW
||
this
.
winH
!==
winH
){
if
(
this
.
winW
!==
winW
||
this
.
winH
!==
winH
){
this
.
winW
=
winW
this
.
winW
=
winW
this
.
winH
=
winH
this
.
winH
=
winH
...
@@ -193,6 +211,7 @@
...
@@ -193,6 +211,7 @@
}
}
this
.
fillComboCache
()
this
.
fillComboCache
()
this
.
setDonBgHeight
()
this
.
setDonBgHeight
()
resized
=
true
}
else
if
(
this
.
controller
.
game
.
paused
&&
!
document
.
hasFocus
()){
}
else
if
(
this
.
controller
.
game
.
paused
&&
!
document
.
hasFocus
()){
return
return
}
else
if
(
this
.
multiplayer
!==
2
){
}
else
if
(
this
.
multiplayer
!==
2
){
...
@@ -681,7 +700,7 @@
...
@@ -681,7 +700,7 @@
}
}
ctx
.
restore
()
ctx
.
restore
()
// B
ar pressed keys
// B
ranch background
var
keyTime
=
this
.
controller
.
getKeyTime
()
var
keyTime
=
this
.
controller
.
getKeyTime
()
var
sound
=
keyTime
[
"
don
"
]
>
keyTime
[
"
ka
"
]
?
"
don
"
:
"
ka
"
var
sound
=
keyTime
[
"
don
"
]
>
keyTime
[
"
ka
"
]
?
"
don
"
:
"
ka
"
var
padding
=
this
.
slotPos
.
paddingLeft
var
padding
=
this
.
slotPos
.
paddingLeft
...
@@ -689,12 +708,78 @@
...
@@ -689,12 +708,78 @@
var
barY
=
this
.
slotPos
.
y
-
65
*
mul
var
barY
=
this
.
slotPos
.
y
-
65
*
mul
var
barH
=
130
*
mul
var
barH
=
130
*
mul
if
(
this
.
branchAnimate
&&
ms
<=
this
.
branchAnimate
.
ms
+
300
){
var
alpha
=
Math
.
max
(
0
,
(
ms
-
this
.
branchAnimate
.
ms
)
/
300
)
ctx
.
globalAlpha
=
1
-
alpha
ctx
.
fillStyle
=
this
.
branchMap
[
this
.
branchAnimate
.
fromBranch
].
bg
ctx
.
fillRect
(
padding
,
barY
,
winW
-
padding
,
barH
)
ctx
.
globalAlpha
=
alpha
}
if
(
this
.
branch
){
ctx
.
fillStyle
=
this
.
branchMap
[
this
.
branch
].
bg
ctx
.
fillRect
(
padding
,
barY
,
winW
-
padding
,
barH
)
ctx
.
globalAlpha
=
1
}
// Current branch text
if
(
this
.
branch
){
if
(
resized
){
this
.
fillBranchCache
()
}
var
textW
=
Math
.
floor
(
260
*
mul
)
var
textH
=
Math
.
floor
(
barH
)
var
textX
=
winW
-
textW
var
oldOffset
=
0
var
newOffset
=
0
var
elapsed
=
ms
-
this
.
startTime
if
(
elapsed
<
250
){
textX
=
winW
}
else
if
(
elapsed
<
500
){
textX
+=
(
1
-
this
.
draw
.
easeOutBack
((
elapsed
-
250
)
/
250
))
*
textW
}
if
(
this
.
branchAnimate
&&
ms
-
this
.
branchAnimate
.
ms
<
310
&&
ms
>=
this
.
branchAnimate
.
ms
){
var
fromBranch
=
this
.
branchAnimate
.
fromBranch
var
elapsed
=
ms
-
this
.
branchAnimate
.
ms
var
reverse
=
fromBranch
===
"
master
"
||
fromBranch
===
"
advanced
"
&&
this
.
branch
===
"
normal
"
?
-
1
:
1
if
(
elapsed
<
65
){
oldOffset
=
elapsed
/
65
*
12
*
mul
*
reverse
ctx
.
globalAlpha
=
1
var
newAlpha
=
0
}
else
if
(
elapsed
<
215
){
var
animPoint
=
(
elapsed
-
65
)
/
150
oldOffset
=
(
12
-
animPoint
*
48
)
*
mul
*
reverse
newOffset
=
(
36
-
animPoint
*
48
)
*
mul
*
reverse
ctx
.
globalAlpha
=
this
.
draw
.
easeIn
(
1
-
animPoint
)
var
newAlpha
=
this
.
draw
.
easeIn
(
animPoint
)
}
else
{
newOffset
=
(
1
-
(
elapsed
-
215
)
/
95
)
*
-
12
*
mul
*
reverse
ctx
.
globalAlpha
=
0
var
newAlpha
=
1
}
this
.
branchCache
.
get
({
ctx
:
ctx
,
x
:
textX
,
y
:
barY
+
oldOffset
,
w
:
textW
,
h
:
textH
,
id
:
fromBranch
})
ctx
.
globalAlpha
=
newAlpha
}
this
.
branchCache
.
get
({
ctx
:
ctx
,
x
:
textX
,
y
:
barY
+
newOffset
,
w
:
textW
,
h
:
textH
,
id
:
this
.
branch
})
ctx
.
globalAlpha
=
1
}
// Go go time background
if
(
this
.
gogoTime
||
ms
<=
this
.
gogoTimeStarted
+
100
){
if
(
this
.
gogoTime
||
ms
<=
this
.
gogoTimeStarted
+
100
){
var
grd
=
ctx
.
createLinearGradient
(
padding
,
0
,
winW
,
0
)
var
grd
=
ctx
.
createLinearGradient
(
padding
,
0
,
winW
,
0
)
grd
.
addColorStop
(
0
,
"
#512a2c
"
)
grd
.
addColorStop
(
0
,
"
rgba(255, 0, 0, 0.16)
"
)
grd
.
addColorStop
(
0.4
6
,
"
#6f2a2d
"
)
grd
.
addColorStop
(
0.4
5
,
"
rgba(255, 0, 0, 0.28)
"
)
grd
.
addColorStop
(
0.7
6
,
"
#8a4763
"
)
grd
.
addColorStop
(
0.7
7
,
"
rgba(255, 83, 157, 0.4)
"
)
grd
.
addColorStop
(
1
,
"
#2c2a2c
"
)
grd
.
addColorStop
(
1
,
"
rgba(255, 83, 157, 0)
"
)
ctx
.
fillStyle
=
grd
ctx
.
fillStyle
=
grd
if
(
!
this
.
touchEnabled
){
if
(
!
this
.
touchEnabled
){
var
alpha
=
Math
.
min
(
100
,
ms
-
this
.
gogoTimeStarted
)
/
100
var
alpha
=
Math
.
min
(
100
,
ms
-
this
.
gogoTimeStarted
)
/
100
...
@@ -705,18 +790,8 @@
...
@@ -705,18 +790,8 @@
}
}
ctx
.
fillRect
(
padding
,
barY
,
winW
-
padding
,
barH
)
ctx
.
fillRect
(
padding
,
barY
,
winW
-
padding
,
barH
)
}
}
if
(
this
.
branchAnimate
&&
ms
<=
this
.
branchAnimate
.
ms
+
300
){
var
alpha
=
Math
.
max
(
0
,
(
ms
-
this
.
branchAnimate
.
ms
)
/
300
)
// Bar pressed keys
ctx
.
globalAlpha
=
1
-
alpha
ctx
.
fillStyle
=
this
.
branchMap
[
this
.
branchAnimate
.
fromBranch
]
ctx
.
fillRect
(
padding
,
barY
,
winW
-
padding
,
barH
)
ctx
.
globalAlpha
=
alpha
}
if
(
this
.
branch
){
ctx
.
fillStyle
=
this
.
branchMap
[
this
.
branch
]
ctx
.
fillRect
(
padding
,
barY
,
winW
-
padding
,
barH
)
ctx
.
globalAlpha
=
1
}
if
(
keyTime
[
sound
]
>
ms
-
130
){
if
(
keyTime
[
sound
]
>
ms
-
130
){
var
gradients
=
{
var
gradients
=
{
"
don
"
:
"
255, 0, 0
"
,
"
don
"
:
"
255, 0, 0
"
,
...
@@ -814,6 +889,7 @@
...
@@ -814,6 +889,7 @@
ctx
.
lineWidth
=
7
*
mul
ctx
.
lineWidth
=
7
*
mul
ctx
.
textAlign
=
"
center
"
ctx
.
textAlign
=
"
center
"
ctx
.
miterLimit
=
1
ctx
.
miterLimit
=
1
ctx
.
strokeStyle
=
"
#000
"
ctx
.
strokeText
(
strings
.
combo
,
comboX
,
comboTextY
)
ctx
.
strokeText
(
strings
.
combo
,
comboX
,
comboTextY
)
ctx
.
miterLimit
=
10
ctx
.
miterLimit
=
10
ctx
.
fillText
(
strings
.
combo
,
comboX
,
comboTextY
)
ctx
.
fillText
(
strings
.
combo
,
comboX
,
comboTextY
)
...
@@ -1128,7 +1204,7 @@
...
@@ -1128,7 +1204,7 @@
var
finishTime
=
measure
.
ms
+
this
.
posToMs
(
this
.
slotPos
.
x
-
this
.
slotPos
.
paddingLeft
+
3
,
measure
.
speed
)
var
finishTime
=
measure
.
ms
+
this
.
posToMs
(
this
.
slotPos
.
x
-
this
.
slotPos
.
paddingLeft
+
3
,
measure
.
speed
)
if
(
measure
.
visible
&&
(
!
measure
.
branch
||
measure
.
branch
.
active
)
&&
ms
>=
startingTime
&&
ms
<=
finishTime
){
if
(
measure
.
visible
&&
(
!
measure
.
branch
||
measure
.
branch
.
active
)
&&
ms
>=
startingTime
&&
ms
<=
finishTime
){
var
measureX
=
this
.
slotPos
.
x
+
this
.
msToPos
(
measure
.
ms
-
ms
,
measure
.
speed
)
var
measureX
=
this
.
slotPos
.
x
+
this
.
msToPos
(
measure
.
ms
-
ms
,
measure
.
speed
)
this
.
ctx
.
strokeStyle
=
"
#bdbdbd
"
this
.
ctx
.
strokeStyle
=
measure
.
branchFirst
?
"
#ff0
"
:
"
#bdbdbd
"
this
.
ctx
.
lineWidth
=
3
this
.
ctx
.
lineWidth
=
3
this
.
ctx
.
beginPath
()
this
.
ctx
.
beginPath
()
this
.
ctx
.
moveTo
(
measureX
,
measureY
)
this
.
ctx
.
moveTo
(
measureX
,
measureY
)
...
@@ -1137,9 +1213,9 @@
...
@@ -1137,9 +1213,9 @@
}
}
if
(
this
.
multiplayer
!==
2
&&
ms
>=
measure
.
ms
&&
measure
.
nextBranch
&&
!
measure
.
viewChecked
&&
measure
.
gameChecked
){
if
(
this
.
multiplayer
!==
2
&&
ms
>=
measure
.
ms
&&
measure
.
nextBranch
&&
!
measure
.
viewChecked
&&
measure
.
gameChecked
){
measure
.
viewChecked
=
true
measure
.
viewChecked
=
true
this
.
branchAnimate
=
{
if
(
measure
.
nextBranch
.
active
!==
this
.
branch
)
{
ms
:
ms
,
this
.
branchAnimate
.
ms
=
ms
fromBranch
:
this
.
branch
this
.
branchAnimate
.
fromBranch
=
this
.
branch
}
}
this
.
branch
=
measure
.
nextBranch
.
active
this
.
branch
=
measure
.
nextBranch
.
active
}
}
...
@@ -1468,6 +1544,37 @@
...
@@ -1468,6 +1544,37 @@
})
})
this
.
globalAlpha
=
1
this
.
globalAlpha
=
1
}
}
fillBranchCache
(){
var
mul
=
this
.
slotPos
.
size
/
106
var
textW
=
Math
.
floor
(
260
*
mul
)
var
barH
=
Math
.
floor
(
130
*
mul
)
var
branchNames
=
this
.
controller
.
game
.
branchNames
var
textX
=
textW
-
33
*
mul
var
textY
=
63
*
mul
var
fontSize
=
(
strings
.
id
===
"
en
"
?
33
:
(
strings
.
id
===
"
ko
"
?
38
:
43
))
*
mul
this
.
branchCache
.
resize
((
textW
+
1
),
(
barH
+
1
)
*
3
,
this
.
ratio
)
for
(
var
i
in
branchNames
){
this
.
branchCache
.
set
({
w
:
textW
,
h
:
barH
,
id
:
branchNames
[
i
]
},
ctx
=>
{
var
currentMap
=
this
.
branchMap
[
branchNames
[
i
]]
ctx
.
font
=
this
.
draw
.
bold
(
this
.
font
)
+
fontSize
+
"
px
"
+
this
.
font
ctx
.
lineJoin
=
"
round
"
ctx
.
miterLimit
=
1
ctx
.
textAlign
=
"
right
"
ctx
.
textBaseline
=
"
middle
"
ctx
.
lineWidth
=
8
*
mul
ctx
.
strokeStyle
=
currentMap
.
shadow
ctx
.
strokeText
(
strings
.
branch
[
branchNames
[
i
]],
textX
,
textY
+
4
*
mul
)
ctx
.
strokeStyle
=
currentMap
.
stroke
ctx
.
strokeText
(
strings
.
branch
[
branchNames
[
i
]],
textX
,
textY
)
ctx
.
fillStyle
=
currentMap
.
text
ctx
.
fillText
(
strings
.
branch
[
branchNames
[
i
]],
textX
,
textY
)
})
}
}
toggleGogoTime
(
circle
){
toggleGogoTime
(
circle
){
this
.
gogoTime
=
circle
.
gogoTime
this
.
gogoTime
=
circle
.
gogoTime
this
.
gogoTimeStarted
=
circle
.
ms
this
.
gogoTimeStarted
=
circle
.
ms
...
...
public/src/views/debug.html
View file @
c72b5a74
...
@@ -13,10 +13,10 @@
...
@@ -13,10 +13,10 @@
<div>
Branch:
</div>
<div>
Branch:
</div>
<div
class=
"branch-select select"
>
<div
class=
"branch-select select"
>
<span
class=
"reset"
>
x
</span><select>
<span
class=
"reset"
>
x
</span><select>
<option
value=
"auto"
selected
>
Auto
</option>
<option
value=
"auto"
selected
style=
"background:#fff"
>
Auto
</option>
<option
value=
"normal"
>
Normal
</option>
<option
value=
"normal"
style=
"background:#ccc"
>
Normal
</option>
<option
value=
"advanced"
>
Advanced
</option>
<option
value=
"advanced"
style=
"background:#bdf"
>
Professional
</option>
<option
value=
"master"
>
Master
</option>
<option
value=
"master"
style=
"background:#ebf"
>
Master
</option>
</select>
</select>
</div>
</div>
</div>
</div>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment