aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/objs/player.lua5
-rw-r--r--src/sprite.lua29
2 files changed, 29 insertions, 5 deletions
diff --git a/src/objs/player.lua b/src/objs/player.lua
index 1e41523..58e5f3a 100644
--- a/src/objs/player.lua
+++ b/src/objs/player.lua
@@ -30,7 +30,10 @@ function new_player(x, y)
mask = {"hard"},
})
add_comp(ent, "Player")
- add_comp(ent, "Sprite", "res/img/player.ase")
+ add_comp(ent, "Sprite", "res/img/player.ase", {
+ offsetx = 0.5,
+ offsety = 0.5,
+ })
return ent
end
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