From 2dcb95b0cd09fdffbd1388cd080fd25b0ad64521 Mon Sep 17 00:00:00 2001 From: Kistaro Windrider Date: Mon, 20 Jan 2025 16:59:57 -0800 Subject: [PATCH] menu prototype --- vacuum_gambit.p8 | 90 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 72 insertions(+), 18 deletions(-) diff --git a/vacuum_gambit.p8 b/vacuum_gambit.p8 index 432ef79..699dba1 100644 --- a/vacuum_gambit.p8 +++ b/vacuum_gambit.p8 @@ -186,7 +186,7 @@ end function updategame() if primary_ship.xp >= primary_ship.xptarget and lframe - primary_ship.last_xp_frame > 15 then - mode = start_rearm() + mode = rearm_mode.new() return _update60() end leveldone = level_frame() @@ -1778,12 +1778,6 @@ function rearm_mode:glow_box(x0, y0, x1, y1, c, cf) fillp() end -function rearm_mode:frame_col(hot) - if (not hot) return {4,10} - if (self.bfm<=16) return {14,7} - return {2,8} -end - function easeoutbounce(t) local n1=7.5625 local d1=2.75 @@ -1802,6 +1796,21 @@ function easeoutbounce(t) end end + +function rearm_mode:frame_col(hot) + if (not hot) return {4,10} + if (self.bfm<=16) return {14,7} + return {2,8} +end + +function rearm_mode:draw_option(id) + local rec = self.options[id] + self:glow_box(0,0,55,100,self:frame_col(self.sel == id),1) + spr(rec.s,5, 5) + print(rec.hdr, 13, 8, 7) + print(rec.body, 5, 15, 6) +end + function rearm_mode:pos_frac() local pos = self.pos if (not pos) return @@ -1811,22 +1820,41 @@ function rearm_mode:pos_frac() end function rearm_mode:init() - --TODO: assign left pane content - --TODO: assign right pane content - -- + self:shuffle() +end + +function rearm_mode:shuffle() -- these will be placeholders -- until the upgrade deck -- is a thing that exists + self.options = {{ + s=1, + hdr="hull", + body = "\n +1\n max\n health", + action = function() end, + },{ + s=2, + hdr="vulc", + body = "\n placeholder", + action = function() end, + }} end function rearm_mode:draw() - -- TODO: draw weapon panes + local frac = self:pos_frac() + camera(frac * 55, 0) + self:draw_option(1) + camera(frac * -128 + (1-frac) * -56, 0) + self:draw_option(2) + -- TODO: draw rearm pane + drawhud() end function rearm_mode:update_pos() local pos = self.pos if (not pos or pos == 0) return + if (pos <= 0 and primary_ship.xp < primary_ship.xptarget) self.pos += 1 if (pos < 0) pos = min(pos + 0x0.05, 0) if pos > 0 then pos -= 0x0.1 @@ -1841,14 +1869,40 @@ function rearm_mode:update() mode = game_mode return _update60() end --- TODO: process input -end + local sel, bfm = self.sel, self.bfm + if (btn(3) and sel > 0 or btn(2) and sel < 0) sel=-sel + if (btn(0)) sel = 1 + if (btn(1)) sel = 2 + if (btn()&0xF ~= 0) and bfm >= 10 or bfm >= 30 then + bfm = 1 + else + bfm += 1 + end + self.bfm = bfm -function do_rearm() - -- TODO: remove this and just - -- use rearm_mode.new() at the - -- call site? - ret = rearm_mode.new() + if primary_ship.xp < primary_ship.xptarget then + sel = 0 + elseif btnp(4) or btnp(5) and self.pos == 0 then + if sel < 0 then + -- todo: sound: rearm + primary_ship.shield = primary_ship.maxshield + -- todo: rewrite for three guns + if (primary_ship.spec_gun) primary_ship.spec_gun.ammo = primary_ship.spec_gun.max_ammo + primary_ship.hp = min(primary_ship.maxhp, primary_ship.hp + primary_ship.maxhp/2) + primary_ship.xp -= primary_ship.xptarget / 2 + else + local c = self.options[sel] + if c then + -- todo: sound: upgrade + c:action() + primary_ship.xp -= primary_ship.xptarget + primary_ship.xptarget += primary_ship.level * 0x0.0002 + primary_ship.level += 1 + if (primary_ship.xp >= primary_ship.xptarget) self:shuffle() + end + end + end + self.sel = sel end __gfx__