summaryrefslogtreecommitdiff
path: root/render/renderer.lua
diff options
context:
space:
mode:
authorEltrac <hi@guhub.cn>2025-03-04 12:09:06 +0800
committerEltrac <hi@guhub.cn>2025-03-04 12:09:06 +0800
commit27684077b587edc1c61e57ffd5740409e87f9c01 (patch)
treec4fb5f8738ffc38144ae54fa05aa52cc05946197 /render/renderer.lua
parente7b8b3c3113cbdb652a27dce888e6b5a1c97f9a4 (diff)
refactor: calling renderer
Diffstat (limited to 'render/renderer.lua')
-rw-r--r--render/renderer.lua30
1 files changed, 30 insertions, 0 deletions
diff --git a/render/renderer.lua b/render/renderer.lua
new file mode 100644
index 0000000..0a2404e
--- /dev/null
+++ b/render/renderer.lua
@@ -0,0 +1,30 @@
+local Renderer = {}
+
+function Renderer:new()
+ local obj = { layers = {} }
+ setmetatable(obj, self)
+ self.__index = self
+ return obj
+end
+
+function Renderer:add(layer, obj, drawFunc)
+ if not self.layers[layer] then
+ self.layers[layer] = {}
+ end
+ table.insert(self.layers[layer], { object = obj, draw = drawFunc })
+end
+
+function Renderer:draw()
+ -- 确保按照顺序绘制
+ local layerOrder = { "background", "objects", "ui" }
+
+ for _, layer in ipairs(layerOrder) do
+ if self.layers[layer] then
+ for _, item in ipairs(self.layers[layer]) do
+ item.draw(item.object)
+ end
+ end
+ end
+end
+
+return Renderer