From f42177192648ff6517740ed2003aeef3b0a081a9 Mon Sep 17 00:00:00 2001 From: Ivan Yuriev Date: Sun, 3 Aug 2025 03:39:42 +0300 Subject: [PATCH] refactoring --- camera.lua => lib/camera.lua | 0 lib/grid.lua | 2 +- lib/level.lua | 26 +++++++++++++++++++++++--- lib/utils.lua | 13 +++++++++++++ main.lua | 2 +- 5 files changed, 38 insertions(+), 5 deletions(-) rename camera.lua => lib/camera.lua (100%) diff --git a/camera.lua b/lib/camera.lua similarity index 100% rename from camera.lua rename to lib/camera.lua diff --git a/lib/grid.lua b/lib/grid.lua index 39dc63a..1c7f41b 100644 --- a/lib/grid.lua +++ b/lib/grid.lua @@ -1,4 +1,4 @@ -local utils = require("utils") +local utils = require "lib/utils" ---Generates an empty grid ---@param width number diff --git a/lib/level.lua b/lib/level.lua index 3addb26..57234aa 100644 --- a/lib/level.lua +++ b/lib/level.lua @@ -1,5 +1,25 @@ +local utils = require "lib/utils" +local camera = require "lib/camera" + +--- @class Level +--- @field characters Character[] +--- @field camera Camera +local level = {} +level.__index = level + local function new() - return { - characters = {} - } + return setmetatable({ + characters = {}, + camera = camera.new() + }, level) end + +function level:update(dt) + utils.each(self.characters, function(el) + el:update(dt) + end) +end + +return { + new = new +} diff --git a/lib/utils.lua b/lib/utils.lua index 11587b4..3e3e4d8 100644 --- a/lib/utils.lua +++ b/lib/utils.lua @@ -16,8 +16,21 @@ function P.generateList(count, generator) return xs end +--- Returns the sign of a number +--- @param number number +--- @return -1 | 0 | 1 function P.sign(number) return (number > 0 and 1) or (number == 0 and 0) or -1 end +--- Applies a side effect for each element of a table +--- @generic T +--- @param table {[any] : T} +--- @param fn fun(el: T): nil +function P.each(table, fn) + for _, value in ipairs(table) do + fn(value) + end +end + return P diff --git a/main.lua b/main.lua index 6338f84..6ccc444 100644 --- a/main.lua +++ b/main.lua @@ -2,7 +2,7 @@ require "character" -local camera = require 'camera' +local camera = require 'lib/camera' local Vec3 = require "lib/vec3" local tree = require "lib/tree"