local MainState = {} local pprint = require("lib.pprint") local nata = require("lib.nata") local Vec = require("lib.brinevector") local data = require("data") function MainState:enter() self.ecs = nata.new{ groups = { physical = {filter = {"pos", "vel"}}, player = {filter = { "pos", "acc", "speed", "bolt_count", "bolt_cooldown", "bolt_speed", "bolt_friction" }}, sprite = {filter = {"sprite"}}, bolt = {filter={"pos", "vel", "bolt"}} }, systems = { require("systems.physics"), require("systems.player"), require("systems.sprite") }, data = {} } self.ecs:queue{ pos = Vec(100, 100), vel = Vec(0, 0), acc = Vec(), sprite = {}, friction = 0.998, speed = 800, bolt_count = 1, bolt_speed = 1000, bolt_cooldown = 0.2, bolt_friction = 0.9 } end function MainState:update(dt) self.ecs:flush() self.ecs:emit("update", dt) if love.keyboard.isDown("escape") then love.event.quit() end end function MainState:mousemoved(...) self.ecs:emit("mousemoved", ...) end function MainState:keypressed(...) self.ecs:emit("keypressed", ...) end function MainState:draw() self.ecs:emit("draw") end return MainState