aboutsummaryrefslogtreecommitdiff
path: root/src/sprite.lua
diff options
context:
space:
mode:
Diffstat (limited to 'src/sprite.lua')
-rw-r--r--src/sprite.lua32
1 files changed, 28 insertions, 4 deletions
diff --git a/src/sprite.lua b/src/sprite.lua
index b7a7541..79a38bf 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,13 @@ 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.setColor(1, 1, 1)
+ lg.draw(
+ sprite.tex, q,
+ ent.x or 0, ent.y or 0,
+ ent.rotation or 0,
+ ent.scalex or ent.scale or 1, ent.scaley or ent.scale or 1,
+ sprite.offsetx, sprite.offsety,
+ ent.shearx or 0, ent.sheary or 0
+ )
end