--[[ Just a small test ]]-- local class = require("class") local Component = require("Component") local World = require("ECSWorld") local SystemFilter = require("SystemFilter") local System = require("System") local world = ECSWorld:new() local LifeComponent = Component() LifeComponent.__name = "LifeComponent" function LifeComponent:init(life, life_max) self.life = life self.life_max = life_max end local ManaComponent = Component() ManaComponent.__name = "ManaComponent" function ManaComponent:init(mana, mana_max) self.mana = mana self.mana_max = mana_max end local CreatureSystem = System() function CreatureSystem.update(dt, entities) for i,entity in ipairs(entities) do print(string.format( [[HP : %d/%d MP : %d/%d]], entity:getComponent(LifeComponent).life, entity:getComponent(LifeComponent).life_max, entity:getComponent(ManaComponent).mana, entity:getComponent(ManaComponent).mana_max)) end end local e = world:createEntity() world:registerSystem(CreatureSystem, LifeComponent, ManaComponent) print(LifeComponent) e:addComponent(LifeComponent, 10, 20) e:addComponent(ManaComponent, 10, 20) world:update(0) e:removeComponent(ManaComponent) world:update(0)