Title screen, keyboard

This commit is contained in:
Pyrex 2022-12-17 20:38:49 -08:00
parent 06e09bfc2e
commit 8814edbdd4

View File

@ -2,6 +2,7 @@ pico-8 cartridge // http://www.pico-8.com
version 38 version 38
__lua__ __lua__
modules={} modules={}
real_modules={}
frame=0 frame=0
function _init() function _init()
@ -109,9 +110,56 @@ function _mnmx(x,y)
if (x>y)return y,x if (x>y)return y,x
return x,y return x,y
end end
-->8
kbd={}
add(real_modules,kbd)
function kbd:init()
self.prev_real=btn()
self.down=0
end
function kbd:update()
local now=btn()
local pressed=now&~self.prev_real
self.down&=now
self.down|=pressed
self.prev_real=now
end
function kbd:btn(i)
return self.down&(1<<i)!=0
end
function kbd:release(i)
self.down&=~(1<<i)
end
-->8
title={}
add(modules,title)
function title:init()
end
function title:draw()
cls(0)
-- this is right for 72x32
spr(3,28,48,9,4)
print("pyrex",28,81,7)
print("[nyeogmi]",65,81,7)
print("kistaro",28,87,7)
end
function title:update()
if btn()!=0 then
modules=real_modules
_init()
end
end
-->8 -->8
level={} level={}
add(modules,level) add(real_modules,level)
function level:init() function level:init()
level:reinit(0) level:reinit(0)
@ -473,7 +521,7 @@ function level:tug_crate(mx0,my0,dmx,dmy)
end end
-->8 -->8
player={} player={}
add(modules,player) add(real_modules,player)
function player:init() function player:init()
--self:reinit(8,14) --self:reinit(8,14)
@ -534,33 +582,33 @@ function player:update()
return return
end end
if btn(⬅️) then if kbd:btn(0) then
if level:can_move(true,self.x,self.y,-1,0,0,2) then if level:can_move(true,self.x,self.y,-1,0,0,2) then
self.todo=f4({{orientx=-1,orienty=0,px=-2},{px=-7},{x=self.x-1}}) self.todo=f4({{orientx=-1,orienty=0,px=-2},{px=-7},{x=self.x-1}})
else else
self.orientx=-1 self.orientx=-1
self.orienty=0 self.orienty=0
end end
elseif btn(➡️) then elseif kbd:btn(1) then
if level:can_move(true,self.x,self.y,1,0,0,2) then if level:can_move(true,self.x,self.y,1,0,0,2) then
self.todo=f4({{orientx=1,orienty=0,px=2},{px=7},{x=self.x+1}}) self.todo=f4({{orientx=1,orienty=0,px=2},{px=7},{x=self.x+1}})
else else
self.orientx=1 self.orientx=1
self.orienty=0 self.orienty=0
end end
elseif btn(⬆️) then elseif kbd:btn(2) then
if level:can_move(true,self.x,self.y,0,-1,0,2) then if level:can_move(true,self.x,self.y,0,-1,0,2) then
self.todo=f4({{orienty=-1,py=-2},{py=-7},{y=self.y-1}}) self.todo=f4({{orienty=-1,py=-2},{py=-7},{y=self.y-1}})
else else
self.orienty=-1 self.orienty=-1
end end
elseif btn(⬇️) then elseif kbd:btn(3) then
if level:can_move(true,self.x,self.y,0,1,0,2) then if level:can_move(true,self.x,self.y,0,1,0,2) then
self.todo=f4({{orienty=1,py=2},{py=7},{y=self.y+1}}) self.todo=f4({{orienty=1,py=2},{py=7},{y=self.y+1}})
else else
self.orienty=1 self.orienty=1
end end
elseif btn(🅾️) then elseif kbd:btn(4) then
if self.rope==nil then if self.rope==nil then
local rx,ry,rx2,ry2=self:_rope_pos() local rx,ry,rx2,ry2=self:_rope_pos()
local dx,dy=12*self.orientx,12*self.orienty local dx,dy=12*self.orientx,12*self.orienty
@ -576,7 +624,7 @@ function player:update()
self.rope:tug() self.rope:tug()
self.todo={{},{},{}} self.todo={{},{},{}}
end end
elseif btn(❎) then elseif kbd:btn(5) then
if self.rope!=nil then if self.rope!=nil then
self.rope:destroy() self.rope:destroy()
end end
@ -604,21 +652,13 @@ function player:update()
end end
function player:_vanish_if_requested() function player:_vanish_if_requested()
local bvan=btn(❎) if kbd:btn(5) then
if self.bvan and not bvan then
self.vanishing=false
elseif not self.bvan and bvan then
self.vanishing=true
end
self.bvan=bvan
if self.vanishing then
self.vanish_frame+=1 self.vanish_frame+=1
if (self.fall_frame>0 or self.vanish_frame>20) then if (self.fall_frame>0 or self.vanish_frame>20) then
level:restart() level:restart()
kbd:release(5)
self.vanish_frame=20 self.vanish_frame=20
self.vanishing=false
end end
else else
self.vanish_frame-=1 self.vanish_frame-=1
@ -648,7 +688,7 @@ function player:draw()
local px=self.x*8+self.px local px=self.x*8+self.px
local py=self.y*8+self.py local py=self.y*8+self.py
local head=2-self.orienty local head=1-self.orienty
local vanish_level=self.vanish_frame/20 local vanish_level=self.vanish_frame/20
local invis_level=max(self.fall_frame/10,4*(vanish_level-0.75)) local invis_level=max(self.fall_frame/10,4*(vanish_level-0.75))
@ -706,7 +746,6 @@ function player:draw()
end end
-->8 -->8
rope={} rope={}
rope.__index=rope rope.__index=rope
@ -1467,38 +1506,38 @@ end
__gfx__ __gfx__
000000000000300000000022000030000000000000000000000000000000000000000000000000000000000000000000dddddddd000000000000000000000000 000030000000002200003000777777777777777777777777777777777777777777777777777777777777777777777777dddddddd000000000000000000000000
000000000033333000003322003333300aa00aa000000000000000000000000000000000000000000000000000000000dddddddd000000000000000000000000 003333300000332200333330700000000000000000000000000000000000000000000000000000000000000000000007dddddddd000000000000000000000000
000000000993339900399320093333390aaaaaa000000000000000000000000000000000000000000000000000000000dddddddd000000000000000000000000 099333990039932009333339707770700077707770777070700770700077707770777000000000000000000000000007dddddddd000000000000000000000000
0000000009a333a9033a9320093333390aaaaaa000000000000000000000000000000000000000000000000000000000dddddddd000000000000000000000000 09a333a9033a932009333339707070700070707000700070707070700070707000707000000000000000000000000007dddddddd000000000000000000000000
000000000233333233333200002222200099990000000000000000000000000000000000000000000000000000000000dddddddd000000000000000000000000 023333323333320000222220707770700077707000770077707070700070707700770000000000000000000000000007dddddddd000000000000000000000000
0000000000222220000022000022222000aaaa0000000000000000000000000000000000000000000000000000000000dddddddd000000000000000000000000 002222200000220000222220707000700070707000700070707070700070707000707000000000000000000000000007dddddddd000000000000000000000000
00000000000222c002222c0000022200000aa00000000000000000000000000000000000000000000000000000000000dddddddd000000000000000000000000 000222c002222c0000022200707000777070707770777070707700777077007770707000000000000000000000000007dddddddd000000000000000000000000
0000000000000cc00000cc0000000cc00044440000000000000000000000000000000000000000000000000000000000dddddddd000000000000000000000000 00000cc00000cc0000000cc0700000000000000000000000000000000000000000000000000000000000000000000007dddddddd000000000000000000000000
0000ff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000 0000ff00000000000000000070777077707070777000000000000000000000000000000000000000000000000000000711111111000000000000000000000000
000f00f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000 000f00f0000000000aa00aa070070070007070070000000000000000000000000000000000000000000000000000000711111111000000000000000000000000
00d0000f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000 00d0000f000000000aaaaaa070070077000700070000000000000000000000000000000000000000000000000000000711111111000000000000000000000000
00d0d00f00c040500000000000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000 00d0d00f00c040500aaaaaa070070070007070070000000000000000000000000000000000000000000000000000000711111111000000000000000000000000
00dd00ee00c445500000000000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000 00dd00ee00c445500099990070070077707070070000000000000000000000000000000000000000000000000000000711111111000000000000000000000000
00000ee00c4445550000000000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000 00000ee00c44455500aaaa0070000000000000000000000000000000000000000000000000000000000000000000000711111111000000000000000000000000
00eeee000c0040050000000000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000 00eeee000c004005000aa00070000000000000000000000000000000000000000000000000000000000000000000000711111111000000000000000000000000
eeee0000cc0440550000000000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000 eeee0000cc0440550044440070000000000000000000000000000000000000000000000000000000000000000000000711111111000000000000000000000000
00000000000a90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000a90000000000070000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000
00000aaaaaaa91000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000aaaaaaa91000000000070000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000
0000aaaaaa1a91100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000aaaaaa1a91100000000070000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000
0aaaaaaaaa1a91110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0aaaaaaaaa1a91110000000070000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000
0aaaaaaaa41a91a10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0aaaaaaaa41a91a10000000070000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000
0a000aa4441a91a10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0a000aa4441a91a10000000070000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000
00a0044449a110a10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00a0044449a110a10000000070000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000
000aa111991111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000aa111991111100000000070000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000
00000000991000000000000000000000000000000000000000000000000000000000000000000000000000000000000077700777777777777777777777777777 00000000991000000000000070000000000000000000000000000000000000000000000000000000000000000000000777700777777777777777777777777777
00000000990000000000000000000000000000000000000000000000000000000000000000000000000000000000000077700777777777777777777777777777 00000000990000000000000070000000000000000000000000000000000000000000000000000000000000000000000777700777777777777777777777777777
00000000990000000000000000000000000000000000000000000000000000000000000000000000000000000000000077777777777777777777777777777777 00000000990000000000000070000000000000000000000000000000000000000000000000000000000000000000000777777777777777777777777777777777
00000000090000000000000000000000000000000000000000000000000000000000000000000000000000000000000077700777777007007770077700700777 00000000090000000000000070000000000000000000000000000000000000000000000000000000000000000000000777700777777007007770077700700777
00000000aa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000077700777777007007770077700700777 00000000aa0000000000000070000000000000000000000000000000000000000000000000000000000000000000000777700777777007007770077700700777
0000000077a000000000000000000000000000000000000000000000000000000000000000000000000000000000000077777777777777777777777777777777 0000000077a000000000000070000000000000000000000000000000000000000000000000000000000000000000000777777777777777777777777777777777
00000007777a00000000000000000000000000000000000000000000000000000000000000000000000000000000000077777777777777777770077777777777 00000007777a00000000000070000000000000000000000000000000000000000000000000000000000000000000000777777777777777777770077777777777
00044444444444000000000000000000000000000000000000000000000000000000000000000000000000000000000077777777777777777770077777777777 00044444444444000000000077777777777777777777777777777777777777777777777777777777777777777777777777777777777777777770077777777777
77077077777007777707707777700777770770777770077777077077777007777707707777700777770770777770077777077077777007777707707777700777 77077077777007777707707777700777770770777770077777077077777007777707707777700777770770777770077777077077777007777707707777700777
77777777777007777777777777700777777777777770077777777777777007777777777777700777777777777770077777777777777007777777777777700777 77777777777007777777777777700777777777777770077777777777777007777777777777700777777777777770077777777777777007777777777777700777
07777770077777700777777707777777077777700777777007777777077777777777777077777770777777777777777777777770777777707777777777777777 07777770077777700777777707777777077777700777777007777777077777777777777077777770777777777777777777777770777777707777777777777777
@ -1651,7 +1690,7 @@ __map__
0c000000000000000c0c0c0c0c0c0c0c0c00000000000020210000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0c000000000000000c0c0c0c0c0c0c0c0c00000000000020210000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0c000000000000000000000c0c0c0c0c0c00000000000030310000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0c000000000000000000000c0c0c0c0c0c00000000000030310000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0c0c0c0c0c0c0c0c0000000c0c0c0c0c0c00000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0c0c0c0c0c0c0c0c0000000c0c0c0c0c0c00000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0c0c0c0c0c0c0c0c00000000000000040100000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0c0c0c0c0c0c0c0c00000000000000120100000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c00000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c00000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c00000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c00000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c00000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c00000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000