Compare commits
No commits in common. "f9e28fa0e280aa0a03dc3c53218699de609fc221" and "2a61e8b5d6aba26cc6ab44c602bab867ac2bb9ad" have entirely different histories.
f9e28fa0e2
...
2a61e8b5d6
120
updatedshmup.p8
120
updatedshmup.p8
@ -118,7 +118,7 @@ function _init()
|
|||||||
init_blip_pals()
|
init_blip_pals()
|
||||||
wipe_level()
|
wipe_level()
|
||||||
primary_ship.main_gun = zap_gun.new()
|
primary_ship.main_gun = zap_gun.new()
|
||||||
load_level(example_level_csv)
|
load_level(example_level)
|
||||||
state = game
|
state = game
|
||||||
pal(2,129)
|
pal(2,129)
|
||||||
pal()
|
pal()
|
||||||
@ -691,7 +691,7 @@ spewy = frownie.new{
|
|||||||
}
|
}
|
||||||
mknew(spewy, function(ship)
|
mknew(spewy, function(ship)
|
||||||
ship.main_gun=ship.main_gun or protron_gun.new{enemy=true}
|
ship.main_gun=ship.main_gun or protron_gun.new{enemy=true}
|
||||||
end})
|
end}
|
||||||
|
|
||||||
chasey = ship_m.new{
|
chasey = ship_m.new{
|
||||||
sprite = 5,
|
sprite = 5,
|
||||||
@ -857,22 +857,18 @@ function load_level(levelfile)
|
|||||||
distance = 0
|
distance = 0
|
||||||
lframe = 0
|
lframe = 0
|
||||||
freeze = 0
|
freeze = 0
|
||||||
leveldone = false
|
|
||||||
current_level = {}
|
current_level = {}
|
||||||
local found_eol = false
|
for row in all(csv(levelfile)) do
|
||||||
if (type(levelfile)=="string") levelfile = csv(levelfile)
|
|
||||||
for row in all(levelfile) do
|
|
||||||
local x = current_level[row[1]]
|
local x = current_level[row[1]]
|
||||||
if row[2] == "eol" then
|
if row[2] == "eol" then
|
||||||
found_eol = true
|
|
||||||
assert(x==nil, "events on eol frame")
|
assert(x==nil, "events on eol frame")
|
||||||
current_level[row[1]] = eol
|
row[1] = eol
|
||||||
else
|
else
|
||||||
row.next = x
|
add(x, row)
|
||||||
currentlevel[row[1]]=row
|
|
||||||
end
|
end
|
||||||
|
row[1]=x
|
||||||
end
|
end
|
||||||
assert found_eol
|
leveldone = false
|
||||||
end
|
end
|
||||||
|
|
||||||
function level_frame()
|
function level_frame()
|
||||||
@ -886,12 +882,9 @@ function level_frame()
|
|||||||
current_level = nil
|
current_level = nil
|
||||||
return true
|
return true
|
||||||
else
|
else
|
||||||
while cbs do
|
for c in all(cbs) do
|
||||||
assert(cbs[1] == distance)
|
assert(c[1] == distance)
|
||||||
local f = _ENV[cbs[2]]
|
level_events[c[2]](unpack(c.params, 3))
|
||||||
assert(type(f) == "function", cbs[2].." at "..distance..." is not a function")
|
|
||||||
f(unpack(cbs, 3))
|
|
||||||
cbs=cbs.next
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -1007,9 +1000,17 @@ function spawn_blocking_boss_chasey()
|
|||||||
return c
|
return c
|
||||||
end
|
end
|
||||||
|
|
||||||
|
spawns = {
|
||||||
|
chasey = chasey,
|
||||||
|
frownie = frownie,
|
||||||
|
blocky = blocky,
|
||||||
|
spewy = spewy,
|
||||||
|
spewy_xl=spewy_xl,
|
||||||
|
-- TODO: populate this
|
||||||
|
}
|
||||||
function std_spawn(tnm, n, blocking, goodie,altspr)
|
function std_spawn(tnm, n, blocking, goodie,altspr)
|
||||||
local typ = _ENV[tnm]
|
local typ = spawns[tnm]
|
||||||
assert(typ and typ.new, tostr(tnm).." not a class")
|
assert(typ, tostr(tnm).." not a spawnable")
|
||||||
for i=1,(n or 1) do
|
for i=1,(n or 1) do
|
||||||
spawn_rnd(typ, blocking, goodie,altspr)
|
spawn_rnd(typ, blocking, goodie,altspr)
|
||||||
end
|
end
|
||||||
@ -1042,9 +1043,14 @@ function spawn_goodie(goodie_name, x, y, sz)
|
|||||||
goodies[goodie_name].new{}:spawn_at(x+sh,y+sh)
|
goodies[goodie_name].new{}:spawn_at(x+sh,y+sh)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- TODO: populate level_events
|
||||||
|
|
||||||
|
-- to implement: multi(times, interval, f, ...)
|
||||||
|
-- once on this frame, then times-1 times after that spaced interval
|
||||||
|
-- frames apart, f(...). schedule this like the one-off written in
|
||||||
|
-- example_level.
|
||||||
function multi(times, interval, fnm, ...)
|
function multi(times, interval, fnm, ...)
|
||||||
local f,irm = _ENV[fnm],interval
|
local f,irm = level_events[fnm],interval
|
||||||
assert(type(f) == "function", fnm.." not a function")
|
|
||||||
fnm(...)
|
fnm(...)
|
||||||
events:push_back{move=function()
|
events:push_back{move=function()
|
||||||
irm-=1
|
irm-=1
|
||||||
@ -1063,33 +1069,51 @@ end
|
|||||||
-- each row of level csv is offset,event,event-args...
|
-- each row of level csv is offset,event,event-args...
|
||||||
-- where offset,eol is a special case.
|
-- where offset,eol is a special case.
|
||||||
|
|
||||||
example_level_csv=[[1,spawn_frownie
|
example_level = {
|
||||||
60,spawn_bonus_vulcan_chasey
|
[1]=spawn_frownie,
|
||||||
61,spawn_blocky
|
[60]=spawn_bonus_vulcan_chasey,
|
||||||
85,spawn_spewy
|
[61]=spawn_blocky,
|
||||||
100,spawn_spewy
|
[85]=spawn_spewy,
|
||||||
115,spawn_spewy
|
[100]=spawn_spewy,
|
||||||
130,spawn_bonus_frownie
|
[115]=spawn_spewy,
|
||||||
145,spawn_spewy
|
[130]=spawn_bonus_frownie,
|
||||||
200,spawn_chasey
|
[145]=spawn_spewy,
|
||||||
250,spawn_blocking_blocky
|
[200]=spawn_chasey,
|
||||||
285,spawn_spec_gun_at,35,-11,blast_gun
|
[250]=spawn_blocking_blocky,
|
||||||
310,spawn_blocking_blocky
|
[285]=function()
|
||||||
310,spawn_blocking_blocky
|
spawn_spec_gun_at(35, -11, blast_gun)
|
||||||
310,spawn_blocking_blocky
|
end,
|
||||||
311,spawn_frownie
|
[310]=function()
|
||||||
350,spawn_main_gun_at,70,-11,protron_gun
|
spawn_blocking_blocky()
|
||||||
401,spawn_frownie
|
spawn_blocking_blocky()
|
||||||
420,spawn_blocking_frownie
|
spawn_blocking_blocky()
|
||||||
430,spawn_bonus_vulcan_chasey
|
end,
|
||||||
450,spawn_frownie
|
[311]=spawn_frownie,
|
||||||
465,spawn_bonus_frownie
|
[350]=function()
|
||||||
480,spawn_chasey
|
spawn_main_gun_at(70, -11, protron_gun)
|
||||||
500,multi,20,12,spawn_blocking_blocky
|
end,
|
||||||
501,spawn_bonus_frownie
|
[401]=spawn_frownie,
|
||||||
620,spawn_blocking_blocky
|
[420]=spawn_blocking_frownie,
|
||||||
700,spawn_blocking_boss_chasey
|
[430]=spawn_bonus_vulcan_chasey,
|
||||||
701,eol]]
|
[450]=spawn_frownie,
|
||||||
|
[465]=spawn_bonus_frownie,
|
||||||
|
[480]=spawn_chasey,
|
||||||
|
[500]=function()
|
||||||
|
local tnext = lframe
|
||||||
|
local remain = 20
|
||||||
|
events:push_back{move=function()
|
||||||
|
if (lframe < tnext) return false
|
||||||
|
spawn_blocking_blocky()
|
||||||
|
tnext = lframe + 0x0.000c
|
||||||
|
remain -= 1
|
||||||
|
return (remain <= 0)
|
||||||
|
end}
|
||||||
|
end,
|
||||||
|
[501]=spawn_bonus_frownie,
|
||||||
|
[620]=spawn_blocking_blocky,
|
||||||
|
[700]=spawn_blocking_boss_chasey,
|
||||||
|
[701]=eol
|
||||||
|
}
|
||||||
|
|
||||||
-->8
|
-->8
|
||||||
-- bullet and gun behaviors
|
-- bullet and gun behaviors
|
||||||
|
Loading…
Reference in New Issue
Block a user