324 lines
15 KiB
Lua
324 lines
15 KiB
Lua
pico-8 cartridge // http://www.pico-8.com
|
||
version 36
|
||
__lua__
|
||
-- continuum
|
||
-- by lightmotif
|
||
|
||
poke(0x5f2c,3)
|
||
|
||
function _init_rain()
|
||
rain={}
|
||
rainminx=0
|
||
rainminy=0
|
||
rainmaxx=64
|
||
rainmaxy=64
|
||
|
||
israining=false
|
||
|
||
cool={1,12,7}
|
||
|
||
local totalrain=64
|
||
|
||
for i=1,totalrain do
|
||
local rndspd=flr(rnd(3)+1)
|
||
add(rain,{
|
||
x=rnd(64),
|
||
y=rnd(64),
|
||
spd=rndspd
|
||
})
|
||
end
|
||
end
|
||
--<<<=======init========>>>
|
||
function _init()
|
||
_init_rain()
|
||
sx = 0 sy = 13
|
||
px = 28 py = 28
|
||
sun = {}
|
||
sun.sprt = 14
|
||
sun.tmr = 1
|
||
sun.x = sx
|
||
sun.y = sy
|
||
|
||
day = true
|
||
crossbar = false
|
||
crossbarnum = 0
|
||
|
||
skyclr1 = 1
|
||
skyclr2 = 12
|
||
|
||
plyr = {}
|
||
plyr.x = px
|
||
plyr.y = py
|
||
plyr.sprt = 32
|
||
plyr.tmr = 1
|
||
plyr.flp = false
|
||
plyani = {}
|
||
plyani.f1 = 32
|
||
plyani.f2 = 33
|
||
plyr.ymov = false
|
||
|
||
shake=0
|
||
|
||
confirm_trigger=false
|
||
cancel_trigger=false
|
||
end
|
||
--<<<=====update======>>>
|
||
function _update()
|
||
if (crossbar==false) then
|
||
if (btn(0)) then plyr.x=plyr.x-1 plyani.f1=34 plyani.f2=35 plyr.flp=true plyr.ymov=false end --⬅️
|
||
if (btn(1)) then plyr.x=plyr.x+1 plyani.f1=34 plyani.f2=35 plyr.flp=false plyr.ymov=false end --➡️
|
||
if (btn(2)) then plyr.y=plyr.y-1 plyani.f1=36 plyani.f2=36 plyr.flp=false plyr.ymov=true end --⬆️
|
||
if (btn(3)) then plyr.y=plyr.y+1 plyani.f1=33 plyani.f2=33 plyr.flp=false plyr.ymov=true end --⬇️
|
||
end
|
||
if crossbar then
|
||
if (crossbarnum==0) then
|
||
if (btn(0)) then crossbarnum=1 end --⬅️ Measure
|
||
if (btn(1)) then crossbarnum=2 end --➡️Act
|
||
if (btn(2)) then crossbarnum=3 end --⬆️Build
|
||
if (btn(3)) then crossbarnum=4 end --⬇️Plant
|
||
end
|
||
if (crossbarnum>0) then
|
||
if btn(0) then i=0 end
|
||
if btn(1) then i=1 end
|
||
if btn(2) then i=2 end
|
||
if btn(3) then i=3 end
|
||
if (crossbarnum==1) then _measure(i) end
|
||
if (crossbarnum==2) then _act(i) end
|
||
if (crossbarnum==3) then _build(i) end
|
||
if (crossbarnum==4) then _plant(i) end
|
||
--if btnp(0) or btnp(1) or btnp(2) or btnp(3) then crossbar=false crossbarnum=0 end
|
||
end
|
||
end
|
||
if (btn(5)) then crossbar=true sfx(0,3,0) end --❎
|
||
if (btn(4)) then crossbar=false sfx(1,3,0) crossbarnum=0 end --🅾️
|
||
if btnp(5) then sfx(0,3) sfx(-1,3) end
|
||
if btnp(4) then sfx(1,3) sfx(-1,3) end --shake+=1
|
||
local dayfactor=160 --320
|
||
sun.x = sun.tmr/6
|
||
if sun.tmr<=dayfactor then
|
||
sun.y = sun.y-8/dayfactor
|
||
end
|
||
if sun.tmr>dayfactor then
|
||
sun.y = sun.y+8/dayfactor
|
||
end
|
||
_update_rain()
|
||
end
|
||
--<<<====draw======>>>
|
||
function _draw()
|
||
cls()
|
||
pal()
|
||
--do the shaking
|
||
doshake()
|
||
--sky
|
||
rectfill(0,5,64,17,skyclr2)
|
||
rectfill(0,5,64,7,skyclr1)
|
||
spr(sun.sprt,sun.x,sun.y)
|
||
--map
|
||
rectfill(0,17,64,64,4)
|
||
map(0,0,0,12,33,18)
|
||
spr(plyr.sprt,plyr.x,plyr.y,1,1,plyr.flp)
|
||
sun.tmr = sun.tmr+1
|
||
if sun.tmr>=320 then --64
|
||
sun.x = 0
|
||
sun.y = 13
|
||
if day then
|
||
sun.sprt = 24
|
||
skyclr1 = 0
|
||
skyclr2 = 1
|
||
day = false
|
||
else
|
||
sun.sprt = 14
|
||
skyclr1 = 1
|
||
skyclr2 = 12
|
||
day = true
|
||
end
|
||
sun.tmr = 0
|
||
end
|
||
plyr.tmr = plyr.tmr+1
|
||
if plyr.tmr>=5 then
|
||
if (plyr.ymov) plyr.flp=false
|
||
plyr.sprt = plyani.f1
|
||
end
|
||
if plyr.tmr>=10 then
|
||
if (plyr.ymov) plyr.flp=true
|
||
plyr.sprt = plyani.f2
|
||
plyr.tmr = 0
|
||
end
|
||
--crossbar
|
||
if crossbar then
|
||
--outlines
|
||
rect(plyr.x-1,plyr.y-9,plyr.x+8,plyr.y-1,10)
|
||
rect(plyr.x+8,plyr.y-1,plyr.x+16,plyr.y+8,11)
|
||
rect(plyr.x-1,plyr.y+8,plyr.x+8,plyr.y+16,12)
|
||
rect(plyr.x-9,plyr.y-1,plyr.x-1,plyr.y+8,8)
|
||
if (crossbarnum==0) then --mainmenu
|
||
spr(0,plyr.x,plyr.y-8)
|
||
spr(2,plyr.x+8,plyr.y)
|
||
spr(1,plyr.x,plyr.y+8)
|
||
spr(18,plyr.x-8,plyr.y)
|
||
end
|
||
if (crossbarnum==1) then --measure
|
||
spr(13,plyr.x,plyr.y-8)
|
||
spr(15,plyr.x+8,plyr.y)
|
||
spr(20,plyr.x,plyr.y+8)
|
||
spr(5,plyr.x-8,plyr.y)
|
||
end
|
||
if (crossbarnum==2) then --act
|
||
spr(9,plyr.x,plyr.y-8)
|
||
spr(5,plyr.x+8,plyr.y)
|
||
spr(19,plyr.x,plyr.y+8)
|
||
spr(26,plyr.x-8,plyr.y)
|
||
end
|
||
if (crossbarnum==3) then --build
|
||
spr(6,plyr.x,plyr.y-8)
|
||
spr(16,plyr.x+8,plyr.y)
|
||
spr(11,plyr.x,plyr.y+8)
|
||
spr(5,plyr.x-8,plyr.y)
|
||
end
|
||
if (crossbarnum==4) then --plant
|
||
spr(17,plyr.x,plyr.y-8)
|
||
spr(21,plyr.x+8,plyr.y)
|
||
spr(22,plyr.x,plyr.y+8)
|
||
spr(23,plyr.x-8,plyr.y)
|
||
end
|
||
--colors 10,11,12,8
|
||
end
|
||
--draw rain
|
||
if(israining) then _draw_rain() end
|
||
--menu
|
||
rectfill(0,0,64,5,0)
|
||
spr(48,0,0)
|
||
line(5,2,14,2,10)
|
||
spr(49,16,0)
|
||
line(21,2,30,2,8)
|
||
spr(50,32,0)
|
||
line(37,2,46,2,12)
|
||
end
|
||
|
||
function doshake()
|
||
local shakex=16-rnd(32)
|
||
local shakey=16-rnd(32)
|
||
|
||
shakex*=shake
|
||
shakey*=shake
|
||
|
||
camera(shakex,shakey)
|
||
shake=shake*0.95
|
||
if (shake<0.05) shake=0
|
||
end
|
||
|
||
function _update_rain()
|
||
for drp in all(rain) do
|
||
drp.y+=drp.spd+2
|
||
if(drp.y>=rainmaxy) then
|
||
drp.y=rainminy
|
||
drp.x=(flr(rnd(64)))
|
||
drp.spd=flr(rnd(3)+1)
|
||
end
|
||
end
|
||
end
|
||
|
||
-- 2,1,3,0 Up,Right,Down,Left
|
||
function _build(button)
|
||
--israining=true
|
||
print(tostring(button),0,16,10)
|
||
--energy
|
||
--battery
|
||
--house
|
||
--water
|
||
end
|
||
|
||
function _act(button)
|
||
--gather
|
||
--water
|
||
--remove
|
||
--upgrade
|
||
end
|
||
|
||
function _plant(button)
|
||
--crops
|
||
--grass
|
||
--shrub
|
||
--tree
|
||
end
|
||
|
||
function _measure(button)
|
||
--temp
|
||
--wind
|
||
--soil
|
||
--water
|
||
end
|
||
|
||
|
||
function _draw_rain()
|
||
for drp in all(rain) do
|
||
if(drp.spd==3) then
|
||
line(drp.x,drp.y-3,drp.x,drp.y-5,cool[1])
|
||
line(drp.x,drp.y-1,drp.x,drp.y-3,cool[2])
|
||
pset(drp.x,drp.y,cool[3])
|
||
end
|
||
if(drp.spd==2) then
|
||
line(drp.x,drp.y-1,drp.x,drp.y-2,cool[1])
|
||
pset(drp.x,drp.y,cool[2])
|
||
end
|
||
if(drp.spd==1) then
|
||
line(drp.x,drp.y-1,drp.x,drp.y-1,cool[1])
|
||
pset(drp.x,drp.y,cool[2])
|
||
end
|
||
end
|
||
end
|
||
__gfx__
|
||
65566600000003b0004400000007000070000070000c000000007a9000007770000800000666650077777777000880000011110000007000000a900000006d00
|
||
6666656000003b3004ff4440000700000700070000c6c0000007a9000007777700088008000056d0711111110888888001999910000766000a0000900006d000
|
||
655650560003b3b04f444ff4000700000070700000c66c00007a900007c7777700008800000005657171717c11111111179899e10007650000099000006d0660
|
||
00045000003b3b004ffff44400757000000700000cc666c007aaaaa0777c77c7000089800000505571111ccc8888888817789ee100078500a09aa90906d06dd6
|
||
00045000003b30004fff4ff40705070000070000ccc66cc000000a90c777777c0808998000050005717c7c7c8884488817778ee100068500909aa90a06d000d6
|
||
00045000044400004ffff4407005007000070000ccccccc00000a9000cccccc0008aaa9800500005777777770884488017778ee1000585000009900006dd60d6
|
||
0004500004f200004fff4f4000050000000500000ccccc00000a900000101010008a7a80050000010220022008814880171111e1005e8e50090000a000660d60
|
||
000450000222000004fff000001510000015100000ccc000000a000000c0c0c000088800500000001111111108844880011111100005e5000009a0000000d600
|
||
0000000000003b0000011000008888000000000000000000000000000033b330000aaa0000000000000cc0000033b330ff33b33f000060004444444400000000
|
||
000000000000b300001771000877788000000000000000000000000003b3331300a9999000a0000000c77c0003b33813f3b33313500666004406566400000000
|
||
566666600088320001777610877788881444f44100000000003bb300033131310a999119000000000c7777c003813138f3313131556666654650050600000000
|
||
53b3b3b608ee88200177761087788878144444410000b000037b33103b3311030a991111000000a0c777777c3b3318033b3311f3533366336500066000000000
|
||
13b3b3b508e888200016610087888778144444f10b0b303003b33b30030440000a9911110000a000ccc77ccc03044000f3f44fff333333336656005400000000
|
||
1111111008888220000110008888777814f44441003b3b000333b130000420000a999119000a9a0000c77c0000042000fff42fff333333334660560600000000
|
||
00000000008822000006500008877780014444100000000003b3331000042000019999910000a00000c77c000004200011142111333333334005650400000000
|
||
0000000000022000000650000088880000111100000000000031310000242200001999100000000000cccc000024220011242211444444444460004400000000
|
||
0006600000066000000666000000000000066000fffff9ffcccccccc444444443333333344244444444444444444444444444444444444444444444444444444
|
||
0076670000766700006766600006660000766700ff9fffffcc77cc77222222223b3b333344444244414141414b434b4b4121412143b343b34444444444444344
|
||
09711790097117900679761000676660097667909ffffff977cc77cc4444444433b33b33244444444444444444444444423141313b313b31444444444b434b44
|
||
0076670000766700006766600679761000766700ffff9fffcccccccc222222223333333344424424414141414343434b41124112431443144444444444b44b43
|
||
0006600000066000000666000067666007555579ff9fffffcccccccc4444444433333333424444444444444444444444444444444444444444444444439444b4
|
||
0755557000755590000575000005579090555500fffff9ffcc77cc7722222222333b3b334444444441414141434b43434112421143b343b34131413144944494
|
||
9066660909066600000696000096666000666600f9ffffff77cc77cc444444443b33b333244442444444444444444444423141323b313b314131413141414141
|
||
0090090000090000000669900099009900000900fff9ff9fcccccccc22222222333333334424444241414141434b434b41124121431443144414441444144414
|
||
000a0000003300000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
00a000000e30000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
0aaa00008ee200000c6c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
00a0000088820000cc6c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
0a000000082000000cc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
__map__
|
||
1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d262626262600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1d25252525252525252525252525252525252525252525252525252525262626262600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1d25252525252525252525252525252525252525252525252525252525262626262600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1d25252529292929292925252525292925252525252525252525252525262626262600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1d25252929292929292929252529292925252525252525252525252525262626262600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1d25252929292929292929292929292525252525252529292525252525262626262600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1d25252529292929292929292929252525252525252929292925252525262626262600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1d25252525252929292929292929252525252525252929292925252525262626262600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1d25252525252929292929292929252525252525252929292925252525262626262600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1d25252525292929292929292929292525252525252929292925252525262626262600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1d25252529292929292929292929292925252525252929292925252525262626262600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1d25252929292929292929292929292925252525252529292525252525262626262600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1d25252529292925252525252525252525252525252525252525252525262626262600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1d25252525252525252525252525252525252525252525252525252526262626262600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1d25252525252525252525252525252525252525252525252525252626262626262600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
2626262626262626262626262626262626262626262626262626262626262626262600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
2626262626262626262626262626262626262626262626262626262626262626262600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
2626262626262626262626262626262626262626262626262626262626262626262600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
2626262626262626262626262626262626262626262626262626262626262626262600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
0000000000000000000000000000000000000000000026260000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
__sfx__
|
||
010200003327036271362750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
010c00002927526200262750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|