main.lua 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. --[[
  2. Just a small test
  3. ]]--
  4. local class = require("class")
  5. local Component = require("Component")
  6. local World = require("ECSWorld")
  7. local SystemFilter = require("SystemFilter")
  8. local System = require("System")
  9. local world = ECSWorld:new()
  10. local LifeComponent = Component()
  11. LifeComponent.__name = "LifeComponent"
  12. function LifeComponent:init(life, life_max)
  13. self.life = life
  14. self.life_max = life_max
  15. end
  16. local ManaComponent = Component()
  17. ManaComponent.__name = "ManaComponent"
  18. function ManaComponent:init(mana, mana_max)
  19. self.mana = mana
  20. self.mana_max = mana_max
  21. end
  22. local CreatureSystem = System()
  23. function CreatureSystem.update(dt, entities)
  24. for i,entity in ipairs(entities) do
  25. print(string.format(
  26. [[HP : %d/%d
  27. MP : %d/%d]],
  28. entity:getComponent(LifeComponent).life,
  29. entity:getComponent(LifeComponent).life_max,
  30. entity:getComponent(ManaComponent).mana,
  31. entity:getComponent(ManaComponent).mana_max))
  32. end
  33. end
  34. local e = world:createEntity()
  35. world:registerSystem(CreatureSystem, LifeComponent, ManaComponent)
  36. print(LifeComponent)
  37. e:addComponent(LifeComponent, 10, 20)
  38. e:addComponent(ManaComponent, 10, 20)
  39. world:update(0)
  40. e:removeComponent(ManaComponent)
  41. world:update(0)