create orchestrator system that actually works
the slide off screen bit creates a palette problem but that's separate
This commit is contained in:
parent
76afbcbfe1
commit
523361500a
59
vacation.p8
59
vacation.p8
@ -385,9 +385,23 @@ end
|
|||||||
-- currently just loading
|
-- currently just loading
|
||||||
-- whatever view I want to debug
|
-- whatever view I want to debug
|
||||||
function newtitle()
|
function newtitle()
|
||||||
return arcade_level.new()
|
return title_screen.new()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
title_screen = {}
|
||||||
|
mknew(title_screen)
|
||||||
|
|
||||||
|
function title_screen:draw()
|
||||||
|
pal()
|
||||||
|
memset(0x5f78,0x0,8)
|
||||||
|
cls(12)
|
||||||
|
print("title screen", 40, 58, 0)
|
||||||
|
print("press right arrow", 30, 65, 0)
|
||||||
|
end
|
||||||
|
|
||||||
|
function title_screen:update()
|
||||||
|
if (btnp(1)) start_game()
|
||||||
|
end
|
||||||
-->8
|
-->8
|
||||||
-- dolphin sprite renderer
|
-- dolphin sprite renderer
|
||||||
|
|
||||||
@ -700,7 +714,7 @@ end
|
|||||||
|
|
||||||
arcade_level = {
|
arcade_level = {
|
||||||
score=0,
|
score=0,
|
||||||
wordcount=999,
|
max_score=999,
|
||||||
wordwait = 90,
|
wordwait = 90,
|
||||||
}
|
}
|
||||||
mknew(arcade_level, function(x)
|
mknew(arcade_level, function(x)
|
||||||
@ -713,7 +727,7 @@ mknew(arcade_level, function(x)
|
|||||||
x.words = event_list.new()
|
x.words = event_list.new()
|
||||||
-- TODO: score renderer
|
-- TODO: score renderer
|
||||||
x.t0 = t()
|
x.t0 = t()
|
||||||
x.wordremain = x.wordcount or arcade_level.wordcount
|
x.wordremain = x.max_score or arcade_level.max_score
|
||||||
x.wordtimer = x.wordwait or arcade_level.wordwait
|
x.wordtimer = x.wordwait or arcade_level.wordwait
|
||||||
|
|
||||||
x.v = view.of{
|
x.v = view.of{
|
||||||
@ -758,14 +772,12 @@ function arcade_level:update()
|
|||||||
if self.wordremain <= 0 and self.words.next == nil then
|
if self.wordremain <= 0 and self.words.next == nil then
|
||||||
self.phin.exiting = true
|
self.phin.exiting = true
|
||||||
end
|
end
|
||||||
if self.phin.x > 90 then
|
self.s.go = self.phin.x > 90
|
||||||
-- TODO: done callback
|
|
||||||
self:on_level_done()
|
|
||||||
end
|
|
||||||
-- TODO: timers, word loop,
|
-- TODO: timers, word loop,
|
||||||
-- level state tracking and
|
-- level state tracking and
|
||||||
-- progression, etc.
|
-- progression, etc.
|
||||||
self.s:update()
|
self.s:update()
|
||||||
|
if (self.s:done()) seq:next()
|
||||||
end
|
end
|
||||||
|
|
||||||
function arcade_level:spawn_word()
|
function arcade_level:spawn_word()
|
||||||
@ -850,6 +862,39 @@ end
|
|||||||
|
|
||||||
-->8
|
-->8
|
||||||
-- game sequencer
|
-- game sequencer
|
||||||
|
|
||||||
|
sequencer = {
|
||||||
|
idx = 0,
|
||||||
|
score = 0,
|
||||||
|
max_score = 0,
|
||||||
|
}
|
||||||
|
mknew(sequencer)
|
||||||
|
|
||||||
|
function sequencer:next()
|
||||||
|
if (mainview.score) self.score += mainview.score
|
||||||
|
if (mainview.max_score) self.max_score += mainview.max_score
|
||||||
|
self.idx += 1
|
||||||
|
local rec = self[self.idx]
|
||||||
|
if rec == nil then
|
||||||
|
mainview = newtitle()
|
||||||
|
return
|
||||||
|
end
|
||||||
|
mainview = rec.f(unpack(rec.params))
|
||||||
|
mainview:update()
|
||||||
|
end
|
||||||
|
|
||||||
|
function start_game()
|
||||||
|
seq = sequencer.new{
|
||||||
|
{
|
||||||
|
f = arcade_level.new,
|
||||||
|
params = {{
|
||||||
|
max_score=5,
|
||||||
|
}}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
seq:next()
|
||||||
|
end
|
||||||
|
|
||||||
__gfx__
|
__gfx__
|
||||||
00888800777777777777777777777777000000000000000000000000777777777777777700000000000000000000000000000000000000000000000000000000
|
00888800777777777777777777777777000000000000000000000000777777777777777700000000000000000000000000000000000000000000000000000000
|
||||||
0888e780700000000000000000000007000000000000000000000000700000000000000700000000000000000000000000000000000000000000000000000000
|
0888e780700000000000000000000007000000000000000000000000700000000000000700000000000000000000000000000000000000000000000000000000
|
||||||
|
Loading…
Reference in New Issue
Block a user