mirror of
https://github.com/Keyslam-Group/Concord.git
synced 2025-09-02 12:24:11 -04:00
Added assemblages
This commit is contained in:
parent
11255fd722
commit
f7a394f057
12 changed files with 204 additions and 93 deletions
67
examples/assemblageTest/init.lua
Normal file
67
examples/assemblageTest/init.lua
Normal file
|
@ -0,0 +1,67 @@
|
|||
local Concord = require("lib").init({
|
||||
useEvents = true
|
||||
})
|
||||
local Entity = Concord.entity
|
||||
local Component = Concord.component
|
||||
local System = Concord.system
|
||||
local Assemblage = Concord.assemblage
|
||||
|
||||
local Game = Concord.instance()
|
||||
Concord.addInstance(Game)
|
||||
|
||||
local Legs = Component(function(e, legCount)
|
||||
e.legCount = legCount or 0
|
||||
end)
|
||||
|
||||
local Instinct = Component(function(e) -- luacheck: ignore
|
||||
end)
|
||||
|
||||
local Cool = Component(function(e, coolness)
|
||||
e.coolness = coolness
|
||||
end)
|
||||
|
||||
local Wings = Component(function(e)
|
||||
e.wingCount = 2
|
||||
end)
|
||||
|
||||
|
||||
local Animal = Assemblage(function(e, legCount)
|
||||
e
|
||||
:give(Legs, legCount)
|
||||
:give(Instinct)
|
||||
|
||||
print("Animal")
|
||||
end)
|
||||
|
||||
local Lion = Assemblage(function(e, coolness)
|
||||
e
|
||||
:assemble(Animal, 4)
|
||||
:give(Cool, coolness)
|
||||
|
||||
print("Lion")
|
||||
end)
|
||||
|
||||
local Eagle = Assemblage(function(e)
|
||||
e
|
||||
:assemble(Animal, 2)
|
||||
:give(Wings)
|
||||
|
||||
print("Eagle")
|
||||
end)
|
||||
|
||||
local Griffin = Assemblage(function(e, coolness)
|
||||
e
|
||||
:assemble(Animal, 4)
|
||||
:assemble(Lion, coolness * 2)
|
||||
:assemble(Eagle)
|
||||
end)
|
||||
|
||||
|
||||
local myAnimal = Entity()
|
||||
:assemble(Griffin, 5)
|
||||
--:apply()
|
||||
|
||||
print(myAnimal:has(Legs))
|
||||
print(myAnimal:has(Instinct))
|
||||
print(myAnimal:has(Cool))
|
||||
print(myAnimal:has(Wings))
|
|
@ -78,7 +78,7 @@ end
|
|||
function RandomRemover:update(dt)
|
||||
self.time = self.time + dt
|
||||
|
||||
if self.time >= 0.5 then
|
||||
if self.time >= 0.05 then
|
||||
self.time = 0
|
||||
|
||||
if self.pool.size > 0 then
|
||||
|
@ -95,7 +95,7 @@ Game:addSystem(RandomRemover(), "update")
|
|||
Game:addSystem(RectangleRenderer(), "draw")
|
||||
Game:addSystem(CircleRenderer(), "draw")
|
||||
|
||||
for i = 1, 100 do
|
||||
for _ = 1, 100 do
|
||||
local e = Entity()
|
||||
e:give(Position, love.math.random(0, 700), love.math.random(0, 700))
|
||||
e:give(Rectangle, love.math.random(5, 20), love.math.random(5, 20))
|
||||
|
@ -107,7 +107,7 @@ for i = 1, 100 do
|
|||
Game:addEntity(e)
|
||||
end
|
||||
|
||||
for i = 1, 100 do
|
||||
for _ = 1, 100 do
|
||||
local e = Entity()
|
||||
e:give(Position, love.math.random(0, 700), love.math.random(0, 700))
|
||||
e:give(Circle, love.math.random(5, 20))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue