menu prototype
This commit is contained in:
		| @@ -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__ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user