Made the game a state, added menu
This commit is contained in:
parent
36b735f6be
commit
7c4338fdf5
@ -180,9 +180,9 @@
|
||||
209
|
||||
],
|
||||
"camera_position": [
|
||||
80,
|
||||
-40
|
||||
-100,
|
||||
40
|
||||
],
|
||||
"sing_duration": 4,
|
||||
"scale": 1
|
||||
}
|
||||
}
|
||||
|
142
characters/dad.json
Normal file
142
characters/dad.json
Normal file
@ -0,0 +1,142 @@
|
||||
{
|
||||
"animations": [
|
||||
{
|
||||
"offsets": [
|
||||
-9,
|
||||
10
|
||||
],
|
||||
"loop": false,
|
||||
"anim": "singLEFT",
|
||||
"fps": 24,
|
||||
"name": "Dad Sing Note LEFT",
|
||||
"indices": []
|
||||
},
|
||||
{
|
||||
"offsets": [
|
||||
0,
|
||||
-30
|
||||
],
|
||||
"loop": false,
|
||||
"anim": "singDOWN",
|
||||
"fps": 24,
|
||||
"name": "Dad Sing Note DOWN",
|
||||
"indices": []
|
||||
},
|
||||
{
|
||||
"offsets": [
|
||||
-6,
|
||||
50
|
||||
],
|
||||
"loop": false,
|
||||
"anim": "singUP",
|
||||
"fps": 24,
|
||||
"name": "Dad Sing Note UP",
|
||||
"indices": []
|
||||
},
|
||||
{
|
||||
"offsets": [
|
||||
0,
|
||||
27
|
||||
],
|
||||
"loop": false,
|
||||
"anim": "singRIGHT",
|
||||
"fps": 24,
|
||||
"name": "Dad Sing Note RIGHT",
|
||||
"indices": []
|
||||
},
|
||||
{
|
||||
"offsets": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"loop": false,
|
||||
"anim": "idle",
|
||||
"fps": 24,
|
||||
"name": "Dad idle dance",
|
||||
"indices": []
|
||||
},
|
||||
{
|
||||
"offsets": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"loop": true,
|
||||
"fps": 24,
|
||||
"anim": "idle-loop",
|
||||
"indices": [
|
||||
10,
|
||||
11,
|
||||
12,
|
||||
12
|
||||
],
|
||||
"name": "Dad idle dance"
|
||||
},
|
||||
{
|
||||
"offsets": [
|
||||
-9,
|
||||
10
|
||||
],
|
||||
"loop": true,
|
||||
"fps": 24,
|
||||
"anim": "singLEFT-loop",
|
||||
"indices": [
|
||||
12,
|
||||
13,
|
||||
14,
|
||||
15
|
||||
],
|
||||
"name": "Dad Sing Note LEFT"
|
||||
},
|
||||
{
|
||||
"offsets": [
|
||||
0,
|
||||
27
|
||||
],
|
||||
"loop": true,
|
||||
"fps": 24,
|
||||
"anim": "singRIGHT-loop",
|
||||
"indices": [
|
||||
15,
|
||||
16,
|
||||
17,
|
||||
18
|
||||
],
|
||||
"name": "Dad Sing Note RIGHT"
|
||||
},
|
||||
{
|
||||
"offsets": [
|
||||
-6,
|
||||
50
|
||||
],
|
||||
"loop": true,
|
||||
"fps": 24,
|
||||
"anim": "singUP-loop",
|
||||
"indices": [
|
||||
56,
|
||||
57,
|
||||
58,
|
||||
59
|
||||
],
|
||||
"name": "Dad Sing Note UP"
|
||||
}
|
||||
],
|
||||
"no_antialiasing": false,
|
||||
"image": "sprites/DADDY_DEAREST",
|
||||
"position": [
|
||||
-200,
|
||||
160
|
||||
],
|
||||
"healthicon": "dad",
|
||||
"flip_x": false,
|
||||
"healthbar_colors": [
|
||||
175,
|
||||
102,
|
||||
206
|
||||
],
|
||||
"camera_position": [
|
||||
-800,
|
||||
0
|
||||
],
|
||||
"sing_duration": 6.1,
|
||||
"scale": 1
|
||||
}
|
209
characters/gf.json
Normal file
209
characters/gf.json
Normal file
@ -0,0 +1,209 @@
|
||||
{
|
||||
"animations": [
|
||||
{
|
||||
"loop": false,
|
||||
"offsets": [
|
||||
3,
|
||||
0
|
||||
],
|
||||
"fps": 24,
|
||||
"anim": "cheer",
|
||||
"indices": [],
|
||||
"name": "GF Cheer"
|
||||
},
|
||||
{
|
||||
"loop": false,
|
||||
"offsets": [
|
||||
0,
|
||||
-19
|
||||
],
|
||||
"fps": 24,
|
||||
"anim": "singLEFT",
|
||||
"indices": [],
|
||||
"name": "GF left note"
|
||||
},
|
||||
{
|
||||
"loop": false,
|
||||
"offsets": [
|
||||
0,
|
||||
-20
|
||||
],
|
||||
"fps": 24,
|
||||
"anim": "singDOWN",
|
||||
"indices": [],
|
||||
"name": "GF Down Note"
|
||||
},
|
||||
{
|
||||
"loop": false,
|
||||
"offsets": [
|
||||
0,
|
||||
4
|
||||
],
|
||||
"fps": 24,
|
||||
"anim": "singUP",
|
||||
"indices": [],
|
||||
"name": "GF Up Note"
|
||||
},
|
||||
{
|
||||
"loop": false,
|
||||
"offsets": [
|
||||
0,
|
||||
-20
|
||||
],
|
||||
"fps": 24,
|
||||
"anim": "singRIGHT",
|
||||
"indices": [],
|
||||
"name": "GF Right Note"
|
||||
},
|
||||
{
|
||||
"loop": false,
|
||||
"offsets": [
|
||||
-2,
|
||||
-21
|
||||
],
|
||||
"fps": 24,
|
||||
"anim": "sad",
|
||||
"indices": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12
|
||||
],
|
||||
"name": "gf sad"
|
||||
},
|
||||
{
|
||||
"loop": false,
|
||||
"offsets": [
|
||||
0,
|
||||
-9
|
||||
],
|
||||
"fps": 24,
|
||||
"anim": "danceLeft",
|
||||
"indices": [
|
||||
30,
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12,
|
||||
13,
|
||||
14
|
||||
],
|
||||
"name": "GF Dancing Beat"
|
||||
},
|
||||
{
|
||||
"loop": false,
|
||||
"offsets": [
|
||||
0,
|
||||
-9
|
||||
],
|
||||
"fps": 24,
|
||||
"anim": "danceRight",
|
||||
"indices": [
|
||||
15,
|
||||
16,
|
||||
17,
|
||||
18,
|
||||
19,
|
||||
20,
|
||||
21,
|
||||
22,
|
||||
23,
|
||||
24,
|
||||
25,
|
||||
26,
|
||||
27,
|
||||
28,
|
||||
29
|
||||
],
|
||||
"name": "GF Dancing Beat"
|
||||
},
|
||||
{
|
||||
"loop": true,
|
||||
"offsets": [
|
||||
45,
|
||||
-8
|
||||
],
|
||||
"fps": 24,
|
||||
"anim": "hairBlow",
|
||||
"indices": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3
|
||||
],
|
||||
"name": "GF Dancing Beat Hair blowing"
|
||||
},
|
||||
{
|
||||
"loop": false,
|
||||
"offsets": [
|
||||
0,
|
||||
-9
|
||||
],
|
||||
"fps": 24,
|
||||
"anim": "hairFall",
|
||||
"indices": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
11
|
||||
],
|
||||
"name": "GF Dancing Beat Hair Landing"
|
||||
},
|
||||
{
|
||||
"loop": true,
|
||||
"offsets": [
|
||||
-2,
|
||||
-17
|
||||
],
|
||||
"fps": 24,
|
||||
"anim": "scared",
|
||||
"indices": [],
|
||||
"name": "GF FEAR"
|
||||
}
|
||||
],
|
||||
"no_antialiasing": false,
|
||||
"image": "sprites/GF_assets",
|
||||
"position": [
|
||||
0,
|
||||
160
|
||||
],
|
||||
"healthicon": "gf",
|
||||
"flip_x": false,
|
||||
"healthbar_colors": [
|
||||
165,
|
||||
0,
|
||||
77
|
||||
],
|
||||
"camera_position": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"sing_duration": 4,
|
||||
"scale": 1
|
||||
}
|
@ -136,9 +136,9 @@
|
||||
225
|
||||
],
|
||||
"camera_position": [
|
||||
-200,
|
||||
-5000
|
||||
-500,
|
||||
-20
|
||||
],
|
||||
"sing_duration": 4,
|
||||
"scale": 1
|
||||
}
|
||||
}
|
||||
|
97
charts/dad-battle/DIFFICULTYRANK.lua
Normal file
97
charts/dad-battle/DIFFICULTYRANK.lua
Normal file
@ -0,0 +1,97 @@
|
||||
-- RANK ONLY UP TILL 20, 0 MINIMUM, CHANGE THIS TO SUGGEST HOW HARD THE SONG IS, BY MARKEDAMAN
|
||||
|
||||
function onCreate()
|
||||
if difficulty == 0 then -- easy
|
||||
rank = 1
|
||||
elseif difficulty == 1 then -- normal
|
||||
rank = 1
|
||||
elseif difficulty == 2 then -- hard
|
||||
rank = 2
|
||||
elseif difficulty == 3 then -- erect
|
||||
rank = 11
|
||||
elseif difficulty == 4 then -- nightmare
|
||||
rank = 12
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
function onCreatePost()
|
||||
if not hideHud then
|
||||
if rank > 10 then
|
||||
makeLuaSprite('star', 'star2', 1070, 590)
|
||||
makeAnimatedLuaSprite('starFlame', 'starFlame', 1030, 440)
|
||||
addAnimationByPrefix('starFlame', 'starFlame', 'fire loop full instance', 24, true)
|
||||
setProperty('starFlame.alpha', 0)
|
||||
scaleObject('starFlame', 1.5, 1.5)
|
||||
setObjectCamera('starFlame', 'hud')
|
||||
addLuaSprite('starFlame', true)
|
||||
elseif rank <= 10 then
|
||||
makeLuaSprite('star', 'star1', 1070, 590)
|
||||
end
|
||||
|
||||
scaleObject('star', 0.9, 0.9)
|
||||
setObjectCamera('star', 'hud')
|
||||
setObjectOrder('star', getObjectOrder('starFlame') + 1)
|
||||
setProperty('star.alpha', 0)
|
||||
addLuaSprite('star')
|
||||
|
||||
makeLuaText('difficulty', ''.. rank ..'', 2230 , 0, 620)
|
||||
setTextSize('difficulty', 37)
|
||||
setTextFont('difficulty', 'combo.ttf')
|
||||
setProperty('difficulty.alpha', 0)
|
||||
addLuaText('difficulty', false)
|
||||
setObjectOrder('difficulty', getObjectOrder('star') + 1)
|
||||
|
||||
if downscroll then
|
||||
setProperty('difficulty.y', 70)
|
||||
setProperty('star.y', 40)
|
||||
setProperty('starFlame.y', -5)
|
||||
setProperty('starFlame.angle', 190)
|
||||
end
|
||||
|
||||
|
||||
|
||||
if rank > 10 then
|
||||
setTextColor('difficulty', 'ffffff')
|
||||
setTextBorder('difficulty', 2, '00AEFF')
|
||||
elseif rank <= 10 then
|
||||
setTextColor('difficulty', '000000')
|
||||
setTextBorder('difficulty', 3, 'FFFFFF')
|
||||
end
|
||||
|
||||
|
||||
runTimer('ready', 0.5) -- star fade in
|
||||
runTimer('wait', 8) -- star fade out
|
||||
runTimer('wait2', 7.5) -- difficulty fade out
|
||||
|
||||
if rank > 10 then
|
||||
runTimer('pausefire', 2) -- difficulty fade in
|
||||
elseif rank <=10 then
|
||||
runTimer('pause', 2)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function onTimerCompleted(tag)
|
||||
if not hideHud then
|
||||
if tag == 'ready' then
|
||||
doTweenAlpha('hi', 'star', 1, 0.5,'linear')
|
||||
end
|
||||
if tag == 'wait' then
|
||||
doTweenAlpha('gone', 'star', 0, 0.5,'linear')
|
||||
doTweenAlpha('fireout', 'starFlame', 0, 0.5,'linear')
|
||||
end
|
||||
if tag == 'wait2' then
|
||||
doTweenAlpha('bye', 'difficulty', 0, 0.5,'linear')
|
||||
end
|
||||
if tag == 'pause' then
|
||||
doTweenAlpha('hi2', 'difficulty', 1, 0.5,'linear')
|
||||
end
|
||||
if tag == 'pausefire' then
|
||||
setProperty('difficulty.alpha', 1)
|
||||
setProperty('starFlame.alpha', 1)
|
||||
playSound('light', 0.7)
|
||||
end
|
||||
end
|
||||
end
|
4
charts/dad-battle/changeFont.lua
Normal file
4
charts/dad-battle/changeFont.lua
Normal file
@ -0,0 +1,4 @@
|
||||
function onCreate()
|
||||
setTextFont('scoreTxt', 'vcr.ttf')
|
||||
setTextFont('timeTxt','timer.ttf')
|
||||
end
|
1
charts/dad-battle/dad-battle-easy.json
Normal file
1
charts/dad-battle/dad-battle-easy.json
Normal file
File diff suppressed because one or more lines are too long
6518
charts/dad-battle/dad-battle-erect.json
Normal file
6518
charts/dad-battle/dad-battle-erect.json
Normal file
File diff suppressed because it is too large
Load Diff
2128
charts/dad-battle/dad-battle-hard.json
Normal file
2128
charts/dad-battle/dad-battle-hard.json
Normal file
File diff suppressed because it is too large
Load Diff
5396
charts/dad-battle/dad-battle-nightmare.json
Normal file
5396
charts/dad-battle/dad-battle-nightmare.json
Normal file
File diff suppressed because it is too large
Load Diff
1
charts/dad-battle/dad-battle-normal.json
Normal file
1
charts/dad-battle/dad-battle-normal.json
Normal file
File diff suppressed because one or more lines are too long
1
charts/dad-battle/dad-battle.json
Normal file
1
charts/dad-battle/dad-battle.json
Normal file
File diff suppressed because one or more lines are too long
301
charts/dad-battle/events.json
Normal file
301
charts/dad-battle/events.json
Normal file
@ -0,0 +1,301 @@
|
||||
{
|
||||
"song": {
|
||||
"events": [
|
||||
[
|
||||
32000,
|
||||
[
|
||||
[
|
||||
"Dadbattle Spotlight",
|
||||
"1",
|
||||
""
|
||||
],
|
||||
[
|
||||
"Camera Flash",
|
||||
"2",
|
||||
""
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
41333.3333333333,
|
||||
[
|
||||
[
|
||||
"Set Cam Zoom",
|
||||
"0.9",
|
||||
""
|
||||
],
|
||||
[
|
||||
"Camera Set Target",
|
||||
"b",
|
||||
""
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
42666.6666666667,
|
||||
[
|
||||
[
|
||||
"Dadbattle Spotlight",
|
||||
"3",
|
||||
""
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
48000,
|
||||
[
|
||||
[
|
||||
"Camera Flash",
|
||||
"0.5",
|
||||
""
|
||||
],
|
||||
[
|
||||
"Camera Follow Pos",
|
||||
"650",
|
||||
"550"
|
||||
],
|
||||
[
|
||||
"Set Cam Zoom",
|
||||
"0.65",
|
||||
""
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
48333.3333333334,
|
||||
[
|
||||
[
|
||||
"Add Camera Zoom",
|
||||
"",
|
||||
""
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
48666.6666666667,
|
||||
[
|
||||
[
|
||||
"Add Camera Zoom",
|
||||
"",
|
||||
""
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
49000,
|
||||
[
|
||||
[
|
||||
"Add Camera Zoom",
|
||||
"",
|
||||
""
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
49666.6666666667,
|
||||
[
|
||||
[
|
||||
"Add Camera Zoom",
|
||||
"",
|
||||
""
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
50000,
|
||||
[
|
||||
[
|
||||
"Add Camera Zoom",
|
||||
"",
|
||||
""
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
50333.3333333334,
|
||||
[
|
||||
[
|
||||
"Add Camera Zoom",
|
||||
"",
|
||||
""
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
51000,
|
||||
[
|
||||
[
|
||||
"Add Camera Zoom",
|
||||
"",
|
||||
""
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
51333.3333333334,
|
||||
[
|
||||
[
|
||||
"Add Camera Zoom",
|
||||
"",
|
||||
""
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
51666.6666666667,
|
||||
[
|
||||
[
|
||||
"Add Camera Zoom",
|
||||
"",
|
||||
""
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
52000,
|
||||
[
|
||||
[
|
||||
"Add Camera Zoom",
|
||||
"0.015",
|
||||
"0"
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
52166.6666666667,
|
||||
[
|
||||
[
|
||||
"Add Camera Zoom",
|
||||
"0.03",
|
||||
""
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
52333.3333333334,
|
||||
[
|
||||
[
|
||||
"Add Camera Zoom",
|
||||
"0.03",
|
||||
""
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
52500,
|
||||
[
|
||||
[
|
||||
"Add Camera Zoom",
|
||||
"0.03",
|
||||
""
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
52666.6666666667,
|
||||
[
|
||||
[
|
||||
"Add Camera Zoom",
|
||||
"0.03",
|
||||
""
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
52833.3333333334,
|
||||
[
|
||||
[
|
||||
"Add Camera Zoom",
|
||||
"0.03",
|
||||
""
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
52916.6666666667,
|
||||
[
|
||||
[
|
||||
"Add Camera Zoom",
|
||||
"0.03",
|
||||
""
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
53000,
|
||||
[
|
||||
[
|
||||
"Add Camera Zoom",
|
||||
"0.03",
|
||||
""
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
53083.3333333334,
|
||||
[
|
||||
[
|
||||
"Add Camera Zoom",
|
||||
"0.03",
|
||||
""
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
53166.6666666667,
|
||||
[
|
||||
[
|
||||
"Add Camera Zoom",
|
||||
"0.03",
|
||||
""
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
53250,
|
||||
[
|
||||
[
|
||||
"Add Camera Zoom",
|
||||
"0.03",
|
||||
""
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
53333.3333333334,
|
||||
[
|
||||
[
|
||||
"Dadbattle Spotlight",
|
||||
"0",
|
||||
""
|
||||
],
|
||||
[
|
||||
"Set Cam Zoom",
|
||||
"0.75",
|
||||
"2"
|
||||
],
|
||||
[
|
||||
"Camera Follow Pos",
|
||||
"",
|
||||
""
|
||||
],
|
||||
[
|
||||
"Camera Flash",
|
||||
"0.5",
|
||||
""
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
74666.6666666667,
|
||||
[
|
||||
[
|
||||
"Set Cam Zoom",
|
||||
"0.8",
|
||||
""
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
113
charts/dad-battle/script 2 copy.lua
Normal file
113
charts/dad-battle/script 2 copy.lua
Normal file
@ -0,0 +1,113 @@
|
||||
-- Script made by Washo789, please, if you use it or modify it, I would like you to give me credits.
|
||||
|
||||
local xx = 520; -- Code to change the position of the camera to the left or right for your opponent, Less = Left (They can be negative numbers), More = Right
|
||||
local yy = 350; -- Code to change the position of the camera up or down for the enemy Less = Down (They can be negative numbers), More = Up
|
||||
local xx2 = 820; -- Same code as above, but for boyfriend left, right
|
||||
local yy2 = 550; -- Same code as above, but for boyfriend up, down
|
||||
local xx3 = 520; -- Same code as above, but for girlfriend left, right
|
||||
local yy3 = 450; -- Same code as above, but for girlfriend, up, down
|
||||
local ofs = 35; -- Code to adjust the intensity with which the camera moves, the more numbers, the more intense, and the fewer numbers, less intense
|
||||
local followchars = true; -- This code is necessary for the script to work, don't even think about deleting it!
|
||||
local del = 0;
|
||||
local del2 = 0;
|
||||
|
||||
function onUpdate() -- The Main Code
|
||||
if del > 0 then
|
||||
del = del - 1
|
||||
end
|
||||
if del2 > 0 then
|
||||
del2 = del2 - 1
|
||||
end
|
||||
if followchars == true then
|
||||
if mustHitSection == false then -- Code for the camera to follow the poses of your opponent
|
||||
if getProperty('dad.animation.curAnim.name') == 'singLEFT' then
|
||||
triggerEvent('Camera Follow Pos',xx-ofs,yy)
|
||||
end
|
||||
if getProperty('dad.animation.curAnim.name') == 'singRIGHT' then
|
||||
triggerEvent('Camera Follow Pos',xx+ofs,yy)
|
||||
end
|
||||
if getProperty('dad.animation.curAnim.name') == 'singUP' then
|
||||
triggerEvent('Camera Follow Pos',xx,yy-ofs)
|
||||
end
|
||||
if getProperty('dad.animation.curAnim.name') == 'singDOWN' then
|
||||
triggerEvent('Camera Follow Pos',xx,yy+ofs)
|
||||
end
|
||||
if getProperty('dad.animation.curAnim.name') == 'singLEFT-alt' then
|
||||
triggerEvent('Camera Follow Pos',xx-ofs,yy)
|
||||
end
|
||||
if getProperty('dad.animation.curAnim.name') == 'singRIGHT-alt' then
|
||||
triggerEvent('Camera Follow Pos',xx+ofs,yy)
|
||||
end
|
||||
if getProperty('dad.animation.curAnim.name') == 'singUP-alt' then
|
||||
triggerEvent('Camera Follow Pos',xx,yy-ofs)
|
||||
end
|
||||
if getProperty('dad.animation.curAnim.name') == 'singDOWN-alt' then
|
||||
triggerEvent('Camera Follow Pos',xx,yy+ofs)
|
||||
end
|
||||
if getProperty('dad.animation.curAnim.name') == 'idle-alt' then
|
||||
triggerEvent('Camera Follow Pos',xx,yy)
|
||||
end
|
||||
if getProperty('dad.animation.curAnim.name') == 'idle' then
|
||||
triggerEvent('Camera Follow Pos',xx,yy)
|
||||
end
|
||||
if gfSection == true then -- The camera follows GF when she sings, only when the "GF Section" option in the chart editor is activated.
|
||||
if getProperty('gf.animation.curAnim.name') == 'singLEFT' then -- Credits to Serebeat and company for their Slaybells mod,
|
||||
triggerEvent('Camera Follow Pos',xx3-ofs,yy3) -- That's where I got the gf code from.
|
||||
end
|
||||
if getProperty('gf.animation.curAnim.name') == 'singRIGHT' then
|
||||
triggerEvent('Camera Follow Pos',xx3+ofs,yy3)
|
||||
end
|
||||
if getProperty('gf.animation.curAnim.name') == 'singUP' then
|
||||
triggerEvent('Camera Follow Pos',xx3,yy3-ofs)
|
||||
end
|
||||
if getProperty('gf.animation.curAnim.name') == 'singDOWN' then
|
||||
triggerEvent('Camera Follow Pos',xx3,yy3+ofs)
|
||||
end
|
||||
if getProperty('gf.animation.curAnim.name') == 'idle-alt' then
|
||||
triggerEvent('Camera Follow Pos',xx3,yy3)
|
||||
end
|
||||
if getProperty('gf.animation.curAnim.name') == 'singRIGHT-alt' then
|
||||
triggerEvent('Camera Follow Pos',xx3+ofs,yy3)
|
||||
end
|
||||
if getProperty('gf.animation.curAnim.name') == 'singUP-alt' then
|
||||
triggerEvent('Camera Follow Pos',xx3,yy3-ofs)
|
||||
end
|
||||
if getProperty('gf.animation.curAnim.name') == 'singDOWN-alt' then
|
||||
triggerEvent('Camera Follow Pos',xx3,yy3+ofs)
|
||||
end
|
||||
if getProperty('gf.animation.curAnim.name') == 'idle-alt' then
|
||||
triggerEvent('Camera Follow Pos',xx3,yy3)
|
||||
end
|
||||
end
|
||||
else
|
||||
-- Code for the camera to follow the poses of boyfriend
|
||||
if getProperty('boyfriend.animation.curAnim.name') == 'singLEFT' then
|
||||
triggerEvent('Camera Follow Pos',xx2-ofs,yy2)
|
||||
end
|
||||
if getProperty('boyfriend.animation.curAnim.name') == 'singRIGHT' then
|
||||
triggerEvent('Camera Follow Pos',xx2+ofs,yy2)
|
||||
end
|
||||
if getProperty('boyfriend.animation.curAnim.name') == 'singUP' then
|
||||
triggerEvent('Camera Follow Pos',xx2,yy2-ofs)
|
||||
end
|
||||
if getProperty('boyfriend.animation.curAnim.name') == 'singDOWN' then
|
||||
triggerEvent('Camera Follow Pos',xx2,yy2+ofs)
|
||||
end
|
||||
if getProperty('boyfriend.animation.curAnim.name') == 'singRIGHT-alt' then
|
||||
triggerEvent('Camera Follow Pos',xx2+ofs,yy2)
|
||||
end
|
||||
if getProperty('boyfriend.animation.curAnim.name') == 'singUP-alt' then
|
||||
triggerEvent('Camera Follow Pos',xx2,yy2-ofs)
|
||||
end
|
||||
if getProperty('boyfriend.animation.curAnim.name') == 'singDOWN-alt' then
|
||||
triggerEvent('Camera Follow Pos',xx2,yy2+ofs)
|
||||
end
|
||||
if getProperty('boyfriend.animation.curAnim.name') == 'idle-alt' then
|
||||
triggerEvent('Camera Follow Pos',xx2,yy2)
|
||||
end
|
||||
end
|
||||
else
|
||||
triggerEvent('Camera Follow Pos','','') -- Self explanatory
|
||||
end
|
||||
|
||||
end
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"song": {
|
||||
"player1": "bf2",
|
||||
"player2": "mom-car",
|
||||
"player1": "bf",
|
||||
"player2": "dad",
|
||||
"events": [],
|
||||
"notes": [
|
||||
{
|
||||
@ -4169,12 +4169,12 @@
|
||||
"mustHitSection": true
|
||||
}
|
||||
],
|
||||
"gfVersion": "gf-car",
|
||||
"gfVersion": "gf",
|
||||
"song": "High Erect",
|
||||
"needsVoices": true,
|
||||
"stage": "limo",
|
||||
"stage": "stage",
|
||||
"validScore": true,
|
||||
"bpm": 125,
|
||||
"speed": 2.4
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
{
|
||||
"song": {
|
||||
"player1": "bf-holding-gf",
|
||||
"player1": "bf",
|
||||
"events": [],
|
||||
"gfVersion": "pico-speaker",
|
||||
"gfVersion": "gf",
|
||||
"notes": [
|
||||
{
|
||||
"sectionNotes": [
|
||||
@ -3049,4 +3049,4 @@
|
||||
"bpm": 178,
|
||||
"speed": 1.75
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
{
|
||||
"song": {
|
||||
"player1": "bf-holding-gf",
|
||||
"player1": "bf",
|
||||
"events": [],
|
||||
"gfVersion": "pico-speaker",
|
||||
"gfVersion": "gf",
|
||||
"notes": [
|
||||
{
|
||||
"sectionNotes": [
|
||||
@ -5794,4 +5794,4 @@
|
||||
"bpm": 178,
|
||||
"speed": 2.6
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
{
|
||||
"song": {
|
||||
"player1": "bf-holding-gf",
|
||||
"player1": "bf",
|
||||
"events": [],
|
||||
"gfVersion": "pico-speaker",
|
||||
"gfVersion": "gf",
|
||||
"notes": [
|
||||
{
|
||||
"sectionNotes": [
|
||||
@ -4324,4 +4324,4 @@
|
||||
"bpm": 178,
|
||||
"speed": 2.2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
300
main.lua
300
main.lua
@ -1,259 +1,81 @@
|
||||
local Height = 0
|
||||
local Width = 0
|
||||
local state = require("modules.states.playstate")
|
||||
|
||||
local myMath = require("modules.math")
|
||||
local myTypes = require("modules.types")
|
||||
local conductor = require("modules.conductor")
|
||||
local json = require("modules.json")
|
||||
local files = require("modules.files")
|
||||
local logger = require("modules.logging")
|
||||
local socket = require("socket")
|
||||
local logging= require("modules.logging")
|
||||
local json = require("modules.json")
|
||||
local logging = require("modules.logging")
|
||||
|
||||
local newVector2 = myTypes.Vector2(10, 10)
|
||||
local songs = json.parse(files.read_file("songs.json"))
|
||||
|
||||
local startTime = 0
|
||||
local curSong = "dad-battle"
|
||||
local curDiffList = {"erect"}
|
||||
local curDiff = "erect"
|
||||
|
||||
local songName = "stress"
|
||||
local songDifficulty = "hard"
|
||||
local curState = nil
|
||||
local stateLoaded = false
|
||||
|
||||
local chartString = files.read_file(string.format("charts/%s/%s-%s.json", songName, songName, songDifficulty))
|
||||
local pressed = {false,false,false}
|
||||
|
||||
if not chartString then
|
||||
error("Chart couldn't be loaded!")
|
||||
end
|
||||
local chart = json.parse(chartString).song
|
||||
|
||||
local inst = love.audio.newSource(string.format("songs/%s/Inst.ogg", chart.song), "stream")
|
||||
local voices = love.audio.newSource(string.format("songs/%s/Voices.ogg", chart.song), "stream")
|
||||
local miss = love.audio.newSource("sounds/missnote1.ogg", "static")
|
||||
|
||||
conductor:setBpm(chart.bpm)
|
||||
conductor:mapBpmChanges(chart)
|
||||
|
||||
local step = 0
|
||||
local beat = 0
|
||||
|
||||
local playing = false
|
||||
|
||||
local characters = {}
|
||||
local stage = json.parse(files.read_file("stages/stage.json"))
|
||||
local unspawnedNotes = {}
|
||||
local notes = {}
|
||||
|
||||
local directions = {
|
||||
"LEFT",
|
||||
"DOWN",
|
||||
"UP",
|
||||
"RIGHT"
|
||||
}
|
||||
|
||||
local pressed = {
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
}
|
||||
local holded = {
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
}
|
||||
|
||||
local receptors = {
|
||||
}
|
||||
|
||||
function love.load()
|
||||
|
||||
characters.bf = myTypes.character("bf")
|
||||
characters.bf.stagePosition = myTypes.Vector2(stage.boyfriend[1], stage.boyfriend[2])
|
||||
|
||||
characters.dad = myTypes.character("tankman")
|
||||
characters.dad.stagePosition = myTypes.Vector2(stage.opponent[1], stage.opponent[2])
|
||||
|
||||
for index, section in next, chart.notes do
|
||||
for index, note in next, section.sectionNotes do
|
||||
local newNote = myTypes.note(note, section.mustHitSection)
|
||||
table.insert(unspawnedNotes, newNote)
|
||||
end
|
||||
end
|
||||
|
||||
for i = 0, 3 do
|
||||
local receptor = myTypes.Sprite("sprites/NOTE_assets.png", "sprites/NOTE_assets.json", false)
|
||||
receptor:PlayAnimation("arrow"..directions[i+1], 25, false)
|
||||
|
||||
receptor.position = myTypes.Vector2(100 + (65 * i), 0)
|
||||
|
||||
receptor.ui = true -- So it doesnt move with the camera.
|
||||
|
||||
receptors[i + 1] = receptor
|
||||
end
|
||||
|
||||
inst:play()
|
||||
voices:play()
|
||||
|
||||
startTime = socket.gettime()
|
||||
|
||||
playing = true
|
||||
end
|
||||
|
||||
local function checkNote(dir)
|
||||
if pressed[dir] or holded[dir] then
|
||||
pressed[dir] = false
|
||||
holded[dir] = true
|
||||
if receptors[dir].animation ~= string.lower(directions[dir]).." confirm" then
|
||||
receptors[dir]:PlayAnimation(string.lower(directions[dir]).." press", 25, false)
|
||||
end
|
||||
return -- You dont check if you are already holding and not just pressing
|
||||
end
|
||||
pressed[dir] = true
|
||||
for index, note in next, notes do
|
||||
if note.position - conductor.songPosition < 200 then
|
||||
if note.mustPress and not note.pressed and note.direction == dir then
|
||||
characters.bf:PlayAnimation("sing"..directions[note.direction])
|
||||
note.pressed = true
|
||||
receptors[dir]:PlayAnimation(string.lower(directions[dir]).." confirm", 25, false)
|
||||
table.remove(notes, index)
|
||||
note:destroy()
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
-- for index, song in next, songs do
|
||||
-- curSong = index
|
||||
-- curDiff = song[1]
|
||||
-- break
|
||||
-- end
|
||||
|
||||
function love.update(dt)
|
||||
if not playing then return end
|
||||
|
||||
local currentTime = socket.gettime()
|
||||
|
||||
local elapsed = math.floor((currentTime - startTime) * 1000)
|
||||
|
||||
conductor.songPosition = elapsed
|
||||
|
||||
local oldStep = step
|
||||
local oldBeat = beat
|
||||
|
||||
step = conductor:getStepRounded(elapsed)
|
||||
beat = conductor:getBeatRounded(elapsed)
|
||||
|
||||
if beat ~= oldBeat then
|
||||
if beat % 2 == 0 then
|
||||
-- gf:PlayAnimation("BF NOTE LEFT", 30, false)
|
||||
for name, character in next, characters do
|
||||
if not character.singing then
|
||||
character:PlayAnimation("idle")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
myTypes.updateSprites(dt)
|
||||
|
||||
if love.keyboard.isDown("a") then
|
||||
checkNote(1)
|
||||
if curState and curState.loaded then
|
||||
if stateLoaded then
|
||||
curState.update(dt)
|
||||
else
|
||||
holded[1] = false
|
||||
pressed[1] = false
|
||||
stateLoaded = true -- skipping this update frame
|
||||
end
|
||||
if love.keyboard.isDown("s") then
|
||||
checkNote(2)
|
||||
else
|
||||
holded[2] = false
|
||||
pressed[2] = false
|
||||
end
|
||||
if love.keyboard.isDown("up") then
|
||||
checkNote(3)
|
||||
else
|
||||
holded[3] = false
|
||||
pressed[3] = false
|
||||
end
|
||||
if love.keyboard.isDown("right") then
|
||||
checkNote(4)
|
||||
else
|
||||
holded[4] = false
|
||||
pressed[4] = false
|
||||
end
|
||||
|
||||
for index, note in next, notes do
|
||||
if note.position - conductor.songPosition < 0 then
|
||||
if note.mustPress then
|
||||
miss:stop()
|
||||
miss:play()
|
||||
characters.bf:PlayAnimation("sing"..directions[note.direction].."miss")
|
||||
table.remove(notes, index)
|
||||
end
|
||||
elseif not curState then
|
||||
if love.keyboard.isDown("return") then
|
||||
curState = state(curSong, curDiff)
|
||||
curState.load()
|
||||
elseif love.keyboard.isDown("down") and not pressed[1] then
|
||||
curSong = next(songs, curSong)
|
||||
if not curSong then
|
||||
curSong = next(songs)
|
||||
curDiffList = songs[curSong]
|
||||
else
|
||||
curDiffList = songs[curSong]
|
||||
end
|
||||
curDiff = curDiffList[1]
|
||||
pressed[1] = true
|
||||
elseif love.keyboard.isDown("right") and not pressed[2] then
|
||||
local curDiffNum = 0
|
||||
for index, diff in next, curDiffList do
|
||||
if diff == curDiff then
|
||||
curDiffNum = index + 1
|
||||
end
|
||||
end
|
||||
|
||||
for name, character in next, characters do
|
||||
if character.sprite.animation ~= "idle" and character.sprite.ended then
|
||||
character:PlayAnimation("idle")
|
||||
end
|
||||
curDiff = curDiffList[curDiffNum] or curDiff
|
||||
pressed[2] = true
|
||||
elseif love.keyboard.isDown("left") and not pressed[3] then
|
||||
local curDiffNum = 0
|
||||
for index, diff in next, curDiffList do
|
||||
if diff == curDiff then
|
||||
curDiffNum = index - 1
|
||||
end
|
||||
end
|
||||
curDiff = curDiffList[curDiffNum] or curDiff
|
||||
pressed[3] = true
|
||||
elseif not love.keyboard.isDown("down") then
|
||||
pressed[1] = false
|
||||
elseif not love.keyboard.isDown("right") then
|
||||
pressed[2] = false
|
||||
elseif not love.keyboard.isDown("left") then
|
||||
pressed[3] = false
|
||||
end
|
||||
|
||||
for index, note in next, unspawnedNotes do
|
||||
if note.position - elapsed < 600 and note.mustPress then
|
||||
note:spawn()
|
||||
table.remove(unspawnedNotes, index)
|
||||
table.insert(notes, note)
|
||||
elseif note.position - elapsed < 600 and not note.mustPress then
|
||||
table.remove(unspawnedNotes, index)
|
||||
table.insert(notes, note)
|
||||
end
|
||||
end
|
||||
|
||||
for index, note in next, notes do
|
||||
if note.spawned then
|
||||
note.sprite.position = myTypes.Vector2(100 + 65 * (note.direction - 1), note.position - elapsed - 100)
|
||||
if note.position - elapsed < -150 then
|
||||
note:destroy()
|
||||
table.remove(notes, index)
|
||||
end
|
||||
else
|
||||
if note.position - elapsed < 0 then
|
||||
table.remove(notes, index)
|
||||
characters.dad:PlayAnimation("sing"..directions[note.direction])
|
||||
note = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for index, receptor in next, receptors do
|
||||
if receptor.ended and receptor.animation ~= "arrow"..directions[index] and receptor.animation ~= "" then
|
||||
receptor:PlayAnimation("arrow"..directions[index], 25, false)
|
||||
end
|
||||
end
|
||||
|
||||
local section = chart.notes[math.floor(step / 16) + 1]
|
||||
|
||||
if section.mustHitSection then
|
||||
myTypes.cameraTarget = myTypes.Vector2(-stage.camera_boyfriend[1], -stage.camera_boyfriend[2]):Add(characters.bf.stageCamera:Negate())
|
||||
else
|
||||
-- When i add DAD he will be here too
|
||||
myTypes.cameraTarget = myTypes.Vector2(stage.camera_opponent[1], stage.camera_opponent[2]):Add(characters.dad.stageCamera:Negate())
|
||||
end
|
||||
|
||||
if not inst:isPlaying() then
|
||||
love.event.quit()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local mainCanvas = love.graphics.newCanvas(1920, 1080)
|
||||
|
||||
function love.draw()
|
||||
|
||||
love.graphics.setCanvas(mainCanvas)
|
||||
|
||||
love.graphics.clear()
|
||||
|
||||
love.graphics.circle("fill", 960, 59, 50000)
|
||||
|
||||
myTypes.drawSprites()
|
||||
|
||||
love.graphics.setCanvas()
|
||||
|
||||
love.graphics.draw(mainCanvas, 0, 0, 0, (love.graphics:getHeight() / 1080) * (4/3), love.graphics:getHeight() / 1080)
|
||||
|
||||
if curState and stateLoaded then
|
||||
curState.draw()
|
||||
else
|
||||
love.graphics.print(string.format("Song: %s, Difficulty: %s, List: %s", curSong, curDiff, logging.dump(curDiffList)), x, y, r, sx, sy, ox, oy, kx, ky)
|
||||
end
|
||||
end
|
||||
|
||||
love.window.setMode(1280, 720, { fullscreen = false , resizable = true})
|
||||
|
281
modules/states/playstate.lua
Normal file
281
modules/states/playstate.lua
Normal file
@ -0,0 +1,281 @@
|
||||
return function(songName, songDifficulty)
|
||||
local state = {}
|
||||
|
||||
local Height = 0
|
||||
local Width = 0
|
||||
|
||||
local myMath = require("modules.math")
|
||||
local myTypes = require("modules.types")
|
||||
local conductor = require("modules.conductor")
|
||||
local json = require("modules.json")
|
||||
local files = require("modules.files")
|
||||
local logger = require("modules.logging")
|
||||
local socket = require("socket")
|
||||
local logging= require("modules.logging")
|
||||
|
||||
local newVector2 = myTypes.Vector2(10, 10)
|
||||
|
||||
local startTime = 0
|
||||
|
||||
local chartString = files.read_file(string.format("charts/%s/%s-%s.json", songName, songName, songDifficulty))
|
||||
|
||||
if not chartString then
|
||||
error("Chart couldn't be loaded!")
|
||||
end
|
||||
local chart = json.parse(chartString).song
|
||||
|
||||
local inst = love.audio.newSource(string.format("songs/%s/Inst.ogg", chart.song), "stream")
|
||||
local voices = love.audio.newSource(string.format("songs/%s/Voices.ogg", chart.song), "stream")
|
||||
local miss = love.audio.newSource("sounds/missnote1.ogg", "static")
|
||||
|
||||
conductor:setBpm(chart.bpm)
|
||||
conductor:mapBpmChanges(chart)
|
||||
|
||||
local step = 0
|
||||
local beat = 0
|
||||
|
||||
local playing = false
|
||||
|
||||
local characters = {}
|
||||
local stage = json.parse(files.read_file("stages/stage.json"))
|
||||
local unspawnedNotes = {}
|
||||
local notes = {}
|
||||
|
||||
local directions = {
|
||||
"LEFT",
|
||||
"DOWN",
|
||||
"UP",
|
||||
"RIGHT"
|
||||
}
|
||||
|
||||
local pressed = {
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
}
|
||||
local holded = {
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
}
|
||||
|
||||
local receptors = {
|
||||
}
|
||||
|
||||
local function checkNote(dir)
|
||||
if pressed[dir] or holded[dir] then
|
||||
pressed[dir] = false
|
||||
holded[dir] = true
|
||||
if receptors[dir].animation ~= string.lower(directions[dir]).." confirm" then
|
||||
receptors[dir]:PlayAnimation(string.lower(directions[dir]).." press", 25, false)
|
||||
end
|
||||
return -- You dont check if you are already holding and not just pressing
|
||||
end
|
||||
pressed[dir] = true
|
||||
for index, note in next, notes do
|
||||
if note.position - conductor.songPosition < 200 then
|
||||
if note.mustPress and not note.pressed and note.direction == dir then
|
||||
characters.bf:PlayAnimation("sing"..directions[note.direction])
|
||||
note.pressed = true
|
||||
receptors[dir]:PlayAnimation(string.lower(directions[dir]).." confirm", 25, false)
|
||||
table.remove(notes, index)
|
||||
note:destroy()
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local elapsed = 0
|
||||
|
||||
function state.update(dt)
|
||||
if not playing then return end
|
||||
|
||||
local currentTime = socket.gettime()
|
||||
|
||||
elapsed = elapsed + dt * 1000
|
||||
|
||||
conductor.songPosition = elapsed
|
||||
|
||||
local oldStep = step
|
||||
local oldBeat = beat
|
||||
|
||||
step = conductor:getStepRounded(elapsed)
|
||||
beat = conductor:getBeatRounded(elapsed)
|
||||
|
||||
if beat ~= oldBeat then
|
||||
if beat % 2 == 0 then
|
||||
-- gf:PlayAnimation("BF NOTE LEFT", 30, false)
|
||||
for name, character in next, characters do
|
||||
if not character.singing then
|
||||
if name == "gf" then
|
||||
if beat % 4 == 0 then
|
||||
character:PlayAnimation("danceLeft")
|
||||
end
|
||||
else
|
||||
character:PlayAnimation("idle")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local section = chart.notes[math.floor(step / 16) + 1]
|
||||
|
||||
if section.mustHitSection then
|
||||
myTypes.cameraTarget = myTypes.Vector2(-stage.camera_boyfriend[1], -stage.camera_boyfriend[2]):Add(characters.bf.stageCamera:Negate()):Add(myTypes.Vector2(0, -200))
|
||||
else
|
||||
myTypes.cameraTarget = myTypes.Vector2(stage.camera_opponent[1], stage.camera_opponent[2]):Add(characters.dad.stageCamera:Negate()):Add(myTypes.Vector2(0, -200))
|
||||
end
|
||||
|
||||
myTypes.updateSprites(dt)
|
||||
|
||||
if love.keyboard.isDown("a") then
|
||||
checkNote(1)
|
||||
else
|
||||
holded[1] = false
|
||||
pressed[1] = false
|
||||
end
|
||||
if love.keyboard.isDown("s") then
|
||||
checkNote(2)
|
||||
else
|
||||
holded[2] = false
|
||||
pressed[2] = false
|
||||
end
|
||||
if love.keyboard.isDown("up") then
|
||||
checkNote(3)
|
||||
else
|
||||
holded[3] = false
|
||||
pressed[3] = false
|
||||
end
|
||||
if love.keyboard.isDown("right") then
|
||||
checkNote(4)
|
||||
else
|
||||
holded[4] = false
|
||||
pressed[4] = false
|
||||
end
|
||||
|
||||
for index, note in next, notes do
|
||||
if note.position - conductor.songPosition < 0 then
|
||||
if note.mustPress then
|
||||
miss:stop()
|
||||
miss:play()
|
||||
characters.bf:PlayAnimation("sing"..directions[note.direction].."miss")
|
||||
table.remove(notes, index)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for name, character in next, characters do
|
||||
if name ~= "gf" and character.sprite.animation ~= "idle" and character.sprite.ended then
|
||||
character:PlayAnimation("idle")
|
||||
end
|
||||
end
|
||||
|
||||
for index, note in next, unspawnedNotes do
|
||||
if note.position - elapsed < 600 and note.mustPress then
|
||||
note:spawn()
|
||||
table.remove(unspawnedNotes, index)
|
||||
table.insert(notes, note)
|
||||
elseif note.position - elapsed < 600 and not note.mustPress then
|
||||
table.remove(unspawnedNotes, index)
|
||||
table.insert(notes, note)
|
||||
end
|
||||
end
|
||||
|
||||
for index, note in next, notes do
|
||||
if note.spawned then
|
||||
note.sprite.position = myTypes.Vector2(100 + 65 * (note.direction - 1), note.position - elapsed - 100)
|
||||
if note.position - elapsed < -150 then
|
||||
note:destroy()
|
||||
table.remove(notes, index)
|
||||
end
|
||||
else
|
||||
if note.position - elapsed < 50 then
|
||||
table.remove(notes, index)
|
||||
if section.altAnim then
|
||||
characters.dad:PlayAnimation("sing"..directions[note.direction].."-alt")
|
||||
else
|
||||
characters.dad:PlayAnimation("sing"..directions[note.direction])
|
||||
end
|
||||
note = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for index, receptor in next, receptors do
|
||||
if receptor.ended and receptor.animation ~= "arrow"..directions[index] and receptor.animation ~= "" then
|
||||
receptor:PlayAnimation("arrow"..directions[index], 25, false)
|
||||
end
|
||||
end
|
||||
|
||||
if not inst:isPlaying() then
|
||||
love.event.quit()
|
||||
end
|
||||
end
|
||||
|
||||
local mainCanvas = love.graphics.newCanvas(1920, 1080)
|
||||
|
||||
function state.draw()
|
||||
|
||||
love.graphics.setCanvas(mainCanvas)
|
||||
|
||||
love.graphics.clear()
|
||||
|
||||
love.graphics.circle("fill", 960, 59, 50000)
|
||||
|
||||
myTypes.drawSprites()
|
||||
|
||||
love.graphics.setCanvas()
|
||||
|
||||
love.graphics.draw(mainCanvas, 0, 0, 0, (love.graphics:getHeight() / 1080) * (4/3), love.graphics:getHeight() / 1080)
|
||||
|
||||
end
|
||||
|
||||
love.window.setMode(1280, 720, { fullscreen = false , resizable = true})
|
||||
|
||||
function state.load()
|
||||
-- GF first so she is below other chars
|
||||
characters.gf = myTypes.character(chart.gfVersion)
|
||||
characters.gf.stagePosition = myTypes.Vector2(stage.girlfriend[1], stage.girlfriend[2])
|
||||
|
||||
characters.bf = myTypes.character(chart.player1)
|
||||
characters.bf.stagePosition = myTypes.Vector2(stage.boyfriend[1], stage.boyfriend[2])
|
||||
|
||||
characters.dad = myTypes.character(chart.player2)
|
||||
characters.dad.stagePosition = myTypes.Vector2(stage.opponent[1], stage.opponent[2])
|
||||
|
||||
|
||||
for index, section in next, chart.notes do
|
||||
for index, note in next, section.sectionNotes do
|
||||
local newNote = myTypes.note(note, section.mustHitSection)
|
||||
table.insert(unspawnedNotes, newNote)
|
||||
end
|
||||
end
|
||||
|
||||
for i = 0, 3 do
|
||||
local receptor = myTypes.Sprite("sprites/NOTE_assets.png", "sprites/NOTE_assets.json", false)
|
||||
receptor:PlayAnimation("arrow"..directions[i+1], 25, false)
|
||||
|
||||
receptor.position = myTypes.Vector2(100 + (65 * i), 0)
|
||||
|
||||
receptor.ui = true -- So it doesnt move with the camera.
|
||||
|
||||
receptors[i + 1] = receptor
|
||||
end
|
||||
|
||||
inst:play()
|
||||
voices:play()
|
||||
|
||||
elapsed = 0
|
||||
|
||||
playing = true
|
||||
state.loaded = true
|
||||
|
||||
myTypes.cameraTarget = myTypes.Vector2()
|
||||
|
||||
end
|
||||
|
||||
return state
|
||||
end
|
@ -159,7 +159,12 @@ function module.drawSprites()
|
||||
quad.offset.x = sprite.quads[sprite.animation][0].offset.x
|
||||
quad.offset.y = sprite.quads[sprite.animation][0].offset.y
|
||||
end
|
||||
local cameraOffset = sprite.ui and module.Vector2() or module.cameraPosition
|
||||
if sprite.flipX and not quad.flipped then
|
||||
quad.flipped = true
|
||||
quad.offset.x = -quad.offset.x
|
||||
end
|
||||
|
||||
local cameraOffset = sprite.ui and module.Vector2() or module.cameraPosition or module.Vector2()
|
||||
|
||||
love.graphics.draw(sprite.image, quad.quad, (sprite.position.x + (sprite.position.x - quad.offset.x - sprite.extraOffset.x) + cameraOffset.x), (sprite.position.y + (sprite.position.y - quad.offset.y - sprite.extraOffset.y) + cameraOffset.y), 0, quad.resize.x * (sprite.flipX and -1 or 1), quad.resize.y)
|
||||
::continue:: -- Point itself
|
||||
@ -170,7 +175,12 @@ function module.drawSprites()
|
||||
|
||||
local quad = rect.quads[rect.animation][0]
|
||||
|
||||
local cameraOffset = rect.ui and module.Vector2() or module.cameraPosition
|
||||
if rect.flipX and not quad.flipped then
|
||||
quad.flipped = true
|
||||
quad.offset.x = -quad.offset.x
|
||||
end
|
||||
|
||||
local cameraOffset = rect.ui and module.Vector2() or module.cameraPosition or module.Vector2()
|
||||
|
||||
love.graphics.draw(rect.image, quad.quad, (rect.position.x + (rect.position.x - quad.offset.x - rect.extraOffset.x) + cameraOffset.x), (rect.position.y + (rect.position.y - quad.offset.y - rect.extraOffset.y) + cameraOffset.y), 0, quad.resize.x * (rect.flipX and -1 or 1), quad.resize.y)
|
||||
::continue::
|
||||
|
@ -11,7 +11,7 @@ function CharacterClass:PlayAnimation(name)
|
||||
local animName = self.animations[name]
|
||||
self.sprite:PlayAnimation(animName, self.animInfo[name].fps)
|
||||
self.sprite.extraOffset = module.myTypes.Vector2(self.animInfo[name].offsets[1] - self.stagePosition.x, self.animInfo[name].offsets[2] - self.stagePosition.y)
|
||||
self.singing = name ~= "idle"
|
||||
self.singing = name ~= "idle" and name ~= "danceLeft" and name ~= "danceRight"
|
||||
end
|
||||
|
||||
function module.character(name)
|
||||
@ -46,9 +46,13 @@ function module.character(name)
|
||||
newCharacter.animInfo[alias.anim] = alias
|
||||
end
|
||||
|
||||
newCharacter:PlayAnimation("idle")
|
||||
if newCharacter.animInfo["idle"] then
|
||||
newCharacter:PlayAnimation("idle")
|
||||
else
|
||||
newCharacter:PlayAnimation("danceLeft")
|
||||
end
|
||||
|
||||
return newCharacter
|
||||
end
|
||||
|
||||
return module
|
||||
return module
|
||||
|
13
songs.json
Normal file
13
songs.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"high": [
|
||||
"erect"
|
||||
],
|
||||
"dad-battle": [
|
||||
"erect"
|
||||
],
|
||||
"stress": [
|
||||
"easy",
|
||||
"normal",
|
||||
"hard"
|
||||
]
|
||||
}
|
BIN
songs/Dad Battle Erect/Inst.ogg
Normal file
BIN
songs/Dad Battle Erect/Inst.ogg
Normal file
Binary file not shown.
BIN
songs/Dad Battle Erect/Voices.ogg
Normal file
BIN
songs/Dad Battle Erect/Voices.ogg
Normal file
Binary file not shown.
1315
sprites/DADDY_DEAREST.json
Normal file
1315
sprites/DADDY_DEAREST.json
Normal file
File diff suppressed because it is too large
Load Diff
BIN
sprites/DADDY_DEAREST.png
Normal file
BIN
sprites/DADDY_DEAREST.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.0 MiB |
2435
sprites/GF_assets.json
Normal file
2435
sprites/GF_assets.json
Normal file
File diff suppressed because it is too large
Load Diff
BIN
sprites/GF_assets.png
Normal file
BIN
sprites/GF_assets.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.7 MiB |
@ -1,699 +0,0 @@
|
||||
{
|
||||
"TextureAtlas": {
|
||||
"imagePath": "momCar.png",
|
||||
"SubTexture": [
|
||||
{
|
||||
"_name": "MOM DOWN POSE0000",
|
||||
"_x": "0",
|
||||
"_y": "0",
|
||||
"_width": "452",
|
||||
"_height": "594",
|
||||
"_frameX": "-1",
|
||||
"_frameY": "-19",
|
||||
"_frameWidth": "459",
|
||||
"_frameHeight": "613"
|
||||
},
|
||||
{
|
||||
"_name": "MOM DOWN POSE0001",
|
||||
"_x": "462",
|
||||
"_y": "0",
|
||||
"_width": "444",
|
||||
"_height": "586",
|
||||
"_frameX": "-3",
|
||||
"_frameY": "-27",
|
||||
"_frameWidth": "459",
|
||||
"_frameHeight": "613"
|
||||
},
|
||||
{
|
||||
"_name": "MOM DOWN POSE0002",
|
||||
"_x": "916",
|
||||
"_y": "0",
|
||||
"_width": "441",
|
||||
"_height": "613",
|
||||
"_frameX": "-18",
|
||||
"_frameY": "0",
|
||||
"_frameWidth": "459",
|
||||
"_frameHeight": "613"
|
||||
},
|
||||
{
|
||||
"_name": "MOM DOWN POSE0003",
|
||||
"_x": "1367",
|
||||
"_y": "0",
|
||||
"_width": "442",
|
||||
"_height": "607",
|
||||
"_frameX": "-7",
|
||||
"_frameY": "-6",
|
||||
"_frameWidth": "459",
|
||||
"_frameHeight": "613"
|
||||
},
|
||||
{
|
||||
"_name": "MOM DOWN POSE0004",
|
||||
"_x": "1819",
|
||||
"_y": "0",
|
||||
"_width": "451",
|
||||
"_height": "613",
|
||||
"_frameX": "0",
|
||||
"_frameY": "0",
|
||||
"_frameWidth": "459",
|
||||
"_frameHeight": "613"
|
||||
},
|
||||
{
|
||||
"_name": "MOM DOWN POSE0005",
|
||||
"_x": "2280",
|
||||
"_y": "0",
|
||||
"_width": "438",
|
||||
"_height": "607",
|
||||
"_frameX": "-7",
|
||||
"_frameY": "-6",
|
||||
"_frameWidth": "459",
|
||||
"_frameHeight": "613"
|
||||
},
|
||||
{
|
||||
"_name": "MOM DOWN POSE0006",
|
||||
"_x": "916",
|
||||
"_y": "0",
|
||||
"_width": "441",
|
||||
"_height": "613",
|
||||
"_frameX": "-18",
|
||||
"_frameY": "0",
|
||||
"_frameWidth": "459",
|
||||
"_frameHeight": "613"
|
||||
},
|
||||
{
|
||||
"_name": "MOM DOWN POSE0007",
|
||||
"_x": "1367",
|
||||
"_y": "0",
|
||||
"_width": "442",
|
||||
"_height": "607",
|
||||
"_frameX": "-7",
|
||||
"_frameY": "-6",
|
||||
"_frameWidth": "459",
|
||||
"_frameHeight": "613"
|
||||
},
|
||||
{
|
||||
"_name": "MOM DOWN POSE0008",
|
||||
"_x": "1819",
|
||||
"_y": "0",
|
||||
"_width": "451",
|
||||
"_height": "613",
|
||||
"_frameX": "0",
|
||||
"_frameY": "0",
|
||||
"_frameWidth": "459",
|
||||
"_frameHeight": "613"
|
||||
},
|
||||
{
|
||||
"_name": "MOM DOWN POSE0009",
|
||||
"_x": "2280",
|
||||
"_y": "0",
|
||||
"_width": "438",
|
||||
"_height": "607",
|
||||
"_frameX": "-7",
|
||||
"_frameY": "-6",
|
||||
"_frameWidth": "459",
|
||||
"_frameHeight": "613"
|
||||
},
|
||||
{
|
||||
"_name": "MOM DOWN POSE0010",
|
||||
"_x": "916",
|
||||
"_y": "0",
|
||||
"_width": "441",
|
||||
"_height": "613",
|
||||
"_frameX": "-18",
|
||||
"_frameY": "0",
|
||||
"_frameWidth": "459",
|
||||
"_frameHeight": "613"
|
||||
},
|
||||
{
|
||||
"_name": "MOM DOWN POSE0011",
|
||||
"_x": "1367",
|
||||
"_y": "0",
|
||||
"_width": "442",
|
||||
"_height": "607",
|
||||
"_frameX": "-7",
|
||||
"_frameY": "-6",
|
||||
"_frameWidth": "459",
|
||||
"_frameHeight": "613"
|
||||
},
|
||||
{
|
||||
"_name": "MOM DOWN POSE0012",
|
||||
"_x": "1819",
|
||||
"_y": "0",
|
||||
"_width": "451",
|
||||
"_height": "613",
|
||||
"_frameX": "0",
|
||||
"_frameY": "0",
|
||||
"_frameWidth": "459",
|
||||
"_frameHeight": "613"
|
||||
},
|
||||
{
|
||||
"_name": "MOM DOWN POSE0013",
|
||||
"_x": "2280",
|
||||
"_y": "0",
|
||||
"_width": "438",
|
||||
"_height": "607",
|
||||
"_frameX": "-7",
|
||||
"_frameY": "-6",
|
||||
"_frameWidth": "459",
|
||||
"_frameHeight": "613"
|
||||
},
|
||||
{
|
||||
"_name": "MOM DOWN POSE0014",
|
||||
"_x": "916",
|
||||
"_y": "0",
|
||||
"_width": "441",
|
||||
"_height": "613",
|
||||
"_frameX": "-18",
|
||||
"_frameY": "0",
|
||||
"_frameWidth": "459",
|
||||
"_frameHeight": "613"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Idle0000",
|
||||
"_x": "2728",
|
||||
"_y": "0",
|
||||
"_width": "467",
|
||||
"_height": "811",
|
||||
"_frameX": "0",
|
||||
"_frameY": "-2",
|
||||
"_frameWidth": "479",
|
||||
"_frameHeight": "814"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Idle0001",
|
||||
"_x": "3205",
|
||||
"_y": "0",
|
||||
"_width": "478",
|
||||
"_height": "810",
|
||||
"_frameX": "0",
|
||||
"_frameY": "-3",
|
||||
"_frameWidth": "479",
|
||||
"_frameHeight": "814"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Idle0002",
|
||||
"_x": "3693",
|
||||
"_y": "0",
|
||||
"_width": "467",
|
||||
"_height": "797",
|
||||
"_frameX": "0",
|
||||
"_frameY": "-17",
|
||||
"_frameWidth": "479",
|
||||
"_frameHeight": "814"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Idle0003",
|
||||
"_x": "4170",
|
||||
"_y": "0",
|
||||
"_width": "478",
|
||||
"_height": "792",
|
||||
"_frameX": "0",
|
||||
"_frameY": "-22",
|
||||
"_frameWidth": "479",
|
||||
"_frameHeight": "814"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Idle0004",
|
||||
"_x": "4658",
|
||||
"_y": "0",
|
||||
"_width": "461",
|
||||
"_height": "805",
|
||||
"_frameX": "-4",
|
||||
"_frameY": "-9",
|
||||
"_frameWidth": "479",
|
||||
"_frameHeight": "814"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Idle0005",
|
||||
"_x": "5129",
|
||||
"_y": "0",
|
||||
"_width": "472",
|
||||
"_height": "801",
|
||||
"_frameX": "-4",
|
||||
"_frameY": "-13",
|
||||
"_frameWidth": "479",
|
||||
"_frameHeight": "814"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Idle0006",
|
||||
"_x": "5611",
|
||||
"_y": "0",
|
||||
"_width": "460",
|
||||
"_height": "807",
|
||||
"_frameX": "-4",
|
||||
"_frameY": "-7",
|
||||
"_frameWidth": "479",
|
||||
"_frameHeight": "814"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Idle0007",
|
||||
"_x": "6081",
|
||||
"_y": "0",
|
||||
"_width": "471",
|
||||
"_height": "804",
|
||||
"_frameX": "-4",
|
||||
"_frameY": "-10",
|
||||
"_frameWidth": "479",
|
||||
"_frameHeight": "814"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Idle0008",
|
||||
"_x": "6562",
|
||||
"_y": "0",
|
||||
"_width": "460",
|
||||
"_height": "813",
|
||||
"_frameX": "-4",
|
||||
"_frameY": "-1",
|
||||
"_frameWidth": "479",
|
||||
"_frameHeight": "814"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Idle0009",
|
||||
"_x": "7032",
|
||||
"_y": "0",
|
||||
"_width": "471",
|
||||
"_height": "811",
|
||||
"_frameX": "-4",
|
||||
"_frameY": "-3",
|
||||
"_frameWidth": "479",
|
||||
"_frameHeight": "814"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Idle0010",
|
||||
"_x": "7513",
|
||||
"_y": "0",
|
||||
"_width": "471",
|
||||
"_height": "814",
|
||||
"_frameX": "-4",
|
||||
"_frameY": "0",
|
||||
"_frameWidth": "479",
|
||||
"_frameHeight": "814"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Idle0011",
|
||||
"_x": "0",
|
||||
"_y": "824",
|
||||
"_width": "475",
|
||||
"_height": "812",
|
||||
"_frameX": "-4",
|
||||
"_frameY": "-2",
|
||||
"_frameWidth": "479",
|
||||
"_frameHeight": "814"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Idle0012",
|
||||
"_x": "485",
|
||||
"_y": "824",
|
||||
"_width": "460",
|
||||
"_height": "814",
|
||||
"_frameX": "-4",
|
||||
"_frameY": "0",
|
||||
"_frameWidth": "479",
|
||||
"_frameHeight": "814"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Idle0013",
|
||||
"_x": "955",
|
||||
"_y": "824",
|
||||
"_width": "471",
|
||||
"_height": "812",
|
||||
"_frameX": "-4",
|
||||
"_frameY": "-2",
|
||||
"_frameWidth": "479",
|
||||
"_frameHeight": "814"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Left Pose0000",
|
||||
"_x": "1436",
|
||||
"_y": "824",
|
||||
"_width": "564",
|
||||
"_height": "803",
|
||||
"_frameX": "-1",
|
||||
"_frameY": "-7",
|
||||
"_frameWidth": "570",
|
||||
"_frameHeight": "810"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Left Pose0001",
|
||||
"_x": "2010",
|
||||
"_y": "824",
|
||||
"_width": "561",
|
||||
"_height": "800",
|
||||
"_frameX": "-4",
|
||||
"_frameY": "-10",
|
||||
"_frameWidth": "570",
|
||||
"_frameHeight": "810"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Left Pose0002",
|
||||
"_x": "2581",
|
||||
"_y": "824",
|
||||
"_width": "558",
|
||||
"_height": "810",
|
||||
"_frameX": "-12",
|
||||
"_frameY": "0",
|
||||
"_frameWidth": "570",
|
||||
"_frameHeight": "810"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Left Pose0003",
|
||||
"_x": "3149",
|
||||
"_y": "824",
|
||||
"_width": "568",
|
||||
"_height": "806",
|
||||
"_frameX": "-2",
|
||||
"_frameY": "-4",
|
||||
"_frameWidth": "570",
|
||||
"_frameHeight": "810"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Left Pose0004",
|
||||
"_x": "3727",
|
||||
"_y": "824",
|
||||
"_width": "570",
|
||||
"_height": "810"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Left Pose0005",
|
||||
"_x": "4307",
|
||||
"_y": "824",
|
||||
"_width": "566",
|
||||
"_height": "806",
|
||||
"_frameX": "-4",
|
||||
"_frameY": "-4",
|
||||
"_frameWidth": "570",
|
||||
"_frameHeight": "810"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Left Pose0006",
|
||||
"_x": "2581",
|
||||
"_y": "824",
|
||||
"_width": "558",
|
||||
"_height": "810",
|
||||
"_frameX": "-12",
|
||||
"_frameY": "0",
|
||||
"_frameWidth": "570",
|
||||
"_frameHeight": "810"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Left Pose0007",
|
||||
"_x": "3149",
|
||||
"_y": "824",
|
||||
"_width": "568",
|
||||
"_height": "806",
|
||||
"_frameX": "-2",
|
||||
"_frameY": "-4",
|
||||
"_frameWidth": "570",
|
||||
"_frameHeight": "810"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Left Pose0008",
|
||||
"_x": "3727",
|
||||
"_y": "824",
|
||||
"_width": "570",
|
||||
"_height": "810"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Left Pose0009",
|
||||
"_x": "4307",
|
||||
"_y": "824",
|
||||
"_width": "566",
|
||||
"_height": "806",
|
||||
"_frameX": "-4",
|
||||
"_frameY": "-4",
|
||||
"_frameWidth": "570",
|
||||
"_frameHeight": "810"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Pose Left0000",
|
||||
"_x": "4883",
|
||||
"_y": "824",
|
||||
"_width": "662",
|
||||
"_height": "762",
|
||||
"_frameX": "0",
|
||||
"_frameY": "0",
|
||||
"_frameWidth": "672",
|
||||
"_frameHeight": "762"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Pose Left0001",
|
||||
"_x": "5555",
|
||||
"_y": "824",
|
||||
"_width": "672",
|
||||
"_height": "762"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Pose Left0002",
|
||||
"_x": "6237",
|
||||
"_y": "824",
|
||||
"_width": "648",
|
||||
"_height": "745",
|
||||
"_frameX": "0",
|
||||
"_frameY": "-17",
|
||||
"_frameWidth": "672",
|
||||
"_frameHeight": "762"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Pose Left0003",
|
||||
"_x": "6895",
|
||||
"_y": "824",
|
||||
"_width": "658",
|
||||
"_height": "743",
|
||||
"_frameX": "0",
|
||||
"_frameY": "-19",
|
||||
"_frameWidth": "672",
|
||||
"_frameHeight": "762"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Pose Left0004",
|
||||
"_x": "0",
|
||||
"_y": "1648",
|
||||
"_width": "658",
|
||||
"_height": "749",
|
||||
"_frameX": "0",
|
||||
"_frameY": "-13",
|
||||
"_frameWidth": "672",
|
||||
"_frameHeight": "762"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Pose Left0005",
|
||||
"_x": "668",
|
||||
"_y": "1648",
|
||||
"_width": "662",
|
||||
"_height": "747",
|
||||
"_frameX": "0",
|
||||
"_frameY": "-15",
|
||||
"_frameWidth": "672",
|
||||
"_frameHeight": "762"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Pose Left0006",
|
||||
"_x": "1340",
|
||||
"_y": "1648",
|
||||
"_width": "648",
|
||||
"_height": "749",
|
||||
"_frameX": "0",
|
||||
"_frameY": "-13",
|
||||
"_frameWidth": "672",
|
||||
"_frameHeight": "762"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Pose Left0007",
|
||||
"_x": "1998",
|
||||
"_y": "1648",
|
||||
"_width": "658",
|
||||
"_height": "747",
|
||||
"_frameX": "0",
|
||||
"_frameY": "-15",
|
||||
"_frameWidth": "672",
|
||||
"_frameHeight": "762"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Pose Left0008",
|
||||
"_x": "0",
|
||||
"_y": "1648",
|
||||
"_width": "658",
|
||||
"_height": "749",
|
||||
"_frameX": "0",
|
||||
"_frameY": "-13",
|
||||
"_frameWidth": "672",
|
||||
"_frameHeight": "762"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Pose Left0009",
|
||||
"_x": "668",
|
||||
"_y": "1648",
|
||||
"_width": "662",
|
||||
"_height": "747",
|
||||
"_frameX": "0",
|
||||
"_frameY": "-15",
|
||||
"_frameWidth": "672",
|
||||
"_frameHeight": "762"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Up Pose0000",
|
||||
"_x": "2666",
|
||||
"_y": "1648",
|
||||
"_width": "455",
|
||||
"_height": "840",
|
||||
"_frameX": "0",
|
||||
"_frameY": "-14",
|
||||
"_frameWidth": "473",
|
||||
"_frameHeight": "861"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Up Pose0001",
|
||||
"_x": "3131",
|
||||
"_y": "1648",
|
||||
"_width": "451",
|
||||
"_height": "838",
|
||||
"_frameX": "-10",
|
||||
"_frameY": "-16",
|
||||
"_frameWidth": "473",
|
||||
"_frameHeight": "861"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Up Pose0002",
|
||||
"_x": "3592",
|
||||
"_y": "1648",
|
||||
"_width": "455",
|
||||
"_height": "860",
|
||||
"_frameX": "-6",
|
||||
"_frameY": "-1",
|
||||
"_frameWidth": "473",
|
||||
"_frameHeight": "861"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Up Pose0003",
|
||||
"_x": "4057",
|
||||
"_y": "1648",
|
||||
"_width": "452",
|
||||
"_height": "861",
|
||||
"_frameX": "-16",
|
||||
"_frameY": "0",
|
||||
"_frameWidth": "473",
|
||||
"_frameHeight": "861"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Up Pose0004",
|
||||
"_x": "4519",
|
||||
"_y": "1648",
|
||||
"_width": "460",
|
||||
"_height": "857",
|
||||
"_frameX": "-10",
|
||||
"_frameY": "-4",
|
||||
"_frameWidth": "473",
|
||||
"_frameHeight": "861"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Up Pose0005",
|
||||
"_x": "4989",
|
||||
"_y": "1648",
|
||||
"_width": "467",
|
||||
"_height": "858",
|
||||
"_frameX": "-6",
|
||||
"_frameY": "-3",
|
||||
"_frameWidth": "473",
|
||||
"_frameHeight": "861"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Up Pose0006",
|
||||
"_x": "5466",
|
||||
"_y": "1648",
|
||||
"_width": "455",
|
||||
"_height": "857",
|
||||
"_frameX": "-6",
|
||||
"_frameY": "-4",
|
||||
"_frameWidth": "473",
|
||||
"_frameHeight": "861"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Up Pose0007",
|
||||
"_x": "5931",
|
||||
"_y": "1648",
|
||||
"_width": "452",
|
||||
"_height": "858",
|
||||
"_frameX": "-16",
|
||||
"_frameY": "-3",
|
||||
"_frameWidth": "473",
|
||||
"_frameHeight": "861"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Up Pose0008",
|
||||
"_x": "4519",
|
||||
"_y": "1648",
|
||||
"_width": "460",
|
||||
"_height": "857",
|
||||
"_frameX": "-10",
|
||||
"_frameY": "-4",
|
||||
"_frameWidth": "473",
|
||||
"_frameHeight": "861"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Up Pose0009",
|
||||
"_x": "4989",
|
||||
"_y": "1648",
|
||||
"_width": "467",
|
||||
"_height": "858",
|
||||
"_frameX": "-6",
|
||||
"_frameY": "-3",
|
||||
"_frameWidth": "473",
|
||||
"_frameHeight": "861"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Up Pose0010",
|
||||
"_x": "5466",
|
||||
"_y": "1648",
|
||||
"_width": "455",
|
||||
"_height": "857",
|
||||
"_frameX": "-6",
|
||||
"_frameY": "-4",
|
||||
"_frameWidth": "473",
|
||||
"_frameHeight": "861"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Up Pose0011",
|
||||
"_x": "5931",
|
||||
"_y": "1648",
|
||||
"_width": "452",
|
||||
"_height": "858",
|
||||
"_frameX": "-16",
|
||||
"_frameY": "-3",
|
||||
"_frameWidth": "473",
|
||||
"_frameHeight": "861"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Up Pose0012",
|
||||
"_x": "4519",
|
||||
"_y": "1648",
|
||||
"_width": "460",
|
||||
"_height": "857",
|
||||
"_frameX": "-10",
|
||||
"_frameY": "-4",
|
||||
"_frameWidth": "473",
|
||||
"_frameHeight": "861"
|
||||
},
|
||||
{
|
||||
"_name": "Mom Up Pose0013",
|
||||
"_x": "4989",
|
||||
"_y": "1648",
|
||||
"_width": "467",
|
||||
"_height": "858",
|
||||
"_frameX": "-6",
|
||||
"_frameY": "-3",
|
||||
"_frameWidth": "473",
|
||||
"_frameHeight": "861"
|
||||
},
|
||||
{
|
||||
"__name": "Mom Up Pose0014",
|
||||
"_x": "5466",
|
||||
"_y": "1648",
|
||||
"_width": "455",
|
||||
"_height": "857",
|
||||
"_frameX": "-6",
|
||||
"_frameY": "-4",
|
||||
"_frameWidth": "473",
|
||||
"_frameHeight": "861"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -3,13 +3,13 @@
|
||||
"defaultZoom": 0.75,
|
||||
"isPixelStage": false,
|
||||
|
||||
"boyfriend": [770, 100],
|
||||
"girlfriend": [400, 130],
|
||||
"boyfriend": [500, 100],
|
||||
"girlfriend": [0, 100],
|
||||
"opponent": [100, 100],
|
||||
"hide_girlfriend": false,
|
||||
|
||||
"camera_boyfriend": [0, 0],
|
||||
"camera_opponent": [500, 0],
|
||||
"camera_opponent": [0, 0],
|
||||
"camera_girlfriend": [0, 0],
|
||||
"camera_speed": 1
|
||||
}
|
||||
|
Reference in New Issue
Block a user