From dd84e157bddf658e8830ab4110a94e5268acb880 Mon Sep 17 00:00:00 2001 From: PeaAshMeter Date: Sun, 28 Sep 2025 23:47:50 +0300 Subject: [PATCH] refactor Character:addBehavior --- lib/character/character.lua | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/lib/character/character.lua b/lib/character/character.lua index d124a7b..0c40abb 100644 --- a/lib/character/character.lua +++ b/lib/character/character.lua @@ -74,22 +74,24 @@ function character:try(behavior, fn) end --- usage: ---- addModules( {logic.new(), graphics.new(), ...} ) +--- addBehavior( {logic.new(), graphics.new(), ...} ) --- --- or you may chain this if you are a wannabe haskell kiddo -function character:addBehavior(modules) - for _, module in ipairs(modules) do - if module.dependencies then - for _, dep in ipairs(module.dependencies) do +--- @param behaviors Behavior[] +--- @return Character | nil +function character:addBehavior(behaviors) + for _, b in ipairs(behaviors) do + if b.dependencies then + for _, dep in ipairs(b.dependencies) do if not self:has(dep) then - return print("[Character]: cannot add \"" .. module.id .. + return print("[Character]: cannot add \"" .. b.id .. "\" for a character (Id = " .. self.id .. "): needs \"" .. dep.id .. "\"!") end end end - module.owner = self - table.insert(self.behaviors, module) - self._behaviorsIdx[module.id] = #self.behaviors + b.owner = self + table.insert(self.behaviors, b) + self._behaviorsIdx[b.id] = #self.behaviors end return self end