From 27684077b587edc1c61e57ffd5740409e87f9c01 Mon Sep 17 00:00:00 2001 From: Eltrac Date: Tue, 4 Mar 2025 12:09:06 +0800 Subject: refactor: calling renderer --- render/renderer.lua | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 render/renderer.lua (limited to 'render/renderer.lua') 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 -- cgit v1.2.3