diff --git a/vacuum_gambit.p8 b/vacuum_gambit.p8 index 97c2d48..cbc47a5 100644 --- a/vacuum_gambit.p8 +++ b/vacuum_gambit.p8 @@ -466,6 +466,14 @@ end -->8 --ship behavior +-- generic full sprite hurtbox +box8 = { + x_off = 0, + y_off = 1, + width = 8, + height = 8 +} + scrollrate = 0.25 --in px/frame ship_m = mknew{ @@ -1347,7 +1355,6 @@ chasey = mknew(ship_m.new{ end }) --- todo: use constraints function chasey:act() self.xmin = max(primary_ship.x-8, 0) self.xmax = min(primary_ship.x + 8, 112 - 8*self.size) @@ -1385,6 +1392,51 @@ xl_chasey=mknew(chasey.new{ end, }) +-- flotilla ships + +ship_f = mknew(ship_m.new{ + -- sprite required + size = 1, + hurt = box8, + -- no sparks + hp = 0.5, + xp = 0x0.0001, + + maxspd = 3, + thrust = 0.15, + drag = 0.05, + slip = false, + act = function(self) + local wx,wy=self.want_x,self.want_y + self.xmin,self.xmax,self.ymin,self.ymax = wx,wx,wy,wy + return 0,0,false,false + end, +}) + +ship_mook = mknew(ship_f.new{ + sprite=103 +}) +ship_defender = mknew(ship_f.new{ + sprite=105, + hp = 2.5, + xp = 0x0.0003, +}) +ship_turret = mknew(ship_f.new{ + sprite=106, + xp = 0x0.0002, +}) +ship_skirmisher = mknew(ship_f.new{ + sprite=107, + xp = 0x0.0004, +}) + +function rnd_spawn_loc() + local x,y = flr(rnd(304)), flr(rnd(32)) + if (x<184) return x-40,-y-8 + if (x<244) return -y-8,x-184 + return 112+y, x-244 +end + -->8 -- collisions @@ -1672,6 +1724,18 @@ function multi(times, interval, fnm, ...) end} end +function demo_spawn_f(ttn) + local spx,spy=rnd_spawn_loc() + local s = _ENV[ttn].new{ + x = spx, + y = spy, + want_x = 8 + rnd(96), + want_y = 8 + rnd(64) + } + eships:push_back(s) + return s +end + -- then convert sample_level to csv. -- spawn_spec_gun_at and spawn_main_gun_at will need parsed forms. -- the boss also needs to be reachable, but one-off is fine. @@ -1679,6 +1743,10 @@ end -- where offset,eol is a special case. example_level_csv=[[1,spawn_frownie +20,demo_spawn_f,ship_mook +25,demo_spawn_f,ship_defender +30,demo_spawn_f,ship_turret +35,demo_spawn_f,ship_skirmisher 60,spawn_vulcan_chasey 61,spawn_blocky 85,spawn_spewy