diff options
| author | Eltrac <hi@guhub.cn> | 2025-03-04 12:09:06 +0800 |
|---|---|---|
| committer | Eltrac <hi@guhub.cn> | 2025-03-04 12:09:06 +0800 |
| commit | 27684077b587edc1c61e57ffd5740409e87f9c01 (patch) | |
| tree | c4fb5f8738ffc38144ae54fa05aa52cc05946197 /render/renderer.lua | |
| parent | e7b8b3c3113cbdb652a27dce888e6b5a1c97f9a4 (diff) | |
refactor: calling renderer
Diffstat (limited to 'render/renderer.lua')
| -rw-r--r-- | render/renderer.lua | 30 |
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 |
