64 lines
1.2 KiB
Lua
64 lines
1.2 KiB
Lua
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
|