blob: b7a7541cd7d0d5fb4bb8e3ddb38b579ddede04d2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
Sprite = {}
Sprite.__index = Sprite
function Sprite.new(tex_name)
local self = setmetatable({}, Sprite)
self.tex = get_tex(tex_name)
self.anim = get_anim(tex_name)
self.active_tag = self.anim.default_tag
self.frame = self.anim.tags[self.active_tag].from
self.timer = 0
local width, height = self.tex:getDimensions()
self.width = width / self.anim.frame_count
self.height = height
return self
end
register_comp("Sprite", function(ent, tex_name)
ent.sprite = Sprite.new(tex_name)
end)
function sprite_anim_sys(ent, dt)
local sprite = ent.sprite
local tag = sprite.anim.tags[sprite.active_tag]
sprite.timer = sprite.timer + dt
if sprite.timer > tag.duration then
sprite.frame = sprite.frame + 1
sprite.timer = 0
end
if sprite.frame >= tag.to then
sprite.frame = tag.from
end
if sprite.frame < tag.from then
sprite.frame = tag.from
end
end
function sprite_draw_sys(ent)
local sprite = ent.sprite
local q = lg.newQuad(
sprite.width * sprite.frame, 0,
sprite.width, sprite.height,
sprite.tex:getDimensions()
)
lg.draw(sprite.tex, q, ent.x or 0, ent.y or 0)
end
|