283 lines
9.4 KiB
Lua
283 lines
9.4 KiB
Lua
pico-8 cartridge // http://www.pico-8.com
|
||
version 42
|
||
__lua__
|
||
twodays=172800
|
||
timescale=1
|
||
stime={}
|
||
ctime={}
|
||
function _init()
|
||
printh("init")
|
||
|
||
cartdata("savedgame")
|
||
timeset = dget(0)
|
||
stime=dt:new()
|
||
|
||
if (timeset==0) then
|
||
stime:from(currenttime())
|
||
printh("save:"..stime:tostring())
|
||
stime:save()
|
||
else
|
||
stime:read()
|
||
printh("read:"..stime:tostring())
|
||
-- printh("starttime = ".. )
|
||
end
|
||
|
||
cls()
|
||
-- printh("goaltime"..goaltime)
|
||
m:draw()
|
||
ui:draw()
|
||
|
||
end
|
||
|
||
function _update()
|
||
ctime=dt:new()
|
||
|
||
ctime:from(currenttime())
|
||
if (btn(⬆️)) and
|
||
(btn(⬇️)) and
|
||
(btn(⬅️)) and
|
||
(btn(➡️)) and
|
||
(btn(❎)) and
|
||
(btn(🅾️)) then
|
||
dset(0,0)
|
||
printh("save reset")
|
||
end
|
||
if (btn(🅾️)) printh(ctime:tostring())
|
||
xv = 0
|
||
yv = 0
|
||
if (btn(➡️)) xv+=p.s
|
||
if (btn(⬅️)) xv-=p.s
|
||
if (btn(⬆️)) yv-=p.s
|
||
if (btn(⬇️)) yv+=p.s
|
||
p:input(xv,yv)
|
||
p:move()
|
||
what=ctime:tdiff(stime)
|
||
if (btn(❎)) printh(what)--printh(stime:tostring())
|
||
|
||
k:update(what)
|
||
end
|
||
|
||
function _draw()
|
||
m:draw()
|
||
ui:draw()
|
||
p:draw()
|
||
k:draw()
|
||
end
|
||
-->8
|
||
p = { --player
|
||
s=0,
|
||
x=64,
|
||
y=32,
|
||
w=8,
|
||
h=8,
|
||
s=1,
|
||
xv = 0,
|
||
yv = 0,
|
||
draw = function(self)
|
||
spr(s,self.x,self.y)
|
||
end,
|
||
input = function(self, xv, yv)
|
||
self.xv = xv
|
||
self.yv = yv
|
||
end,
|
||
move = function(self)
|
||
if not (hitx(self.x+self.xv,self.y,self.w,self.h)) then
|
||
self.x+= self.xv
|
||
end
|
||
if not (hity(self.x,self.y+self.yv,self.w,self.h)) then
|
||
self.y+= self.yv
|
||
end
|
||
end
|
||
}
|
||
|
||
k={ --kid
|
||
s=1,
|
||
x=20,
|
||
y=20,
|
||
m=1, --modifier
|
||
t = 0,
|
||
growtime=1.30, -- 1 min 30 sec
|
||
update = function(self,t)
|
||
self.t=t*self.m
|
||
pa = self.t/self.growtime
|
||
if (pa<self.growtime) then
|
||
self.s=3*pa+1
|
||
else
|
||
self.s=4
|
||
end
|
||
|
||
end,
|
||
draw = function(self)
|
||
spr(self.s,self.x,self.y)
|
||
end
|
||
}
|
||
|
||
-->8
|
||
m = { --map
|
||
rox=0,
|
||
roy=0,
|
||
draw = function(self)
|
||
map(0,0,0,0,16,8)
|
||
end
|
||
|
||
}
|
||
|
||
ui = {
|
||
draw= function(self)
|
||
rectfill(0,128,256,256,1)
|
||
|
||
end
|
||
}
|
||
|
||
dt = {
|
||
s=0,
|
||
m=0,
|
||
h=0,
|
||
d=0,
|
||
mo=0,
|
||
y=0,
|
||
tostring=
|
||
function(self)
|
||
return self.s..":"
|
||
..self.m..":"
|
||
..self.h.." "
|
||
..self.d.."-"
|
||
..self.mo.."-"
|
||
..self.y
|
||
end,
|
||
|
||
from=function(self, obj)
|
||
self.s = obj.s
|
||
self.m = obj.m
|
||
self.h = obj.h
|
||
self.d = obj.d
|
||
self.mo = obj.mo
|
||
self.y = obj.y
|
||
end,
|
||
save=function(self)
|
||
dset(1,self:dat())
|
||
dset(2,self:tim())
|
||
dset(0,1)
|
||
end,
|
||
read=function(self)
|
||
dat=dget(1)
|
||
tim=dget(2)
|
||
dat/=10
|
||
self.y = flr(dat)
|
||
dat = (dat-self.y)*100
|
||
self.mo= flr(dat)
|
||
dat = (dat-self.mo)*100
|
||
self.d=flr(dat)
|
||
tim/=100
|
||
self.h=flr(tim)
|
||
tim = (tim - self.h)*100
|
||
self.m=flr(tim)
|
||
tim = (tim-self.m)*100
|
||
self.s = flr(tim)
|
||
|
||
end,
|
||
dat=function(self)
|
||
return self.y*10+self.mo/10+self.d/1000
|
||
end,
|
||
tim=function(self)
|
||
return self.h*100+self.m+self.s/100
|
||
end,
|
||
tdiff=function(self,obj)
|
||
return self:tim()-obj:tim()
|
||
end,
|
||
ddiff=function(self,obj)
|
||
return self:dat()-obj:dat()
|
||
end
|
||
|
||
}
|
||
|
||
|
||
function dt:new(obj)
|
||
obj = obj or {}
|
||
setmetatable(obj, {__index = self})
|
||
return obj
|
||
end
|
||
-->8
|
||
-- check hit on top or bottom
|
||
function hity(x,y,w,h) --check hit on top or bottom
|
||
hit=false
|
||
for i=x,x+w do
|
||
tile1=mget(i/8,y/8)
|
||
tile2=mget(i/8,(y+h)/8)
|
||
if (fget(tile1,0)) then
|
||
hit=true
|
||
elseif (fget(tile2,0)) then
|
||
hit=true
|
||
end
|
||
end
|
||
return hit
|
||
end
|
||
--check hit on sides
|
||
function hitx(x,y,w,h) --check hit on sides
|
||
hit = false
|
||
for i=y,y+h do
|
||
tile1=mget(x/8,i/8)
|
||
tile2=mget((x+w)/8,i/8)
|
||
if (fget(tile1,0)) then
|
||
hit=true
|
||
elseif (fget(tile2,0)) then
|
||
hit=true
|
||
end
|
||
end
|
||
return hit
|
||
end
|
||
|
||
|
||
-- returns the current time.
|
||
--i have to split it up fml
|
||
function currenttime()
|
||
|
||
t = {
|
||
s=stat(95),
|
||
m=stat(94),
|
||
h=stat(93),
|
||
d=stat(92),
|
||
mo=stat(91),
|
||
y=stat(90)
|
||
}
|
||
return t
|
||
end
|
||
__gfx__
|
||
00000000000000000000000000000000111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
00000000000000000000000001111110166116610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
00700700000000000011110001611610166116610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
00077000000110000011610001612610166116610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
00077000000110000011110001111110111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
00700700000000000011110001211110111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
00000000000000000000000001111110111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
00000000000000000000000000000000111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
22222222dddddddd5555555555555554555555554444444455555555555444445555555544445555000000000000000000000000000000000000000000000000
|
||
22222222d555555d5555555555555554555555555555555555555555555444445555555544445555000000000000000000000000000000000000000000000000
|
||
22222222d555555d5555555555555554555555555555555555555555555444445555555544445555000000000000000000000000000000000000000000000000
|
||
22222222d555555d5555555555555554555555555555555544444555555444445555555544445555000000000000000000000000000000000000000000000000
|
||
22222222d555555d5555555555555554555555555555555544444555555444445554444455555555000000000000000000000000000000000000000000000000
|
||
22222222d555555d5555555555555554555555555555555544444555555555555554444455555555000000000000000000000000000000000000000000000000
|
||
22222222d555555d5555555555555554555555555555555544444555555555555554444455555555000000000000000000000000000000000000000000000000
|
||
22222222dddddddd5555555555555554444444445555555544444555555555555554444455555555000000000000000000000000000000000000000000000000
|
||
00000000007777000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
00000000007777000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
00000000077cc7700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
0000000007cccc700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
00000000077777700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
00000000077777700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
00000000077777700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
00000000007777000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
__gff__
|
||
0000000000000000000000000000000000010101010101010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
__map__
|
||
1212121212121212121212121212121200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1218141414141414141414141414161200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1213101010101010101010101010111200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1213101010101010101010101010111200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1213101010101010101010101010111200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1213101010101010101010101010111200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1213101010101010101010101010111200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1217151515151515151515151515191200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1212121212121212121212121212121200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|