diff options
Diffstat (limited to 'not')
-rw-r--r-- | not/Hero.lua | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/not/Hero.lua b/not/Hero.lua index 1f7cd8b..cb205bf 100644 --- a/not/Hero.lua +++ b/not/Hero.lua @@ -31,6 +31,12 @@ Hero.portrait_sheet = getNautsIconsList() Hero.portrait_box = love.graphics.newQuad(0, 15, 32,32, 80,130) Hero.sfx = require "config.sounds" +Hero.PUNCH_FIXTURE_LIFETIME = 0.08 +Hero.PUNCH_LEFT = {-2,-6, -20,-6, -20,6, -2,6} +Hero.PUNCH_RIGHT = {2,-6, 20,-6, 20,6, 2,6} +Hero.PUNCH_UP = {-8,-4, -8,-20, 8,-20, 8,-4} +Hero.PUNCH_DOWN = {-8,4, -8,20, 8,20, 8,4} + -- Constructor of `Hero`. function Hero:new (name, x, y, world) -- TODO: Statics moved temporarily here. Should be moved to e.g. `load()`. @@ -39,7 +45,7 @@ function Hero:new (name, x, y, world) Hero.portrait_frame = love.graphics.newImage("assets/menu.png") end -- Find imagePath based on hero name. - local fileName = name or Hero.name -- INITIAL from prototype + local fileName = name or Hero.name -- INITIAL local imagePath = string.format("assets/nauts/%s.png", fileName) -- `PhysicalBody` initialization. Hero.__super.new(self, x, y, world, imagePath) @@ -195,22 +201,21 @@ end -- Creates temporary fixture for hero's body that acts as sensor. -- direction: ("left", "right", "up", "down") -- Sensor fixture is deleted after time set in UserData[1]; deleted by `not.Hero.update`. --- TODO: Magic numbers present in `not.Hero.punch`. function Hero:punch (direction) - self.punchCooldown = Hero.punchCooldown -- INITIAL from prototype + self.punchCooldown = Hero.punchCooldown -- Choose shape based on punch direction. local shape - if direction == "left" then shape = {-2,-6, -20,-6, -20,6, -2,6} end - if direction == "right" then shape = {2,-6, 20,-6, 20,6, 2,6} end - if direction == "up" then shape = {-8,-4, -8,-20, 8,-20, 8,-4} end - if direction == "down" then shape = {-8,4, -8,20, 8,20, 8,4} end + if direction == "left" then shape = Hero.PUNCH_LEFT end + if direction == "right" then shape = Hero.PUNCH_RIGHT end + if direction == "up" then shape = Hero.PUNCH_UP end + if direction == "down" then shape = Hero.PUNCH_DOWN end -- Create and set sensor fixture. local fixture = self:addFixture(shape, 0) fixture:setSensor(true) fixture:setCategory(3) fixture:setMask(1,3) fixture:setGroupIndex(self.group) - fixture:setUserData({0.08, direction}) + fixture:setUserData({Hero.PUNCH_FIXTURE_LIFETIME, direction}) self:playSound(4) end @@ -270,3 +275,5 @@ function Hero:playSound (sfx, force) source:play() end end + +return Hero |