From b25dfaa2de561e41dc39ba324f8a8d8e9361b92f Mon Sep 17 00:00:00 2001 From: Ivan Yuriev Date: Mon, 24 Mar 2025 23:03:45 +0300 Subject: [PATCH] implemented asset loading and animations --- animation.lua | 30 +++++++++++++++++++ asset_bundle.lua | 47 ++++++++++++++++++++++++++++++ player.png => assets/fallback.png | Bin assets/sprites/deer/walk_e.png | Bin 0 -> 4310 bytes assets/sprites/deer/walk_w.png | Bin 0 -> 3588 bytes deer_walking.png | Bin 0 -> 4310 bytes deer_walking_l.png | Bin 0 -> 3588 bytes entity.lua | 13 +++++++++ main.lua | 20 ++++++++++--- 9 files changed, 106 insertions(+), 4 deletions(-) create mode 100644 animation.lua create mode 100644 asset_bundle.lua rename player.png => assets/fallback.png (100%) create mode 100644 assets/sprites/deer/walk_e.png create mode 100644 assets/sprites/deer/walk_w.png create mode 100644 deer_walking.png create mode 100644 deer_walking_l.png create mode 100644 entity.lua diff --git a/animation.lua b/animation.lua new file mode 100644 index 0000000..bbcf30f --- /dev/null +++ b/animation.lua @@ -0,0 +1,30 @@ +local __Animation = { + spriteSheet = nil, + quads = nil, + fps = 12, + currentTime = 0 +} + +function Animation(image, width, height) + local animation = {} + animation.spriteSheet = image; + animation.quads = {}; + + for y = 0, image:getHeight() - height, height do + for x = 0, image:getWidth() - width, width do + table.insert(animation.quads, love.graphics.newQuad(x, y, width, height, image:getDimensions())) + end + end + + return setmetatable(animation, { __index = __Animation }) +end + +function __Animation:getFrame() + local frametime = 1 / self.fps + local frame = math.floor(self.currentTime / frametime) + return self.quads[frame + 1] +end + +function __Animation:update(dt) + self.currentTime = (self.currentTime + dt) % (#self.quads / self.fps) +end diff --git a/asset_bundle.lua b/asset_bundle.lua new file mode 100644 index 0000000..6ef99ce --- /dev/null +++ b/asset_bundle.lua @@ -0,0 +1,47 @@ +require "option.option" + +AssetBundle = { + root = "/assets", + files = {} +} + +function AssetBundle:load() + local function enumerate(path) + local tree = {} + + local contents = love.filesystem.getDirectoryItems(path) + for _, v in pairs(contents) do + local newPath = path .. "/" .. v + local type = love.filesystem.getInfo(newPath).type + if type == "file" then + local data = self.loadFile(newPath) + if data:is_some() then + tree[self.cutExtension(v)] = data:unwrap() + end + end + if type == "directory" then + tree[v] = enumerate(newPath) + end + end + + return tree + end + + self.files = enumerate(self.root) +end + +function AssetBundle.loadFile(path) + local filedata = love.filesystem.newFileData(path) + local ext = filedata:getExtension() + if (ext == "png") then + local img = love.graphics.newImage(path) + img:setFilter("nearest", "nearest") + return + Some(img) + end + return None +end + +function AssetBundle.cutExtension(filename) + return string.match(filename, '(.+)%.(.+)') +end diff --git a/player.png b/assets/fallback.png similarity index 100% rename from player.png rename to assets/fallback.png diff --git a/assets/sprites/deer/walk_e.png b/assets/sprites/deer/walk_e.png new file mode 100644 index 0000000000000000000000000000000000000000..abfb27905e09d02027082e2b4545e66dbf9c76c0 GIT binary patch literal 4310 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 literal 0 HcmV?d00001 diff --git a/assets/sprites/deer/walk_w.png b/assets/sprites/deer/walk_w.png new file mode 100644 index 0000000000000000000000000000000000000000..945723d82dcfe745e110462d8c1e510244312930 GIT binary patch literal 3588 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 literal 0 HcmV?d00001 diff --git a/deer_walking_l.png b/deer_walking_l.png new file mode 100644 index 0000000000000000000000000000000000000000..945723d82dcfe745e110462d8c1e510244312930 GIT binary patch literal 3588 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 0 and animation_r or animation_l + love.graphics.draw(animation.spriteSheet, animation:getFrame(), Player.position().x, Player.position().y, 0, 4, 4) end function love.conf(t) t.console = true -end \ No newline at end of file +end