73 lines
1.7 KiB
Lua
73 lines
1.7 KiB
Lua
state_wonround=klass()
|
|
function state_wonround:init(board)
|
|
self.board=board
|
|
self.frame=0
|
|
self.frames=30
|
|
self.progress=0.0
|
|
self.card=self.board:get_endgame_card()
|
|
self.verse_id,self.verse_name,self.verse=liturgy:suggest_verse(self.board.ruleset,self.card)
|
|
end
|
|
seen_tip_this_session=false
|
|
function state_wonround:enter()
|
|
completion_tracker:mark_seen(self.verse_id)
|
|
completion_tracker:advance_completion_level(self.board:get_completion_level())
|
|
self.has_tip = not seen_tip_this_session
|
|
seen_tip_this_session=true
|
|
end
|
|
function state_wonround:exit(new_top) end
|
|
|
|
function state_wonround:reenter() end
|
|
function state_wonround:suspend() end
|
|
|
|
|
|
function state_wonround:update()
|
|
self.frame=min(self.frame+1,self.frames)
|
|
self.progress=self.frame/self.frames
|
|
self.board:set_restart_progress(self.progress)
|
|
|
|
if (self.progress<1.0) return
|
|
if (btnp(4)) self.done=true
|
|
end
|
|
function state_wonround:draw()
|
|
cls(13)
|
|
if self.progress<1.0 then
|
|
self.board:draw()
|
|
return
|
|
end
|
|
|
|
self.board.ruleset.deck:draw_card(0,0,self.card,{})
|
|
poke(0x5f54,0x60)
|
|
-- blow it up
|
|
sspr(0,0,9,16,55,28+sin(time())+0.5,18,32)
|
|
poke(0x5f54,0x00)
|
|
rectfill(0,0,8,15,13)
|
|
|
|
local w,_=measure_text(self.verse_name)
|
|
local x=64-w\2
|
|
-- rectfill(x,64,x+w-2,70,4)
|
|
print(self.verse_name,x,64,15)
|
|
line(x,70,x+w-2,70,15)
|
|
local oldx,oldw=x,w
|
|
local y=73
|
|
local w,h=measure_text(self.verse)
|
|
local x=64-w\2
|
|
rectfill(x-1,y-1,x+w,y+h-1,4)
|
|
print(self.verse,x,y,15)
|
|
--[[
|
|
for line in all(split(self.verse,"\n")) do
|
|
local w,_=measure_text(line)
|
|
print(line,64-w\2,y,7)
|
|
y+=6
|
|
end
|
|
]]--
|
|
y+=h+1
|
|
line(oldx,y,oldx+oldw-2,y,15)
|
|
print("next",57,y+2,15)
|
|
print("(🅾️)",57,y+8,15)
|
|
|
|
if self.has_tip then
|
|
local tip="tip: hold ❎ to restart"
|
|
local w=measure_text(tip)
|
|
print(tip,64-w\2,122,15)
|
|
end
|
|
end |