Compare commits
6 Commits
89a42e6c8b
...
58da8e6dc3
Author | SHA1 | Date | |
---|---|---|---|
58da8e6dc3 | |||
8ff0732cbc | |||
c88e7c0657 | |||
ff3552bc45 | |||
2dcb95b0cd | |||
87451bbd3a |
181
vacuum_gambit.p8
181
vacuum_gambit.p8
@ -185,6 +185,10 @@ function call_move(x)
|
||||
end
|
||||
|
||||
function updategame()
|
||||
if (primary_ship.xp >= primary_ship.xptarget) and (lframe - primary_ship.last_xp_frame > 0x0.000f) and (not primary_ship.dead) then
|
||||
mode = rearm_mode.new()
|
||||
return _update60()
|
||||
end
|
||||
leveldone = level_frame()
|
||||
events:vore(new_events)
|
||||
events:strip(call_move)
|
||||
@ -271,6 +275,7 @@ function _draw()
|
||||
end
|
||||
|
||||
function drawgame_top()
|
||||
camera()
|
||||
fillp(0)
|
||||
drawgame()
|
||||
if (game_state == game) fadelvl = -45
|
||||
@ -960,6 +965,7 @@ player = mknew(ship_m.new{
|
||||
-- xp in increments of 0x0.0001
|
||||
xp = 0,
|
||||
xptarget = 0x0.0004,
|
||||
last_xp_frame = 0,
|
||||
level = 1,
|
||||
|
||||
-- gun
|
||||
@ -1751,6 +1757,161 @@ function spawn_spec_gun_at(x, y, gunt)
|
||||
gun_p:spawn_at(x, y)
|
||||
end
|
||||
|
||||
-->8
|
||||
-- rearm screen
|
||||
|
||||
rearm_mode = mknew{
|
||||
sel=1,
|
||||
bfm=1,
|
||||
crt_frm = 1,
|
||||
pos=-1,
|
||||
init=function(this)
|
||||
poke(0x5f5c, 255) --no btnp repeat
|
||||
rearm_mode.shuffle(this)
|
||||
end,
|
||||
}
|
||||
|
||||
crt={-91,-166,-2641,-1441,-23041,23295,-20491,24570}
|
||||
|
||||
function rearm_mode:glow_box(x0, y0, x1, y1, c, cf)
|
||||
for i,v in ipairs{c[1],c[2],c[1],0} do
|
||||
i -= 1
|
||||
rect(x0+i,y0+i,x1-i,y1-i,v)
|
||||
end
|
||||
fillp(crt[self.crt_frm&0xff])
|
||||
rectfill(x0+4, y0+4, x1-4, y1-4, cf)
|
||||
fillp()
|
||||
end
|
||||
|
||||
function easeoutbounce(t)
|
||||
local n1=7.5625
|
||||
local d1=2.75
|
||||
|
||||
if (t<1/d1) then
|
||||
return n1*t*t;
|
||||
elseif(t<2/d1) then
|
||||
t-=1.5/d1
|
||||
return n1*t*t+.75;
|
||||
elseif(t<2.5/d1) then
|
||||
t-=2.25/d1
|
||||
return n1*t*t+.9375;
|
||||
else
|
||||
t-=2.625/d1
|
||||
return n1*t*t+.984375;
|
||||
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
|
||||
if (pos < 0) return 1-easeoutbounce(1+pos)
|
||||
if (pos > 0) return (1-pos)*(1-pos)
|
||||
return 0
|
||||
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=37,
|
||||
hdr=" vulc",
|
||||
body = "\nplaceholder",
|
||||
action = function() end,
|
||||
}}
|
||||
end
|
||||
|
||||
function rearm_mode:draw()
|
||||
drawgame_top()
|
||||
local frac = self:pos_frac()
|
||||
camera(frac * 55, 0)
|
||||
self:draw_option(1)
|
||||
camera(frac * -128 + (1-frac) * -56, 0)
|
||||
self:draw_option(2)
|
||||
camera(0, -28 * frac)
|
||||
self:glow_box(0,101,111,127,self:frame_col(self.sel < 0),1)
|
||||
spr(96,15,107,4,2)
|
||||
print("full ammo\nfull shield\n+50% health",54, 106, 6)
|
||||
end
|
||||
|
||||
function rearm_mode:update_pos()
|
||||
local pos = self.pos
|
||||
if (not pos) return
|
||||
if (pos == 0) then
|
||||
if (primary_ship.xp < primary_ship.xptarget) self.pos = 1
|
||||
xpwhoosh = nil
|
||||
return
|
||||
end
|
||||
if (pos < 0) pos = min(pos + 0x0.05, 0)
|
||||
if pos > 0 then
|
||||
pos -= 0x0.1
|
||||
if (pos <= 0) pos = 999
|
||||
end
|
||||
self.pos = pos
|
||||
end
|
||||
|
||||
function rearm_mode:update()
|
||||
self:update_pos()
|
||||
if self.pos > 1 then
|
||||
mode = game_mode
|
||||
return -- do not advance frame
|
||||
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
|
||||
|
||||
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.special_gun) primary_ship.special_gun.ammo = primary_ship.special_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__
|
||||
00000000000650000000000000000000bb0b50b59909209200cc0c00000000003b00000082000000e00e8002e00e800200333300002222000000000000000000
|
||||
00000000006765000000000000cccc00b50b3055920940220c0000c000bbbb0037000000a2000000e0e8880240e8480403bbbb30028888200000000000000000
|
||||
@ -1796,6 +1957,26 @@ c1111111111d0000c1111111111d0000c1111111111d0000c111eeee111d0000c11e2222e11d0000
|
||||
c1111111111d0000c1111111111d0000c1111111111d0000c1111111111d0000c111eeee111d0000c1ee2222ee1d0000ce22111122ed0000c2111111112d0000
|
||||
c1111111111d0000c1111111111d0000c1111111111d0000c1111111111d0000c1111111111d0000c111eeee111d0000ceee2222eeed0000c2221111222d0000
|
||||
cddddddddddd0000cddddddddddd0000cddddddddddd0000cddddddddddd0000cddddddddddd0000cddddddddddd0000cddddddddddd0000cddddddddddd0000
|
||||
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
04444400044444440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
447777700477777a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
477aaa7a0477aaaa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
47a0047a047a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
47a0447a047a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
47a4477a047a44400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
477777a00477777a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
477770000422aaaa2222000200000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
47a77700022ee0002eeee002e00022e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
47a4777002ea2e002e002e02ee022ee0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
47a0477a22ea2e002e002e02e2e2e2e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
47a0047a2e2222e02e222e02e02e02e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
47a0047a2eeeeeea2eeee002e02e02e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
0aa000aa2e7aa2ea2e00e002e02e02e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
000000002e0002e02e002e02e02e02e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000e0000e00e000e00e00e00e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
__label__
|
||||
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007777777777777777
|
||||
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007666666666666665
|
||||
|
Loading…
x
Reference in New Issue
Block a user