ecs/test/test.lua

88 lines
1.8 KiB
Lua

local ecs = require "ecs"
-- local test = require "ecs_test"
local Position = require "ecs.Position"
local Velocity = require "ecs.Velocity"
local Meta = require "ecs.Meta"
local Wrapper = require 'ecs.Wrapper'
manager = get_manager()
ent = manager:create_entity()
ent:add_component(Position.new(1.9, 9.7))
ent:add_component(Velocity.new(0.2, 0.3))
ent:add_component(Meta.new("Soldier"))
data = {
speed = 10,
something = "Hello, World!",
alive = true
}
ent:add_component(Wrapper.new("LuaData", data))
ent:add_component(Wrapper.new("TestThing", { test = 1.23563 }))
-- @todo Make this happen...
-- stats = {
-- hp = 100,
-- magic = 30
-- }
--
-- ent:add_component(ecs.Wrapper.new("Stats", stats))
print(ent:has_components("Position", "Velocity"))
pos = ent:get_component("Position")
print("x: " .. pos.x)
print("y: " .. pos.y)
vel = ent:get_component("Velocity")
print("v_x: " .. vel.x)
print("v_y: " .. vel.y)
print("View test")
manager:view("Position", "Velocity"):for_each(function(ent)
pos = ent:get_component("Position")
vel = ent:get_component("Velocity")
pos.x = pos.x + vel.x
pos.y = pos.y + vel.y
print(ent)
print("x: " .. pos.x)
print("y: " .. pos.y)
print("v_x: " .. vel.x)
print("v_y: " .. vel.y)
if ent:has_components("Meta") then
meta = ent:get_component("Meta")
print("name: " .. meta.name)
end
end)
-- @todo Implement this
-- for uuid,entity in pairs(view) do
-- print "TEST"
-- end
manager:view("LuaData"):for_each(function(ent)
d = ent:get_component("LuaData")
print(d.speed)
d.speed = 11
print(d.speed)
print(data.speed)
data.speed = 20
print(d.speed)
print(data.speed)
print(d.alive)
d.alive = false
print(d.alive)
print(d.something)
end)
manager:view("TestThing"):for_each(function(ent)
t = ent:get_component("TestThing")
print(t.test)
end)