From 6124f00707856980f1c5a7809ebf03351783f4a4 Mon Sep 17 00:00:00 2001 From: Aki Date: Mon, 9 Apr 2018 01:56:08 +0200 Subject: Punch animations firing now also happens in Hero --- not/Hero.lua | 33 ++++++++++++++++++++++++++++----- not/Player.lua | 13 ------------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/not/Hero.lua b/not/Hero.lua index 650eed4..f49ed14 100644 --- a/not/Hero.lua +++ b/not/Hero.lua @@ -328,14 +328,37 @@ 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: While it's good that punch animation changes are here, it is still bad. There is too much similar code in this method. function Hero:punch (direction) self.punchCooldown = Hero.PUNCH_COOLDOWN - -- Choose shape based on punch direction. + self.salto = false + local shape - 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 + if direction == "left" then + shape = Hero.PUNCH_LEFT + if self.current ~= self.animations.damage then + self:setAnimation("attack") + end + end + if direction == "right" then + shape = Hero.PUNCH_RIGHT + if self.current ~= self.animations.damage then + self:setAnimation("attack") + end + end + if direction == "up" then + shape = Hero.PUNCH_UP + if self.current ~= self.animations.damage then + self:setAnimation("attack_up") + end + end + if direction == "down" then + shape = Hero.PUNCH_DOWN + if self.current ~= self.animations.damage then + self:setAnimation("attack_down") + end + end + -- Create and set sensor fixture. local fixture = self:addFixture(shape, 0) fixture:setSensor(true) diff --git a/not/Player.lua b/not/Player.lua index c6c4431..3722cb3 100644 --- a/not/Player.lua +++ b/not/Player.lua @@ -45,24 +45,11 @@ function Player:controlpressed (set, action, key) -- Punching if action == "attack" and self.punchCooldown <= 0 then local f = self.facing - self.salto = false if self:isControlDown("up") then - -- Punch up - if self.current ~= self.animations.damage then - self:setAnimation("attack_up") - end self:punch("up") elseif self:isControlDown("down") then - -- Punch down - if self.current ~= self.animations.damage then - self:setAnimation("attack_down") - end self:punch("down") else - -- Punch horizontal - if self.current ~= self.animations.damage then - self:setAnimation("attack") - end if f == 1 then self:punch("right") else -- cgit v1.1