diff --git a/updatedshmup.p8 b/updatedshmup.p8 index f43382e..6310360 100644 --- a/updatedshmup.p8 +++ b/updatedshmup.p8 @@ -469,6 +469,13 @@ function parser:val(_, ...) return ret end +function parser:bind(_, fn, ...) + local f = self[fn] + return function() + f(...) + end +end + -->8 --ship behavior @@ -958,6 +965,24 @@ end -->8 -- example level +level_parser = parser.new{} +mknew(level_parser) + +function level_parser:parse_level(lvl) + local ret = {} + self:parse_into(lvl, + function(row) + if (#row < 2 or type(row[1] ~= "number")) return + local idx = row[1] + local x = ret[idx] or {} + for j=2,#row do + add(x, row[j]) + end + ret[idx]=x + end) + return ret +end + function spawn_rnd_x(typ) s = typ.new{ x = rnd(104),