519 lines
19 KiB
Lua
519 lines
19 KiB
Lua
pico-8 cartridge // http://www.pico-8.com
|
||
version 42
|
||
__lua__
|
||
-- notes about memory layout
|
||
--0 is flag if time has
|
||
--been set yet
|
||
|
||
--1 is the start date i think
|
||
|
||
--2 is the start time i think
|
||
|
||
--10 and onward gonna use
|
||
--for persistent storage of
|
||
--the kid stuff
|
||
|
||
--10 is the modifier
|
||
|
||
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 _update60()
|
||
ctime=dt:new()
|
||
m:update()
|
||
ctime:from(currenttime())
|
||
if (btn(⬆️)) and
|
||
(btn(⬇️)) and
|
||
(btn(⬅️)) and
|
||
(btn(➡️)) and
|
||
(btn(❎)) and
|
||
(btn(🅾️)) then
|
||
dset(10,0) --reset kid state
|
||
dset(0,0) --reset timesaved flag
|
||
printh("save reset")
|
||
end
|
||
|
||
k:update(stime,ctimed)
|
||
k:save()
|
||
state[stated]:update()
|
||
end
|
||
|
||
function _draw()
|
||
state[stated]:draw()
|
||
end
|
||
-->8
|
||
p = { --player
|
||
s=0,
|
||
x=64,
|
||
y=64,
|
||
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={ --him
|
||
s=1,
|
||
x=196,
|
||
y=64,
|
||
m=1, --modifier
|
||
t = 0,
|
||
growtime=3.600,
|
||
update = function(self,start,current)
|
||
self.m = dget(10) --get last m
|
||
temp = tts()
|
||
self.t=temp-self.m
|
||
if (self.t<0) then
|
||
self.t=0
|
||
self.m=0
|
||
dset(10,self.m)
|
||
end
|
||
pa = self.t/self.growtime
|
||
if (self.t<self.growtime) then
|
||
self.s=3*pa+1
|
||
else
|
||
self.s=4
|
||
end
|
||
if flr(p.x/8)==flr(self.x/8) and flr(p.y/8)==flr(self.y/8) then
|
||
self.x=64+(128*(flr(rnd(2))))
|
||
self.y=64+(128*(flr(rnd(2))))
|
||
self.m+=1
|
||
fx=3/self.growtime*self.t
|
||
printh(fx)
|
||
sfx(flr(3/self.growtime*self.t),-1,0,0)
|
||
end
|
||
end,
|
||
draw = function(self)
|
||
spr(self.s,self.x,self.y)
|
||
end,
|
||
save=function(self)
|
||
dset(10,self.m)
|
||
end
|
||
}
|
||
|
||
-->8
|
||
m = { --map
|
||
cx=0,--camera x
|
||
cy=0,--camera y
|
||
--camera velocity
|
||
cvx=0,
|
||
cvy=0,
|
||
--target x and y
|
||
tx=0,
|
||
ty=0,
|
||
t=false,--transition
|
||
update= function(self)
|
||
tile = (mget(p.x/8,p.y/8))
|
||
f=fget(tile)
|
||
if (f>1) then
|
||
printh(f)
|
||
printh(p.x)
|
||
printh(p.y)
|
||
self.t = true
|
||
if ((f & 0x2)!=0) then
|
||
--n
|
||
printh("n")
|
||
self.cy-=128
|
||
p.y-=16
|
||
elseif ((f&0x4)!=0) then
|
||
--e
|
||
self.cx+=128
|
||
p.x+=16
|
||
printh("e")
|
||
elseif ((f&0x8)!=0) then
|
||
--s
|
||
printh("s")
|
||
self.cy+=128
|
||
p.y+=16
|
||
else
|
||
--w
|
||
self.cx-=128
|
||
p.x-=16
|
||
printh("oops")
|
||
end
|
||
else
|
||
self.t=false
|
||
|
||
end
|
||
end,
|
||
draw = function(self)
|
||
cls()
|
||
camera(self.cx,self.cy)
|
||
map()
|
||
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)
|
||
dset(1, self.s)
|
||
dset(2, self.m)
|
||
dset(3, self.h)
|
||
dset(4, self.d)
|
||
dset(5, self.mo)
|
||
dset(6, self.y)
|
||
end,
|
||
read=function(self)
|
||
self.s=dget(1)
|
||
self.m=dget(2)
|
||
self.h=dget(3)
|
||
self.d=dget(4)
|
||
self.mo=dget(5)
|
||
self.y=dget(6)
|
||
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
|
||
|
||
--timetosec
|
||
function tts()
|
||
temp = (ctime.s-stime.s)/1000
|
||
temp += (ctime.m-stime.m)*.06
|
||
temp += (ctime.h-stime.h)*3.6
|
||
temp += (ctime.d-stime.d)*86.4
|
||
temp += (ctime.mo-stime.mo)*1036.8
|
||
if (temp > 32767.99)
|
||
or ((ctime.y-stime.y)>0)
|
||
then
|
||
stated = 3 --game over
|
||
end
|
||
|
||
|
||
return temp
|
||
end
|
||
-->8
|
||
state={
|
||
{--1 menu
|
||
update=function(self)
|
||
--pause toggle
|
||
if (btnp(❎)) then
|
||
stated=2
|
||
end
|
||
end,
|
||
draw=function(self)
|
||
ui:draw()
|
||
|
||
end
|
||
},
|
||
{--2 gameplay
|
||
update=function(self)
|
||
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()
|
||
|
||
|
||
--pause toggle
|
||
if (btnp(❎)) then
|
||
stated=1
|
||
end
|
||
end,
|
||
|
||
draw=function(self)
|
||
m:draw()
|
||
p:draw()
|
||
k:draw()
|
||
end
|
||
},
|
||
{ --3 game over
|
||
update=function(self)
|
||
|
||
end,
|
||
draw=function(self)
|
||
cls()
|
||
print("you lose... the creature grew too much")
|
||
print("hold ⬆️⬇️⬅️➡️❎🅾️ to reset save")
|
||
end,
|
||
},
|
||
{--4 intro
|
||
update=function(self)
|
||
if (btnp(❎)) stated=2
|
||
end,
|
||
draw=function(self)
|
||
cls()
|
||
x=rnd(2)
|
||
y=rnd(2)
|
||
if (timeset==0) then
|
||
print("the is growing",0,0,7)
|
||
print("creature",x+16,y+1,2)
|
||
print("creature",x+16,y,8)
|
||
|
||
else
|
||
print("the growth never stops",0,0,7)
|
||
print("creature's",x+16,y+1,2)
|
||
print("creature's",x+16,y,8)
|
||
|
||
end
|
||
print(" seeks comfort.",0,8,7)
|
||
print("it",x,7+y,2)
|
||
print("it",x,8+y,8)
|
||
print("find .",0,16,7)
|
||
print("it",x+18,15+y,2)
|
||
print("it",x+18,16+y,8)
|
||
print("soothe .",0,24,7)
|
||
print("it",x+27,23+y,2)
|
||
print("it",x+27,24+y,8)
|
||
|
||
|
||
print("pres x to continue",0,80,7)
|
||
print(k.t)
|
||
end,
|
||
|
||
}
|
||
}
|
||
-->8
|
||
|
||
ui = {
|
||
elements={
|
||
kidgrowth={
|
||
text="-his- growth%: ",
|
||
x=40,
|
||
y=64,
|
||
c=7, --color
|
||
w=20,
|
||
h=20,
|
||
draw=function(self)
|
||
print(self.text..k.t/k.growtime*100,self.x, self.y, self.c)
|
||
end
|
||
},
|
||
kidalive={
|
||
text="your kid's been alive for: ",
|
||
x=0,
|
||
y=4,
|
||
c=7, --color
|
||
w=20,
|
||
h=20,
|
||
draw=function(self)
|
||
print(self.text,self.x, self.y, self.c)
|
||
print(k.t.."s",self.x, self.y+8, self.c)
|
||
end
|
||
},
|
||
testing={
|
||
text="-his- state: ",
|
||
x=40,
|
||
y=72,
|
||
c=7, --color
|
||
w=20,
|
||
h=20,
|
||
draw=function(self)
|
||
print(self.text..k.m,self.x, self.y, self.c)
|
||
end
|
||
}
|
||
},
|
||
draw= function(self)
|
||
cls()--clear screen
|
||
camera() --reset the camera to default pos
|
||
rectfill(0,0,128,128,1)
|
||
for k,v in pairs(self.elements) do
|
||
v:draw()
|
||
end
|
||
|
||
end
|
||
}
|
||
-->8
|
||
--global vars
|
||
stated=4
|
||
twodays=172800
|
||
timescale=1
|
||
stime={}
|
||
ctime={}
|
||
timeset=0
|
||
__gfx__
|
||
00000000000000000000000000000000111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
00000000000000000000000001111110166116610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
00700700000000000011110001611610166116610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
00077000000110000011610001612610166116610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
00077000000110000011110001111110111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
00700700000000000011110001211110111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
00000000000000000000000001111110111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
00000000000000000000000000000000111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
22222222555555555555555555555554555555554444444455555555555444445555555544445555000000000000000000000000000000000000000000000000
|
||
2222222256dddd655555555555555554555555555555555555555555555444445555555544445555000000000000000000000000000000000000000000000000
|
||
222222225dddddd55555555555555554555555555555555555555555555444445555555544445555000000000000000000000000000000000000000000000000
|
||
222222225dddddd55555555555555554555555555555555544444555555444445555555544445555000000000000000000000000000000000000000000000000
|
||
222222225dddddd55555555555555554555555555555555544444555555444445554444455555555000000000000000000000000000000000000000000000000
|
||
222222225dddddd55555555555555554555555555555555544444555555555555554444455555555000000000000000000000000000000000000000000000000
|
||
2222222256dddd655555555555555554555555555555555544444555555555555554444455555555000000000000000000000000000000000000000000000000
|
||
22222222555555555555555555555554444444445555555544444555555555555554444455555555000000000000000000000000000000000000000000000000
|
||
22222222007777002222222222222222222222222222222200000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
22222222007777002222222222222222222222222222222200000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
22222222077cc7702211112222111122221111222211112200000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
2222222207cccc702212212222122122221221222212212200000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
22222222077777702212212222122122221221222212212200000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
22222222077777702211112222111122221111222211112200000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
22222222077777702222222222222222222222222222222200000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
22222222007777002222222222222222222222222222222200000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
__gff__
|
||
0000000000000000000000000000000000010101010101010101000000000000000002040810000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
__map__
|
||
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111101010101010101010101010111111111010101010101010101010101111111110101010101010101010101011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111101010101010101010101010111111111010101010101010101010101111111110101010101010101010101011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111101010101010101010101010111111111010101010101010101010101111111110101010101010101010101011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111101010101010101010101010111111111010101010101010101010101111111110101010101010101010101011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111101010101010101010101010111111111010101010101010101010101111111110101010101010101010101011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111101010101010101010101010102325101010101010101010101010101023251010101010101010101010101011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111101010101010101010101010102325101010101010101010101010101023251010101010101010101010101011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111101010101010101010101010102325101010101010101010101010101023251010101010101010101010101011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111101010101010101010101010111111111010101010101010101010101111111110101010101010101010101011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111101010101010101010101010111111111010101010101010101010101111111110101010101010101010101011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111101010101010101010101010111111111010101010101010101010101111111110101010101010101010101011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111101010101010101010101010111111111010101010101010101010101111111110101010101010101010101011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111111111111111111111111111111111111111111110101010111111111111111111111111111010101011111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111111111111111111111111111111111111111111124242424111111111111111111111111112424242411111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111111111111111111111111111111111111111111122222222111111111111111111111111112222222211111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111111111111111111111111111111111111111111110101010111111111111111111111111111010101011111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111101010101010101010101010111111111010101010101010101010101111111110101010101010101010101011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111101010101010101010101010111111111010101010101010101010101111111110101010101010101010101011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111101010101010101010101010111111111010101010101010101010101111111110101010101010101010101011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111101010101010101010101010111111111010101010101010101010101111111110101010101010101010101011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111101010101010101010101010111111111010101010101010101010101111111110101010101010101010101011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111101010101010101010101010102325101010101010101010101010101111111110101010101010101010101011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111101010101010101010101010102325101010101010101010101010101111111110101010101010101010101011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111101010101010101010101010111111111010101010101010101010101023251010101010101010101010101011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111101010101010101010101010111111111010101010101010101010101023251010101010101010101010101011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111101010101010101010101010111111111010101010101010101010101111111110101010101010101010101011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111101010101010101010101010111111111010101010101010101010101111111110101010101010101010101011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111101010101010101010101010111111111010101010101010101010101111111110101010101010101010101011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
__sfx__
|
||
000200000251002510085103a310363202c3201f3300f33039330263302131014420032200b2203042034220184202422016420164200352021520194202e52013520174200c5300742008420014201151000000
|
||
000200000a3200a3200a3200a3200a3200a3200a3100b3100c3100d3100f310113101231015310183101c3201f3201e2202023021230202301f2301e2201c2201b2221a6221762215620146200a6200062000000
|
||
000200000437004370043700437004360043600436004360043600936009360083600837007370063700637006370063700637005370053700537004370043700436004360053700537005370000700000000000
|