diff options
Diffstat (limited to 'src/sprite.lua')
| -rw-r--r-- | src/sprite.lua | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/src/sprite.lua b/src/sprite.lua index b7a7541..6cd8ede 100644 --- a/src/sprite.lua +++ b/src/sprite.lua @@ -1,9 +1,11 @@ Sprite = {} Sprite.__index = Sprite -function Sprite.new(tex_name) +function Sprite.new(tex_name, opts) local self = setmetatable({}, Sprite) + opts = opts or {} + self.tex = get_tex(tex_name) self.anim = get_anim(tex_name) @@ -16,11 +18,25 @@ function Sprite.new(tex_name) self.width = width / self.anim.frame_count self.height = height + local offsetx = opts.offsetx or 0 + local offsety = opts.offsety or 0 + + if offsetx < 1 and offsetx > -1 then + self.offsetx = self.width * offsetx + else + self.offsetx = offsetx + end + if offsety < 1 and offsety > -1 then + self.offsety = self.height * offsety + else + self.offsety = offsety + end + return self end -register_comp("Sprite", function(ent, tex_name) - ent.sprite = Sprite.new(tex_name) +register_comp("Sprite", function(ent, tex_name, opts) + ent.sprite = Sprite.new(tex_name, opts) end) function sprite_anim_sys(ent, dt) @@ -49,5 +65,10 @@ function sprite_draw_sys(ent) sprite.width, sprite.height, sprite.tex:getDimensions() ) - lg.draw(sprite.tex, q, ent.x or 0, ent.y or 0) + lg.draw( + sprite.tex, q, + ent.x or 0, ent.y or 0, + 0, 1, 1, + sprite.offsetx, sprite.offsety + ) end |
