aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/sprite.lua5
-rw-r--r--src/textures.lua7
2 files changed, 8 insertions, 4 deletions
diff --git a/src/sprite.lua b/src/sprite.lua
index b790a9e..0048b9f 100644
--- a/src/sprite.lua
+++ b/src/sprite.lua
@@ -47,11 +47,12 @@ end)
function sprite_anim_sys(ent, dt)
local sprite = ent.sprite
local tag = sprite.anim.tags[sprite.active_tag]
+ local frame_duration = sprite.anim.frame_durations[sprite.frame]
sprite.timer = sprite.timer + dt
- if sprite.timer > tag.duration then
+ if sprite.timer > frame_duration then
sprite.frame = sprite.frame + 1
- sprite.timer = 0
+ sprite.timer = sprite.timer - frame_duration
end
if sprite.frame >= tag.to then
diff --git a/src/textures.lua b/src/textures.lua
index 9ed789c..05a00a3 100644
--- a/src/textures.lua
+++ b/src/textures.lua
@@ -5,8 +5,9 @@ local default_anim = {
frame_count = 1,
default_tag = "default",
tags = {
- default = {from=1, to=1, duration=1},
+ default = {from=1, to=1},
},
+ frame_durations = {0.1}
}
local img_bank = {}
@@ -20,6 +21,7 @@ local function load_ase(path)
local height = ase.header.height
local frames = {}
+ local durations = {}
local tags = {}
local default_tag
@@ -30,6 +32,7 @@ local function load_ase(path)
local buf = love.data.decompress("data", "zlib", cel.data)
local data = love.image.newImageData(cel.width, cel.height, "rgba8", buf)
local img = lg.newImage(data)
+ table.insert(durations, frame.frame_duration / 1000)
table.insert(frames, {img=img, x=cel.x, y=cel.y})
elseif chunk.type == 0x2018 then
for i, tag in ipairs(chunk.data.tags) do
@@ -41,7 +44,6 @@ local function load_ase(path)
from = tag.from + 1,
to = tag.to + 1,
-- this is placed wrong but idc
- duration = (tag.frame_duration or 100) / 1000,
}
end
end
@@ -60,6 +62,7 @@ local function load_ase(path)
frame_count = #frames,
default_tag = default_tag,
tags = tags,
+ frame_durations = durations,
}
end