local lecs = require("lecs.init") local Component = lecs.Component local System = lecs.System local World = lecs.World local PlayerComponent = class("PlayerComponent", Component) function PlayerComponent:ctor(...) PlayerComponent.super.ctor(self, ...) self.name = "Joe" self.phrase = "I'm a plumber." self.mass = 150 self.hairColor = "brown" end local TalkingSystem = class("TalkingSystem", System) function TalkingSystem:CreateFilter() return self.filter.RequireAll(PlayerComponent) end function TalkingSystem:Update(entities, dt) for _, e in ipairs(entities) do local PlayerComp = e:GetComponent("PlayerComponent") PlayerComp.mass = PlayerComp.mass + dt * 3 print(("%s who weighs %d pounds, says %q."):format(PlayerComp.name, PlayerComp.mass, PlayerComp.phrase)) end end local world = World.new() local talk_system = TalkingSystem.new() world:AddSystem(talk_system) local playerEntity = world:CreateEntity() playerEntity:AddComponent(PlayerComponent.new()) return function() for _ = 1, 20 do world:Update(1) end end -- skynet.timeout(20 * 100, function () -- require("fecs.test")() -- end)