1428 lines
77 KiB
Lua
1428 lines
77 KiB
Lua
local ____lualib = require("lualib_bundle")
|
|
local __TS__New = ____lualib.__TS__New
|
|
local __TS__ArrayPushArray = ____lualib.__TS__ArrayPushArray
|
|
local __TS__ArraySplice = ____lualib.__TS__ArraySplice
|
|
local __TS__AsyncAwaiter = ____lualib.__TS__AsyncAwaiter
|
|
local __TS__Await = ____lualib.__TS__Await
|
|
local Map = ____lualib.Map
|
|
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
|
|
local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
local __TS__ArrayIndexOf = ____lualib.__TS__ArrayIndexOf
|
|
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
|
|
local __TS__PromiseAll = ____lualib.__TS__PromiseAll
|
|
local __TS__Delete = ____lualib.__TS__Delete
|
|
local __TS__Iterator = ____lualib.__TS__Iterator
|
|
local ____exports = {}
|
|
local ____storyteller = require("code.engine.storyteller")
|
|
local ST = ____storyteller.ST
|
|
local STAnimation = ____storyteller.STAnimation
|
|
local STContainer = ____storyteller.STContainer
|
|
local STFacing = ____storyteller.STFacing
|
|
local STMap = ____storyteller.STMap
|
|
local STRectangle = ____storyteller.STRectangle
|
|
local STSprite = ____storyteller.STSprite
|
|
local STText = ____storyteller.STText
|
|
local STValue = ____storyteller.STValue
|
|
local ____global = require("code.global")
|
|
local accessor = ____global.accessor
|
|
local random = ____global.random
|
|
local function textGen()
|
|
return { encounter1 = "(按下 [↑] [↓] [←] [→] 来控制角色移动。)" }
|
|
end
|
|
local function rhythm(assets, ____bindingPattern0, batch, game, inputs, ____bindingPattern1)
|
|
local atlas
|
|
atlas = ____bindingPattern0.atlas
|
|
local screen
|
|
screen = ____bindingPattern1.screen
|
|
local rhythm_container, rhythm_hooks, text
|
|
local rhythm = {
|
|
intro = function(self)
|
|
return __TS__AsyncAwaiter(function(____awaiter_resolve)
|
|
local acc = 0
|
|
local starx = __TS__New(
|
|
STRectangle,
|
|
{
|
|
metadata = __TS__New(STValue, 0.25),
|
|
priority = 60000
|
|
}
|
|
)
|
|
screen:attach(starx)
|
|
local field = __TS__New(STContainer, { alpha = 0, metadata = { b = {}, p = {} }, priority = 2 })
|
|
local function starDrawer(sim, a)
|
|
if sim == nil then
|
|
sim = false
|
|
end
|
|
if a == nil then
|
|
a = starx.metadata.value
|
|
end
|
|
acc = acc + (1 + a * 20)
|
|
while 1 <= acc do
|
|
acc = acc - 1
|
|
if #field.metadata.b == 0 then
|
|
__TS__ArrayPushArray(
|
|
field.metadata.b,
|
|
ST:populate(
|
|
360,
|
|
function(i) return i end
|
|
)
|
|
)
|
|
end
|
|
local xy = ST:ray(
|
|
__TS__ArraySplice(
|
|
field.metadata.b,
|
|
math.floor(math.random() * #field.metadata.b),
|
|
1
|
|
)[1],
|
|
1
|
|
)
|
|
local ____field_metadata_p_0 = field.metadata.p
|
|
____field_metadata_p_0[#____field_metadata_p_0 + 1] = {
|
|
xy.x,
|
|
xy.y,
|
|
math.random(),
|
|
0.001
|
|
}
|
|
end
|
|
local index = #field.metadata.p
|
|
while true do
|
|
local ____index_1 = index
|
|
index = ____index_1 - 1
|
|
if not (____index_1 ~= 0) then
|
|
break
|
|
end
|
|
do
|
|
local starline = field.metadata.p[index + 1]
|
|
local progress = starline[4] * (1 + a / (50 - starline[3] * 48))
|
|
if 1.5 <= progress then
|
|
__TS__ArraySplice(field.metadata.p, index, 1)
|
|
goto __continue9
|
|
end
|
|
if sim then
|
|
starline[4] = progress
|
|
goto __continue9
|
|
end
|
|
local ox = starline[1] * starline[4] * 200
|
|
local oy = starline[2] * starline[4] * 200
|
|
starline[4] = progress
|
|
local c = (1 - (1 - progress) ^ 2) * (0.05 + starline[3] ^ 4 * 0.95)
|
|
love.graphics.setLineWidth(ST:remap(progress * (0.2 + starline[3] * 0.8), 0.25, 1.5))
|
|
love.graphics.setColor(c, c, c, a)
|
|
love.graphics.line(ox, oy, starline[1] * progress * 200, starline[2] * progress * 200)
|
|
end
|
|
::__continue9::
|
|
end
|
|
end
|
|
local i = 30 * 20
|
|
while true do
|
|
local ____i_2 = i
|
|
i = ____i_2 - 1
|
|
if not (____i_2 ~= 0) then
|
|
break
|
|
end
|
|
starDrawer(true, 1)
|
|
end
|
|
local sh = __TS__New(STValue)
|
|
local function shTicker()
|
|
screen.position.x = sh.value * (math.random() * 2 - 1)
|
|
screen.position.y = sh.value * (math.random() * 2 - 1)
|
|
end
|
|
screen:addTicker(shTicker)
|
|
local ____self_3 = sh:automate(150, 2, 0)
|
|
____self_3["then"](
|
|
____self_3,
|
|
function()
|
|
screen:removeTicker(shTicker)
|
|
screen.position.x = 0
|
|
screen.position.y = 0
|
|
end
|
|
)
|
|
local canvas = love.graphics.newCanvas(ST.width, ST.height)
|
|
field:addDrawer(function(self)
|
|
local color = { love.graphics.getColor() }
|
|
local canvas2 = { love.graphics.getCanvas() }
|
|
love.graphics.setColor(1, 1, 1, 1)
|
|
love.graphics.setCanvas(canvas)
|
|
love.graphics.clear(0, 0, 0, 0)
|
|
love.graphics.push()
|
|
love.graphics.replaceTransform(love.math.newTransform(
|
|
ST.width / 2 + starx.position.x,
|
|
ST.height / 2 + starx.position.y,
|
|
0,
|
|
starx.scale.x,
|
|
starx.scale.y
|
|
))
|
|
starDrawer()
|
|
love.graphics.pop()
|
|
return function()
|
|
love.graphics.push()
|
|
love.graphics.replaceTransform(love.math.newTransform(
|
|
0,
|
|
0,
|
|
0,
|
|
ST.scale,
|
|
ST.scale
|
|
))
|
|
love.graphics.setCanvas(canvas2)
|
|
love.graphics.setColor(color)
|
|
love.graphics.setBlendMode("add", "alphamultiply")
|
|
love.graphics.draw(canvas)
|
|
love.graphics.pop()
|
|
end
|
|
end)
|
|
starx:attach(field)
|
|
field.alpha:automate(15, 1)
|
|
starx.metadata:automate(150, 1)
|
|
__TS__Await(ST:pause(10))
|
|
local black = __TS__New(STRectangle, {
|
|
alpha = 0,
|
|
priority = 1,
|
|
anchor = 0.5,
|
|
color = 0,
|
|
size = { x = 250, y = 190 }
|
|
})
|
|
starx:attach(black)
|
|
__TS__Await(black.alpha:automate(30, 1))
|
|
local white = __TS__New(STRectangle,
|
|
{ alpha = 0, anchor = 0.5, size = { x = 250, y = 190 }, priority = 3 })
|
|
starx:attach(white)
|
|
__TS__Await(white.alpha:automate(90, 1))
|
|
starx:detach(black, field)
|
|
canvas:release()
|
|
local ____self_4 = white.alpha:automate(90, 0)
|
|
____self_4["then"](
|
|
____self_4,
|
|
function()
|
|
screen:detach(starx)
|
|
end
|
|
)
|
|
end)
|
|
end,
|
|
start = function(self, preset)
|
|
return __TS__AsyncAwaiter(function(____awaiter_resolve)
|
|
game.encounter = true
|
|
local stage = preset.init
|
|
local state = {}
|
|
local music = __TS__New(Map)
|
|
while true do
|
|
local stargate, task1, wrapper, xgen
|
|
local value = preset.stages[stage]
|
|
local script = __TS__Await(preset:script(state, stage))
|
|
if value == nil then
|
|
break
|
|
end
|
|
for ____, track in ipairs(value.tracks) do
|
|
if not music:has(track) then
|
|
music:set(
|
|
track,
|
|
preset.tracks[track + 1]:instance_forced({
|
|
autoplay = false,
|
|
effects = ST.distance
|
|
.name_list,
|
|
rate = value.rate
|
|
})
|
|
)
|
|
end
|
|
end
|
|
local audios = __TS__ArrayMap(
|
|
value.tracks,
|
|
function(____, track) return music:get(track).audio end
|
|
)
|
|
if not music:has(-1) then
|
|
music:set(
|
|
-1,
|
|
value.inst:instance_forced({ autoplay = false, gain = 0, rate = value.rate })
|
|
)
|
|
end
|
|
local inst = music:get(-1)
|
|
audios[#audios + 1] = inst.audio
|
|
local ____try = __TS__AsyncAwaiter(function()
|
|
for ____, audio in ipairs(audios) do
|
|
audio:play()
|
|
end
|
|
end)
|
|
__TS__Await(____try.catch(
|
|
____try,
|
|
function(____)
|
|
end
|
|
))
|
|
for ____, track in ipairs(value.tracks) do
|
|
music:get(track).active = true
|
|
end
|
|
inst.active = true
|
|
local apool = ST:populate(
|
|
#value.actions,
|
|
function(index) return index end
|
|
)
|
|
local actions = __TS__ArrayMap(
|
|
value.actions,
|
|
function(____, action, index)
|
|
return {
|
|
action[1],
|
|
__TS__ArraySplice(
|
|
apool,
|
|
random:int(#apool),
|
|
1
|
|
)[1],
|
|
action[2],
|
|
index
|
|
}
|
|
end
|
|
)
|
|
table.sort(
|
|
actions,
|
|
function(a, b) return a[1] < b[1] end
|
|
)
|
|
local finish = -math.huge
|
|
local total = 0
|
|
local buffer = value.buffer
|
|
local duration = math.floor(value.duration / value.rate + 0.5)
|
|
local notes = {}
|
|
local seconds = math.floor((inst.audio:getDuration("seconds") or 0) * ST.fps + 0.5)
|
|
local start = math.floor((inst.position.value or 0) * ST.fps + 0.5)
|
|
for ____, note in ipairs(value.chart) do
|
|
if start + buffer <= note[1] and note[1] + note[2] <= start + buffer + duration then
|
|
notes[#notes + 1] = note
|
|
finish = math.max(finish, note[1] + note[2])
|
|
total = total + note[2]
|
|
elseif start + buffer <= seconds + note[1] and seconds + note[1] + note[2] <= start + buffer + duration then
|
|
notes[#notes + 1] = { seconds + note[1], note[2], note[3] }
|
|
finish = math.max(finish, seconds + note[1] + note[2])
|
|
total = total + note[2]
|
|
end
|
|
end
|
|
local done = false
|
|
local face_note = nil
|
|
local face = nil
|
|
local score = 0
|
|
local hint_progress = accessor.rhythm and 3 or 0
|
|
local hint_time = 0
|
|
local prog = 0
|
|
local time = start
|
|
local canvas = love.graphics.newCanvas(ST.width, ST.height)
|
|
local emotion = __TS__New(STAnimation, {
|
|
frames = value.emotion,
|
|
anchor = 0.5,
|
|
direction = 1,
|
|
priority = -99,
|
|
color = value.color
|
|
}):addTicker(function(self)
|
|
self.alpha.value = wrapper.alpha.value * stargate.alpha.value * 0.2
|
|
end)
|
|
local gvalue = __TS__New(STValue, 1)
|
|
local function flare_ticker(self)
|
|
if self.metadata then
|
|
self.alpha.value = 1
|
|
self.direction = 1
|
|
else
|
|
self.direction = 0
|
|
local ____temp_8 = not done and self.alpha.value > 0
|
|
if ____temp_8 then
|
|
local ____self_alpha_5, ____value_6 = self.alpha, "value"
|
|
local ____self_alpha_value_7 = ____self_alpha_5[____value_6] - 0.1
|
|
____self_alpha_5[____value_6] = ____self_alpha_value_7
|
|
____temp_8 = ____self_alpha_value_7 < 0
|
|
end
|
|
if ____temp_8 then
|
|
self.alpha.value = 0
|
|
self.frame = 0
|
|
self.step = 0
|
|
end
|
|
end
|
|
end
|
|
local flare_down = __TS__New(STAnimation, {
|
|
alpha = 0,
|
|
priority = 5,
|
|
metadata = false,
|
|
anchor = { y = 0.5 },
|
|
frames = assets["ig$rhythm$flare"],
|
|
position = { y = 20 },
|
|
rotation = 90
|
|
}):addTicker(flare_ticker)
|
|
local flare_down_left = __TS__New(STAnimation, {
|
|
alpha = 0,
|
|
priority = 5,
|
|
metadata = false,
|
|
frames = assets["ig$rhythm$flare_diag"],
|
|
position = { x = -8, y = 8 },
|
|
rotation = 90
|
|
}):addTicker(flare_ticker)
|
|
local flare_down_right = __TS__New(STAnimation, {
|
|
alpha = 0,
|
|
priority = 5,
|
|
metadata = false,
|
|
frames = assets["ig$rhythm$flare_diag"],
|
|
position = 8
|
|
}):addTicker(flare_ticker)
|
|
local flare_left = __TS__New(STAnimation, {
|
|
alpha = 0,
|
|
priority = 5,
|
|
metadata = false,
|
|
anchor = { y = 0.5 },
|
|
frames = assets["ig$rhythm$flare"],
|
|
position = { x = -20 },
|
|
rotation = 180
|
|
}):addTicker(flare_ticker)
|
|
local flare_right = __TS__New(STAnimation, {
|
|
alpha = 0,
|
|
priority = 5,
|
|
metadata = false,
|
|
anchor = { y = 0.5 },
|
|
frames = assets["ig$rhythm$flare"],
|
|
position = { x = 20 }
|
|
}):addTicker(flare_ticker)
|
|
local flare_up = __TS__New(STAnimation, {
|
|
alpha = 0,
|
|
priority = 5,
|
|
metadata = false,
|
|
anchor = { y = 0.5 },
|
|
frames = assets["ig$rhythm$flare"],
|
|
position = { y = -20 },
|
|
rotation = 270
|
|
}):addTicker(flare_ticker)
|
|
local flare_up_left = __TS__New(STAnimation, {
|
|
alpha = 0,
|
|
priority = 5,
|
|
metadata = false,
|
|
frames = assets["ig$rhythm$flare_diag"],
|
|
position = { x = -8, y = -8 },
|
|
rotation = 180
|
|
}):addTicker(flare_ticker)
|
|
local flare_up_right = __TS__New(STAnimation, {
|
|
alpha = 0,
|
|
priority = 5,
|
|
metadata = false,
|
|
frames = assets["ig$rhythm$flare_diag"],
|
|
position = { x = 8, y = -8 },
|
|
rotation = 270
|
|
}):addTicker(flare_ticker)
|
|
local joystick = __TS__New(STAnimation, {
|
|
anchor = 0.5,
|
|
direction = 1,
|
|
frames = assets["ig$rhythm$joystick_neutral1"],
|
|
priority = 6,
|
|
metadata = { x = nil, y = nil, c = 15 }
|
|
}):addTicker(function(self)
|
|
local idx = math.floor(ST:remap(
|
|
score / total,
|
|
0,
|
|
6,
|
|
prog == 0 and 0 or actions[prog][1],
|
|
actions[prog + 1][1]
|
|
))
|
|
local d = false
|
|
local r = 0
|
|
local x = 0
|
|
local y = 0
|
|
repeat
|
|
local ____switch45 = face
|
|
local ____cond45 = ____switch45 == STFacing.DOWN
|
|
if ____cond45 then
|
|
r = 90
|
|
y = 1
|
|
break
|
|
end
|
|
____cond45 = ____cond45 or ____switch45 == STFacing.DOWN_LEFT
|
|
if ____cond45 then
|
|
d = true
|
|
r = 90
|
|
x = -0.7071067811865476
|
|
y = 0.7071067811865476
|
|
break
|
|
end
|
|
____cond45 = ____cond45 or ____switch45 == STFacing.DOWN_RIGHT
|
|
if ____cond45 then
|
|
d = true
|
|
x = 0.7071067811865476
|
|
y = 0.7071067811865476
|
|
break
|
|
end
|
|
____cond45 = ____cond45 or ____switch45 == STFacing.LEFT
|
|
if ____cond45 then
|
|
r = 180
|
|
x = -1
|
|
break
|
|
end
|
|
____cond45 = ____cond45 or ____switch45 == STFacing.RIGHT
|
|
if ____cond45 then
|
|
x = 1
|
|
break
|
|
end
|
|
____cond45 = ____cond45 or ____switch45 == STFacing.UP
|
|
if ____cond45 then
|
|
r = 270
|
|
y = -1
|
|
break
|
|
end
|
|
____cond45 = ____cond45 or ____switch45 == STFacing.UP_LEFT
|
|
if ____cond45 then
|
|
d = true
|
|
r = 180
|
|
x = -0.7071067811865476
|
|
y = -0.7071067811865476
|
|
break
|
|
end
|
|
____cond45 = ____cond45 or ____switch45 == STFacing.UP_RIGHT
|
|
if ____cond45 then
|
|
d = true
|
|
r = 270
|
|
x = 0.7071067811865476
|
|
y = -0.7071067811865476
|
|
break
|
|
end
|
|
until true
|
|
x = x * (11 - idx)
|
|
y = y * (11 - idx)
|
|
if self.metadata.x == nil or self.metadata.y == nil then
|
|
self.metadata.x = x
|
|
self.metadata.y = y
|
|
end
|
|
self.metadata.x = (self.metadata.x + x * 2) / 3
|
|
self.metadata.y = (self.metadata.y + y * 2) / 3
|
|
self.position.x = math.floor(self.metadata.x + 0.5)
|
|
self.position.y = math.floor(self.metadata.y + 0.5)
|
|
self.rotation.value = r
|
|
if face_note ~= nil and face == face_note then
|
|
if not done then
|
|
self.metadata.c = 0
|
|
end
|
|
if d then
|
|
repeat
|
|
local ____switch50 = idx
|
|
local ____cond50 = ____switch50 == 0
|
|
if ____cond50 then
|
|
self.frames = assets["ig$rhythm$joystick_diagonal1"]
|
|
break
|
|
end
|
|
____cond50 = ____cond50 or ____switch50 == 1
|
|
if ____cond50 then
|
|
self.frames = assets["ig$rhythm$joystick_diagonal2"]
|
|
break
|
|
end
|
|
____cond50 = ____cond50 or ____switch50 == 2
|
|
if ____cond50 then
|
|
self.frames = assets["ig$rhythm$joystick_diagonal3"]
|
|
break
|
|
end
|
|
____cond50 = ____cond50 or ____switch50 == 3
|
|
if ____cond50 then
|
|
self.frames = assets["ig$rhythm$joystick_diagonal4"]
|
|
break
|
|
end
|
|
____cond50 = ____cond50 or ____switch50 == 4
|
|
if ____cond50 then
|
|
self.frames = assets["ig$rhythm$joystick_diagonal5"]
|
|
break
|
|
end
|
|
____cond50 = ____cond50 or ____switch50 == 5
|
|
if ____cond50 then
|
|
self.frames = assets["ig$rhythm$joystick_diagonal6"]
|
|
break
|
|
end
|
|
until true
|
|
else
|
|
repeat
|
|
local ____switch52 = idx
|
|
local ____cond52 = ____switch52 == 0
|
|
if ____cond52 then
|
|
self.frames = assets["ig$rhythm$joystick_cardinal1"]
|
|
break
|
|
end
|
|
____cond52 = ____cond52 or ____switch52 == 1
|
|
if ____cond52 then
|
|
self.frames = assets["ig$rhythm$joystick_cardinal2"]
|
|
break
|
|
end
|
|
____cond52 = ____cond52 or ____switch52 == 2
|
|
if ____cond52 then
|
|
self.frames = assets["ig$rhythm$joystick_cardinal3"]
|
|
break
|
|
end
|
|
____cond52 = ____cond52 or ____switch52 == 3
|
|
if ____cond52 then
|
|
self.frames = assets["ig$rhythm$joystick_cardinal4"]
|
|
break
|
|
end
|
|
____cond52 = ____cond52 or ____switch52 == 4
|
|
if ____cond52 then
|
|
self.frames = assets["ig$rhythm$joystick_cardinal5"]
|
|
break
|
|
end
|
|
____cond52 = ____cond52 or ____switch52 == 5
|
|
if ____cond52 then
|
|
self.frames = assets["ig$rhythm$joystick_cardinal6"]
|
|
break
|
|
end
|
|
until true
|
|
end
|
|
else
|
|
repeat
|
|
local ____switch54 = idx
|
|
local ____cond54 = ____switch54 == 0
|
|
if ____cond54 then
|
|
self.frames = assets["ig$rhythm$joystick_neutral1"]
|
|
break
|
|
end
|
|
____cond54 = ____cond54 or ____switch54 == 1
|
|
if ____cond54 then
|
|
self.frames = assets["ig$rhythm$joystick_neutral2"]
|
|
break
|
|
end
|
|
____cond54 = ____cond54 or ____switch54 == 2
|
|
if ____cond54 then
|
|
self.frames = assets["ig$rhythm$joystick_neutral3"]
|
|
break
|
|
end
|
|
____cond54 = ____cond54 or ____switch54 == 3
|
|
if ____cond54 then
|
|
self.frames = assets["ig$rhythm$joystick_neutral4"]
|
|
break
|
|
end
|
|
____cond54 = ____cond54 or ____switch54 == 4
|
|
if ____cond54 then
|
|
self.frames = assets["ig$rhythm$joystick_neutral5"]
|
|
break
|
|
end
|
|
____cond54 = ____cond54 or ____switch54 == 5
|
|
if ____cond54 then
|
|
self.frames = assets["ig$rhythm$joystick_neutral6"]
|
|
break
|
|
end
|
|
until true
|
|
end
|
|
local c = ST:remap(self.metadata.c / 15, 255, 127)
|
|
self.color.red = c
|
|
self.color.green = c
|
|
self.color.blue = c
|
|
if not done and self.metadata.c < 15 then
|
|
local ____self_metadata_9, ____c_10 = self.metadata, "c"
|
|
____self_metadata_9[____c_10] = ____self_metadata_9[____c_10] + 1
|
|
end
|
|
end)
|
|
local map = screen:scan(function(c) return __TS__InstanceOf(c, STMap) end):next().value
|
|
local rgb = ST:hex2rgb(value.color)
|
|
stargate = __TS__New(
|
|
STContainer,
|
|
{
|
|
scale = 0.9,
|
|
color = ST:hex2rgb(12566463),
|
|
metadata = nil,
|
|
children = {
|
|
__TS__New(STSprite, { image = assets["ig$rhythm$backdrop"], anchor = 0.5 }):addTicker(function(
|
|
self)
|
|
self.scale.x = 1 / stargate.scale.x
|
|
self.scale.y = 1 / stargate.scale.y
|
|
end),
|
|
__TS__New(STSprite,
|
|
{ image = assets["ig$rhythm$circle"], anchor = 0.5, metadata = 15, priority = 2 })
|
|
:addTicker(function(self)
|
|
if not done and face_note ~= nil and face ~= face_note then
|
|
self.metadata = 0
|
|
end
|
|
local c = ST:remap(self.metadata / 15, 255, 127)
|
|
self.color.red = c
|
|
self.color.green = c
|
|
self.color.blue = c
|
|
if not done and self.metadata < 15 then
|
|
self.metadata = self.metadata + 1
|
|
end
|
|
end),
|
|
flare_down,
|
|
flare_down_left,
|
|
flare_down_right,
|
|
flare_left,
|
|
flare_right,
|
|
flare_up,
|
|
flare_up_left,
|
|
flare_up_right,
|
|
__TS__New(STContainer, { priority = 4 }):addDrawer(function(self)
|
|
local color = { love.graphics.getColor() }
|
|
local canvas2 = { love.graphics.getCanvas() }
|
|
love.graphics.setColor(1, 1, 1, 1)
|
|
love.graphics.setCanvas(canvas)
|
|
love.graphics.clear(0, 0, 0, 0)
|
|
love.graphics.push()
|
|
love.graphics.replaceTransform(love.math.newTransform(
|
|
ST.width / 2 + stargate.position.x,
|
|
ST.height / 2 + stargate.position.y,
|
|
0,
|
|
stargate.scale.x,
|
|
stargate.scale.y
|
|
))
|
|
for ____, note in ipairs(notes) do
|
|
if note[1] <= time + 50 and time < note[1] + note[2] then
|
|
local offset = math.floor(math.max(0, note[1] - time) * 4 + 0.5)
|
|
local length = math.floor(math.min(
|
|
note[2],
|
|
math.max(0, note[1] + note[2] - time)
|
|
) * 4 + 0.5)
|
|
repeat
|
|
local ____switch72 = note[3]
|
|
local ____cond72 = ____switch72 == STFacing.DOWN
|
|
if ____cond72 then
|
|
love.graphics.rectangle(
|
|
"line",
|
|
-1.5,
|
|
21.5 + offset,
|
|
3,
|
|
length
|
|
)
|
|
break
|
|
end
|
|
____cond72 = ____cond72 or ____switch72 == STFacing.DOWN_LEFT
|
|
if ____cond72 then
|
|
do
|
|
local x = math.floor(-15 - offset * 0.7071067811865476 + 0.5)
|
|
local y = math.floor(15 + offset * 0.7071067811865476 + 0.5)
|
|
local l = math.floor(length * 0.7071067811865476 + 0.5)
|
|
love.graphics.line(
|
|
x - 1.5,
|
|
y - 1.5,
|
|
x + 1.5,
|
|
y + 1.5,
|
|
x - l + 1.5,
|
|
y + l + 1.5,
|
|
x - l - 1.5,
|
|
y + l - 1.5,
|
|
x - 1.5,
|
|
y - 1.5
|
|
)
|
|
break
|
|
end
|
|
end
|
|
____cond72 = ____cond72 or ____switch72 == STFacing.DOWN_RIGHT
|
|
if ____cond72 then
|
|
do
|
|
local x = math.floor(15 + offset * 0.7071067811865476 + 0.5)
|
|
local y = math.floor(15 + offset * 0.7071067811865476 + 0.5)
|
|
local l = math.floor(length * 0.7071067811865476 + 0.5)
|
|
love.graphics.line(
|
|
x + 1.5,
|
|
y - 1.5,
|
|
x + l + 1.5,
|
|
y + l - 1.5,
|
|
x + l - 1.5,
|
|
y + l + 1.5,
|
|
x - 1.5,
|
|
y + 1.5,
|
|
x + 1.5,
|
|
y - 1.5
|
|
)
|
|
break
|
|
end
|
|
end
|
|
____cond72 = ____cond72 or ____switch72 == STFacing.LEFT
|
|
if ____cond72 then
|
|
love.graphics.rectangle(
|
|
"line",
|
|
-21.5 - offset - length,
|
|
-1.5,
|
|
length,
|
|
3
|
|
)
|
|
break
|
|
end
|
|
____cond72 = ____cond72 or ____switch72 == STFacing.RIGHT
|
|
if ____cond72 then
|
|
love.graphics.rectangle(
|
|
"line",
|
|
21.5 + offset,
|
|
-1.5,
|
|
length,
|
|
3
|
|
)
|
|
break
|
|
end
|
|
____cond72 = ____cond72 or ____switch72 == STFacing.UP
|
|
if ____cond72 then
|
|
love.graphics.rectangle(
|
|
"line",
|
|
-1.5,
|
|
-21.5 - offset - length,
|
|
3,
|
|
length
|
|
)
|
|
break
|
|
end
|
|
____cond72 = ____cond72 or ____switch72 == STFacing.UP_LEFT
|
|
if ____cond72 then
|
|
do
|
|
local x = math.floor(-15 - offset * 0.7071067811865476 + 0.5)
|
|
local y = math.floor(-15 - offset * 0.7071067811865476 + 0.5)
|
|
local l = math.floor(length * 0.7071067811865476 + 0.5)
|
|
love.graphics.line(
|
|
x - l + 1.5,
|
|
y - l - 1.5,
|
|
x + 1.5,
|
|
y - 1.5,
|
|
x - 1.5,
|
|
y + 1.5,
|
|
x - l - 1.5,
|
|
y - l + 1.5,
|
|
x - l + 1.5,
|
|
y - l - 1.5
|
|
)
|
|
break
|
|
end
|
|
end
|
|
____cond72 = ____cond72 or ____switch72 == STFacing.UP_RIGHT
|
|
if ____cond72 then
|
|
do
|
|
local x = math.floor(15 + offset * 0.7071067811865476 + 0.5)
|
|
local y = math.floor(-15 - offset * 0.7071067811865476 + 0.5)
|
|
local l = math.floor(length * 0.7071067811865476 + 0.5)
|
|
love.graphics.line(
|
|
x + l - 1.5,
|
|
y - l - 1.5,
|
|
x + l + 1.5,
|
|
y - l + 1.5,
|
|
x + 1.5,
|
|
y + 1.5,
|
|
x - 1.5,
|
|
y - 1.5,
|
|
x + l - 1.5,
|
|
y - l - 1.5
|
|
)
|
|
break
|
|
end
|
|
end
|
|
until true
|
|
end
|
|
end
|
|
love.graphics.pop()
|
|
return function()
|
|
love.graphics.push()
|
|
love.graphics.replaceTransform(love.math.newTransform(
|
|
0,
|
|
0,
|
|
0,
|
|
ST.scale,
|
|
ST.scale
|
|
))
|
|
love.graphics.setCanvas(canvas2)
|
|
love.graphics.setColor(color)
|
|
love.graphics.draw(canvas)
|
|
love.graphics.pop()
|
|
end
|
|
end),
|
|
joystick
|
|
}
|
|
}
|
|
):addTicker(function(self)
|
|
if done then
|
|
if self.alpha.value > 0.01 then
|
|
self.alpha.value = self.alpha.value * 5 / 6
|
|
self.scale.x = (self.scale.x * 5 + 0.9) / 6
|
|
self.scale.y = (self.scale.y * 5 + 0.9) / 6
|
|
map.alpha.value = 1 - self.alpha.value / 4
|
|
map.scale.x = self.scale.x / 0.9
|
|
map.scale.y = self.scale.y / 0.9
|
|
local ev = { name = "gameplay_fade", value = 1 - self.alpha.value }
|
|
for ____, fn in ipairs(rhythm_hooks) do
|
|
fn(ev)
|
|
end
|
|
map:tick_position()
|
|
gvalue.value = 1 - self.alpha.value
|
|
else
|
|
wrapper:detach(stargate)
|
|
map.alpha.value = 1
|
|
map.scale.x = 1
|
|
map.scale.y = 1
|
|
local ev = { name = "gameplay_fade", value = 1 }
|
|
for ____, fn in ipairs(rhythm_hooks) do
|
|
fn(ev)
|
|
end
|
|
map:tick_position()
|
|
task1.complete()
|
|
end
|
|
end
|
|
end)
|
|
local task0 = ST:task()
|
|
task1 = ST:task()
|
|
wrapper = __TS__New(
|
|
STContainer,
|
|
{
|
|
alpha = 0,
|
|
metadata = { xord = {}, xpop = 0 },
|
|
children = {
|
|
stargate,
|
|
unpack(accessor.rhythm and ({}) or ({ __TS__New(STText, {
|
|
font = assets["f$helloplayer"],
|
|
color = 8355711,
|
|
anchor = 0.5,
|
|
position = { y = -70 },
|
|
scale = 0.75,
|
|
content = text.encounter1,
|
|
justify = 0.5
|
|
}):addTicker(function(self)
|
|
self.alpha.value = (3 <= hint_progress or hint_time < 90) and 0 or 1
|
|
if not done and face == nil then
|
|
hint_time = hint_time + 1
|
|
end
|
|
end) }))
|
|
}
|
|
}
|
|
):addTicker(function(self)
|
|
if self.alpha.value < 0.99 then
|
|
self.alpha.value = (self.alpha.value * 5 + 1) / 6
|
|
stargate.scale.x = (stargate.scale.x * 5 + 1) / 6
|
|
stargate.scale.y = (stargate.scale.y * 5 + 1) / 6
|
|
map.alpha.value = 1 - self.alpha.value / 3
|
|
map.scale.x = stargate.scale.x / 0.9
|
|
map.scale.y = stargate.scale.y / 0.9
|
|
local ev = { name = "gameplay_fade", value = 1 - self.alpha.value }
|
|
for ____, fn in ipairs(rhythm_hooks) do
|
|
fn(ev)
|
|
end
|
|
map:tick_position()
|
|
gvalue.value = 1 - self.alpha.value
|
|
elseif self.alpha.value ~= 1 then
|
|
self.alpha.value = 1
|
|
stargate.scale.x = 1
|
|
stargate.scale.y = 1
|
|
map.alpha.value = 2 / 3
|
|
map.scale.x = 1 / 0.9
|
|
map.scale.y = 1 / 0.9
|
|
local ev = { name = "gameplay_fade", value = 0 }
|
|
for ____, fn in ipairs(rhythm_hooks) do
|
|
fn(ev)
|
|
end
|
|
map:tick_position()
|
|
gvalue.value = 0
|
|
end
|
|
flare_down.metadata = false
|
|
flare_down_left.metadata = false
|
|
flare_down_right.metadata = false
|
|
flare_left.metadata = false
|
|
flare_right.metadata = false
|
|
flare_up.metadata = false
|
|
flare_up_left.metadata = false
|
|
flare_up_right.metadata = false
|
|
if done then
|
|
local ____inst_gain_13, ____value_14 = inst.gain, "value"
|
|
____inst_gain_13[____value_14] = ____inst_gain_13[____value_14] / 4
|
|
return
|
|
end
|
|
local shx = 0
|
|
local shy = 0
|
|
local pface = face
|
|
if inputs.up.held then
|
|
if inputs.left.held then
|
|
face = STFacing.UP_LEFT
|
|
shx = -1
|
|
shy = -1
|
|
elseif inputs.right.held then
|
|
face = STFacing.UP_RIGHT
|
|
shx = 1
|
|
shy = -1
|
|
else
|
|
face = STFacing.UP
|
|
shy = -1
|
|
end
|
|
elseif inputs.down.held then
|
|
if inputs.left.held then
|
|
face = STFacing.DOWN_LEFT
|
|
shx = -1
|
|
shy = 1
|
|
elseif inputs.right.held then
|
|
face = STFacing.DOWN_RIGHT
|
|
shx = 1
|
|
shy = 1
|
|
else
|
|
face = STFacing.DOWN
|
|
shy = 1
|
|
end
|
|
elseif inputs.left.held then
|
|
face = STFacing.LEFT
|
|
shx = -1
|
|
elseif inputs.right.held then
|
|
face = STFacing.RIGHT
|
|
shx = 1
|
|
else
|
|
face = nil
|
|
end
|
|
if pface ~= face and face ~= nil then
|
|
if 120 <= hint_time then
|
|
hint_progress = 3
|
|
else
|
|
hint_progress = hint_progress + 1
|
|
end
|
|
hint_time = 0
|
|
end
|
|
face_note = nil
|
|
for ____, note in ipairs(notes) do
|
|
do
|
|
if note[1] <= time and time < note[1] + note[2] then
|
|
face_note = note[3]
|
|
if face ~= face_note then
|
|
goto __continue110
|
|
end
|
|
repeat
|
|
local ____switch113 = note[3]
|
|
local ____cond113 = ____switch113 == STFacing.DOWN
|
|
if ____cond113 then
|
|
flare_down.metadata = true
|
|
break
|
|
end
|
|
____cond113 = ____cond113 or ____switch113 == STFacing.DOWN_LEFT
|
|
if ____cond113 then
|
|
flare_down_left.metadata = true
|
|
break
|
|
end
|
|
____cond113 = ____cond113 or ____switch113 == STFacing.DOWN_RIGHT
|
|
if ____cond113 then
|
|
flare_down_right.metadata = true
|
|
break
|
|
end
|
|
____cond113 = ____cond113 or ____switch113 == STFacing.LEFT
|
|
if ____cond113 then
|
|
flare_left.metadata = true
|
|
break
|
|
end
|
|
____cond113 = ____cond113 or ____switch113 == STFacing.RIGHT
|
|
if ____cond113 then
|
|
flare_right.metadata = true
|
|
break
|
|
end
|
|
____cond113 = ____cond113 or ____switch113 == STFacing.UP
|
|
if ____cond113 then
|
|
flare_up.metadata = true
|
|
break
|
|
end
|
|
____cond113 = ____cond113 or ____switch113 == STFacing.UP_LEFT
|
|
if ____cond113 then
|
|
flare_up_left.metadata = true
|
|
break
|
|
end
|
|
____cond113 = ____cond113 or ____switch113 == STFacing.UP_RIGHT
|
|
if ____cond113 then
|
|
flare_up_right.metadata = true
|
|
break
|
|
end
|
|
until true
|
|
end
|
|
end
|
|
::__continue110::
|
|
end
|
|
local x
|
|
local y
|
|
if face_note ~= nil then
|
|
if face == face_note then
|
|
local s = ST:wave(ST:remap(
|
|
score / total,
|
|
0,
|
|
6,
|
|
prog == 0 and 0 or actions[prog][1],
|
|
actions[prog + 1][1]
|
|
))
|
|
x = s * shx * -2
|
|
y = s * shy * -2
|
|
inst.gain.value = inst.daemon.gain
|
|
emotion.alpha.value = 0.3
|
|
else
|
|
x = math.random() * 2 - 1
|
|
y = math.random() * 2 - 1
|
|
local ____inst_gain_15, ____value_16 = inst.gain, "value"
|
|
____inst_gain_15[____value_16] = ____inst_gain_15[____value_16] / 4
|
|
local ____emotion_alpha_17, ____value_18 = emotion.alpha, "value"
|
|
____emotion_alpha_17[____value_18] = ____emotion_alpha_17[____value_18] - 0.05 / 15
|
|
if emotion.alpha.value < 0.25 then
|
|
emotion.alpha.value = 0.25
|
|
end
|
|
end
|
|
else
|
|
x = 0
|
|
y = 0
|
|
local ____emotion_alpha_19, ____value_20 = emotion.alpha, "value"
|
|
____emotion_alpha_19[____value_20] = ____emotion_alpha_19[____value_20] - 0.05 / 15
|
|
if emotion.alpha.value < 0.2 then
|
|
emotion.alpha.value = 0.2
|
|
end
|
|
end
|
|
if stargate.metadata == nil then
|
|
stargate.metadata = { x, y }
|
|
end
|
|
stargate.metadata[1] = (stargate.metadata[1] + x * 2) / 3
|
|
stargate.metadata[2] = (stargate.metadata[2] + y * 2) / 3
|
|
stargate.position.x = math.floor(stargate.metadata[1] + 0.5)
|
|
stargate.position.y = math.floor(stargate.metadata[2] + 0.5)
|
|
end):addDrawer(function(self)
|
|
local c = { love.graphics.getColor() }
|
|
love.graphics.setColor(
|
|
ST:remap(stargate.alpha.value, c[1], rgb.red / 255),
|
|
ST:remap(stargate.alpha.value, c[2], rgb.green / 255),
|
|
ST:remap(stargate.alpha.value, c[3], rgb.blue / 255),
|
|
c[4]
|
|
)
|
|
return function()
|
|
if not done then
|
|
time = time + value.rate
|
|
local ____temp_12 = face_note ~= nil and face == face_note
|
|
if ____temp_12 then
|
|
local ____actions_index__1_11 = actions[prog + 1][1]
|
|
score = score + 1
|
|
____temp_12 = ____actions_index__1_11 <= score / total
|
|
end
|
|
if ____temp_12 then
|
|
xgen()
|
|
end
|
|
if finish <= time or prog == #actions then
|
|
done = true
|
|
if 3 <= hint_progress then
|
|
accessor.rhythm = true
|
|
else
|
|
hint_progress = 3
|
|
end
|
|
joystick.direction = 0
|
|
if prog == #actions then
|
|
stargate:detach(joystick)
|
|
end
|
|
end
|
|
end
|
|
if done and task0.active and wrapper.metadata.xpop == 0 then
|
|
task0.complete()
|
|
end
|
|
love.graphics.setColor(c)
|
|
end
|
|
end)
|
|
xgen = function(insta)
|
|
if insta == nil then
|
|
insta = false
|
|
end
|
|
if not insta then
|
|
local ____wrapper_metadata_21, ____xpop_22 = wrapper.metadata, "xpop"
|
|
____wrapper_metadata_21[____xpop_22] = ____wrapper_metadata_21[____xpop_22] + 1
|
|
local ev = { name = "action_unlock" }
|
|
for ____, fn in ipairs(rhythm_hooks) do
|
|
fn(ev)
|
|
end
|
|
end
|
|
local ex = 0
|
|
local ty = 0
|
|
local ____prog_23 = prog
|
|
prog = ____prog_23 + 1
|
|
local action = actions[____prog_23 + 1]
|
|
local diag = joystick.frames == assets["ig$rhythm$joystick_diagonal6"]
|
|
while ex < #wrapper.metadata.xord and wrapper.metadata.xord[ex + 1] < action[2] do
|
|
ex = ex + 1
|
|
end
|
|
__TS__ArraySplice(wrapper.metadata.xord, ex, 0, action[2])
|
|
local xfade = __TS__New(STAnimation, {
|
|
direction = 1,
|
|
anchor = 0.5,
|
|
frames = joystick.frames,
|
|
step = joystick.step,
|
|
frame = joystick.frame,
|
|
rotation = joystick.rotation.value
|
|
})
|
|
local xtext = __TS__New(STText, {
|
|
position = { x = 0.5 },
|
|
metadata = 0,
|
|
alpha = 0,
|
|
font = assets["f$fives"],
|
|
anchor = 0.5
|
|
})
|
|
local xwrapper = __TS__New(
|
|
STContainer,
|
|
{
|
|
alpha = insta and 0 or 1,
|
|
metadata = { c = 0, w = 0 },
|
|
children = {
|
|
__TS__New(STSprite,
|
|
{ anchor = { x = 1, y = 0.5 }, image = assets["ig$rhythm$expand_side"] }),
|
|
__TS__New(STSprite, { anchor = 0.5, image = assets["ig$rhythm$expand_middle"] }),
|
|
__TS__New(STSprite,
|
|
{ anchor = { x = 1, y = 0.5 }, image = assets["ig$rhythm$expand_side"], scale = -1 }),
|
|
xtext
|
|
}
|
|
}
|
|
):addTicker(function(self)
|
|
if self.alpha.value < 0.99 then
|
|
self.alpha.value = (self.alpha.value * 3 + 1) / 4
|
|
elseif self.alpha.value ~= 1 then
|
|
self.alpha.value = 1
|
|
end
|
|
local w = math.max(self.metadata.w - 10, 4)
|
|
self.children[1].position.x = w / -2
|
|
self.children[2].scale.x = w
|
|
self.children[3].position.x = w / 2
|
|
self.children[4].scale.x = self.metadata.w / xtext.metadata
|
|
if self.children[4].alpha.value < 1 then
|
|
local ____self_children__4_alpha_24, ____value_25 = self.children[4].alpha, "value"
|
|
local ____self_children__4_alpha_value_26 = ____self_children__4_alpha_24[____value_25] +
|
|
0.1
|
|
____self_children__4_alpha_24[____value_25] = ____self_children__4_alpha_value_26
|
|
if ____self_children__4_alpha_value_26 > 1 then
|
|
self.children[4].alpha.value = 1
|
|
end
|
|
end
|
|
if atlas.target == "choicer_horiz" and atlas.navigators.choicer_horiz.position.x == __TS__ArrayIndexOf(wrapper.metadata.xord, action[2]) then
|
|
self.color.red = 162
|
|
self.color.green = 137
|
|
self.color.blue = 220
|
|
elseif atlas.target == nil or atlas.target == "choicer_horiz" then
|
|
local c = ST:remap(self.metadata.c, 127, 255)
|
|
self.color.red = c
|
|
self.color.green = c
|
|
self.color.blue = c
|
|
else
|
|
self.color.red = 63
|
|
self.color.green = 63
|
|
self.color.blue = 63
|
|
end
|
|
end)
|
|
if not insta then
|
|
local vy = -4
|
|
local py = joystick.position.y + stargate.position.y
|
|
while py < 70 do
|
|
vy = vy + 0.4
|
|
py = py + vy
|
|
ty = ty + (vy - math.max(py - 70, 0)) / vy
|
|
end
|
|
assets["s$ry_split"]:instance({ rate = 0.9 + math.random() * 0.2 })
|
|
end
|
|
local tf = insta and 0 or math.ceil(ty) - 1
|
|
local dx = ST:spread_quantize(120, action[2], #actions)
|
|
local ____wrapper_attach_44 = wrapper.attach
|
|
local ____STAnimation_43 = STAnimation
|
|
local ____temp_40 = insta and 0.7 or nil
|
|
local ____temp_41 = { time = 0, squish_time = 0 }
|
|
local ____temp_42 = insta and ({ x = dx, y = 70 }) or joystick.position:add(stargate.position)
|
|
local ____insta_38
|
|
if insta then
|
|
____insta_38 = nil
|
|
else
|
|
____insta_38 = { y = 0.4 }
|
|
end
|
|
local ____insta_39
|
|
if insta then
|
|
____insta_39 = nil
|
|
else
|
|
____insta_39 = { x = (dx - (joystick.position.x + stargate.position.x)) / ty, y = -4 }
|
|
end
|
|
____wrapper_attach_44(
|
|
wrapper,
|
|
__TS__New(____STAnimation_43, {
|
|
alpha = ____temp_40,
|
|
anchor = 0.5,
|
|
metadata = ____temp_41,
|
|
position = ____temp_42,
|
|
gravity = ____insta_38,
|
|
priority = 2,
|
|
velocity = ____insta_39,
|
|
children = insta and ({ xwrapper }) or ({ xfade })
|
|
}):addTicker(function(self)
|
|
local mt = self.metadata.time
|
|
if mt < tf then
|
|
local wave = ST:remap(mt / tf, 1.2, 1)
|
|
self.scale.x = ST:remap(
|
|
ST:wave(mt / tf),
|
|
1 / wave,
|
|
wave
|
|
)
|
|
self.scale.y = ST:remap(
|
|
ST:wave(0.5 + mt / tf),
|
|
1 / wave,
|
|
wave
|
|
)
|
|
xfade.alpha.value = (1 - mt / tf) ^ 2
|
|
self.alpha.value = ST:remap(mt / tf, 1, 0.7)
|
|
repeat
|
|
local ____switch142 = math.floor((1 - (1 - mt / tf) ^ 3) * 6)
|
|
local ____cond142 = ____switch142 == 0
|
|
if ____cond142 then
|
|
self.frames = assets["ig$rhythm$joystick_neutral6"]
|
|
xfade.frames = diag and assets["ig$rhythm$joystick_diagonal6"] or
|
|
assets["ig$rhythm$joystick_cardinal6"]
|
|
break
|
|
end
|
|
____cond142 = ____cond142 or ____switch142 == 1
|
|
if ____cond142 then
|
|
self.frames = assets["ig$rhythm$joystick_neutral5"]
|
|
xfade.frames = diag and assets["ig$rhythm$joystick_diagonal5"] or
|
|
assets["ig$rhythm$joystick_cardinal5"]
|
|
break
|
|
end
|
|
____cond142 = ____cond142 or ____switch142 == 2
|
|
if ____cond142 then
|
|
self.frames = assets["ig$rhythm$joystick_neutral4"]
|
|
xfade.frames = diag and assets["ig$rhythm$joystick_diagonal4"] or
|
|
assets["ig$rhythm$joystick_cardinal4"]
|
|
break
|
|
end
|
|
____cond142 = ____cond142 or ____switch142 == 3
|
|
if ____cond142 then
|
|
self.frames = assets["ig$rhythm$joystick_neutral3"]
|
|
xfade.frames = diag and assets["ig$rhythm$joystick_diagonal3"] or
|
|
assets["ig$rhythm$joystick_cardinal3"]
|
|
break
|
|
end
|
|
____cond142 = ____cond142 or ____switch142 == 4
|
|
if ____cond142 then
|
|
self.frames = assets["ig$rhythm$joystick_neutral2"]
|
|
xfade.frames = diag and assets["ig$rhythm$joystick_diagonal2"] or
|
|
assets["ig$rhythm$joystick_cardinal2"]
|
|
break
|
|
end
|
|
____cond142 = ____cond142 or ____switch142 == 5
|
|
if ____cond142 then
|
|
self.frames = assets["ig$rhythm$joystick_neutral1"]
|
|
xfade.frames = diag and assets["ig$rhythm$joystick_diagonal1"] or
|
|
assets["ig$rhythm$joystick_cardinal1"]
|
|
break
|
|
end
|
|
until true
|
|
elseif mt < tf + 7 then
|
|
if self.gravity.y ~= 0 then
|
|
self:attach(__TS__New(STAnimation, {
|
|
anchor = 0.5,
|
|
frames = assets["ig$rhythm$joystick_neutral1"],
|
|
gravity = { y = 0.5 },
|
|
velocity = { x = self.velocity.x * 0.75, y = self.velocity.y / -2 },
|
|
priority = 5000000
|
|
}):addTicker(function(self)
|
|
local ____self_alpha_27, ____value_28 = self.alpha, "value"
|
|
local ____self_alpha_value_29 = ____self_alpha_27[____value_28] - 0.1
|
|
____self_alpha_27[____value_28] = ____self_alpha_value_29
|
|
if ____self_alpha_value_29 <= 0 then
|
|
self.parent:detach(self)
|
|
else
|
|
local ____self_scale_30, ____x_31 = self.scale, "x"
|
|
____self_scale_30[____x_31] = ____self_scale_30[____x_31] * 1.08
|
|
local ____self_scale_32, ____y_33 = self.scale, "y"
|
|
____self_scale_32[____y_33] = ____self_scale_32[____y_33] * 1.08
|
|
end
|
|
end))
|
|
self.gravity.y = 0
|
|
self.velocity.x = 0
|
|
self.velocity.y = 0
|
|
self.position.x = dx
|
|
self.position.y = 70
|
|
self.scale.x = 1
|
|
self.scale.y = 1
|
|
self.frames = nil
|
|
self:detach(xfade)
|
|
self:attach(xwrapper)
|
|
local ____wrapper_metadata_34, ____xpop_35 = wrapper.metadata, "xpop"
|
|
____wrapper_metadata_34[____xpop_35] = ____wrapper_metadata_34[____xpop_35] - 1
|
|
self.alpha.value = 0.7
|
|
assets["s$ry_bounce"]:instance({ rate = 0.9 + math.random() * 0.2 })
|
|
end
|
|
if task0.active then
|
|
return
|
|
end
|
|
if mt == tf then
|
|
xtext.content = action[3]
|
|
xtext.metadata = assets["f$fives"]:compute(action[3]).x + 10
|
|
end
|
|
xwrapper.metadata.c = (mt - tf) / 7
|
|
xwrapper.metadata.w = ST:remap(
|
|
ST:bezier((mt - tf) / 7, 0, 1.05, 1),
|
|
14,
|
|
xtext.metadata
|
|
)
|
|
elseif mt == tf + 7 then
|
|
xwrapper.metadata.c = 1
|
|
xtext.metadata = xtext.metadata
|
|
else
|
|
return
|
|
end
|
|
local ____self_metadata_36, ____time_37 = self.metadata, "time"
|
|
____self_metadata_36[____time_37] = ____self_metadata_36[____time_37] + 1
|
|
end):addDrawer(function(self)
|
|
local v = math.min(self.metadata.time / tf, 1)
|
|
local color = { love.graphics.getColor() }
|
|
love.graphics.setColor(
|
|
ST:remap(v, color[1], 1),
|
|
ST:remap(v, color[2], 1),
|
|
ST:remap(v, color[3], 1),
|
|
color[4]
|
|
)
|
|
end):addDrawer(batch.drawer)
|
|
)
|
|
end
|
|
while actions[prog + 1][1] == 0 do
|
|
xgen(true)
|
|
end
|
|
rhythm_container:attach(wrapper)
|
|
screen:attach(rhythm_container, emotion)
|
|
__TS__Await(task0)
|
|
score = math.floor(score / total * 1000 + 0.5) / 1000
|
|
local choices = __TS__ArrayFilter(
|
|
actions,
|
|
function(____, action) return action[1] <= score end
|
|
)
|
|
table.sort(
|
|
choices,
|
|
function(a, b) return a[2] < b[2] end
|
|
)
|
|
game.h_len = #choices
|
|
local ____opt_result_47
|
|
if script ~= nil then
|
|
____opt_result_47 = script()
|
|
end
|
|
__TS__Await(____opt_result_47)
|
|
local task2 = ST:task()
|
|
game.h_task = task2
|
|
atlas:switch("choicer_horiz")
|
|
local ____self_48 = __TS__PromiseAll({ task1, task2 })
|
|
____self_48["then"](
|
|
____self_48,
|
|
function()
|
|
rhythm_container:clear()
|
|
screen:detach(rhythm_container, emotion)
|
|
canvas:release()
|
|
end
|
|
)
|
|
__TS__Await(task2)
|
|
game.h_task = nil
|
|
game.h_len = 0
|
|
__TS__Await(value.actions[choices[atlas.navigators.choicer_horiz.position.x + 1][4] + 1][3](
|
|
function(progression)
|
|
for key in pairs(progression) do
|
|
state[key] = math.floor(((state[key] or 0) + progression[key]) * 1000 + 0.5) / 1000
|
|
end
|
|
local max = 0
|
|
local max_stage = nil
|
|
for key in pairs(state) do
|
|
do
|
|
if state[key] < 1 then
|
|
goto __continue159
|
|
end
|
|
local power = progression[key]
|
|
if power > max then
|
|
max = power
|
|
max_stage = key
|
|
end
|
|
end
|
|
::__continue159::
|
|
end
|
|
if max_stage ~= nil then
|
|
stage = max_stage
|
|
for key in pairs(state) do
|
|
__TS__Delete(state, key)
|
|
end
|
|
for ____, instance in __TS__Iterator(music:values()) do
|
|
instance:stop()
|
|
end
|
|
music:clear()
|
|
local ev = { name = "stage_update", stage = stage }
|
|
for ____, fn in ipairs(rhythm_hooks) do
|
|
fn(ev)
|
|
end
|
|
end
|
|
end,
|
|
state
|
|
))
|
|
end
|
|
game.encounter = false
|
|
end)
|
|
end
|
|
}
|
|
rhythm_container = __TS__New(STContainer, { priority = 20 })
|
|
rhythm_hooks = {}
|
|
text = textGen()
|
|
return { rhythm = rhythm, rhythm_container = rhythm_container, rhythm_hooks = rhythm_hooks, text = text }
|
|
end
|
|
____exports.default = rhythm
|
|
return ____exports
|