88 lines
1.8 KiB
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)
|