summaryrefslogtreecommitdiffhomepage
path: root/not/Trap.lua
diff options
context:
space:
mode:
Diffstat (limited to 'not/Trap.lua')
-rw-r--r--not/Trap.lua76
1 files changed, 76 insertions, 0 deletions
diff --git a/not/Trap.lua b/not/Trap.lua
new file mode 100644
index 0000000..84de5b0
--- /dev/null
+++ b/not/Trap.lua
@@ -0,0 +1,76 @@
+Trap = require "not.PhysicalBody":extends()
+
+-- TODO: Move flames' animations to config file.
+local animations = {
+ default = {
+ [1] = love.graphics.newQuad(0, 0, 42, 19, 168, 19),
+ [2] = love.graphics.newQuad(42, 0, 42, 19, 168, 19),
+ frames = 2,
+ repeated = true
+ },
+ fadein = {
+ [1] = love.graphics.newQuad(84, 0, 42, 19, 168, 19),
+ [2] = love.graphics.newQuad(126, 0, 42, 19, 168, 19),
+ frames = 2,
+ repeated = false
+ },
+ fadeout = {
+ [1] = love.graphics.newQuad(126, 0, 42, 19, 168, 19),
+ [2] = love.graphics.newQuad(84, 0, 42, 19, 168, 19),
+ frames = 2,
+ repeated = false
+ }
+}
+
+function Trap:new (direction, x, y, world, imagePath)
+ Trap.__super.new(self, x, y, world, imagePath)
+ self:setAnimationsList(animations)
+ self:setBodyType("static")
+
+ local mirror = 1
+ if direction == "left" then mirror = -1 end
+ local fixture = self:addFixture({0, 0, 41 * mirror, 0, 41 * mirror, 18, 0, 18})
+ fixture:setCategory(3)
+ fixture:setMask(1)
+ fixture:setUserData({0, direction})
+ fixture:setSensor(true)
+
+ self.mirror = mirror
+end
+
+function Trap:fadeIn ()
+ self.hidden = false
+ self:setBodyActive(true)
+ if self.animations.fadein then
+ self:setAnimation("fadein")
+ end
+end
+
+function Trap:fadeOut ()
+ self:setBodyActive(false)
+ if self.animations.fadeout then
+ self:setAnimation("fadeout")
+ else
+ self.hidden = true
+ end
+end
+
+function Trap:getHorizontalMirror ()
+ return self.mirror
+end
+
+function Trap:goToNextFrame ()
+ if self.current.repeated or not (self.frame == self.current.frames) then
+ self.frame = (self.frame % self.current.frames) + 1
+ elseif self.current == self.animations.fadeout then
+ self:setAnimation("default")
+ self.hidden = true
+ else
+ self:setAnimation("default")
+ end
+end
+
+-- TODO: Trap@damage is hotfix for clashing.
+function Trap:damage () end
+
+return Trap