diff --git a/sonic-radiance.love/scenes/battlesystem/actors/battler.lua b/sonic-radiance.love/scenes/battlesystem/actors/battler.lua index fb170a1..b80f03e 100644 --- a/sonic-radiance.love/scenes/battlesystem/actors/battler.lua +++ b/sonic-radiance.love/scenes/battlesystem/actors/battler.lua @@ -22,6 +22,7 @@ function Battler:setActive() end function Battler:update(dt) + Battler.super.update(self, dt) if (self.isActive) then self.debugActiveTimer = self.debugActiveTimer + dt if self.debugActiveTimer >= 0.5 then diff --git a/sonic-radiance.love/scenes/battlesystem/actors/ennemy.lua b/sonic-radiance.love/scenes/battlesystem/actors/ennemy.lua index 987227f..58aeadc 100644 --- a/sonic-radiance.love/scenes/battlesystem/actors/ennemy.lua +++ b/sonic-radiance.love/scenes/battlesystem/actors/ennemy.lua @@ -13,6 +13,8 @@ function Ennemy:new(world, x, y, id, number) self:receiveDatas() self.hp = self.data.stats.hpmax self.pp = self.data.stats.ppmax + + self.shownHP = self.hp end function Ennemy:draw() @@ -27,7 +29,7 @@ function Ennemy:drawHUD() love.graphics.setColor(0, 0, 0, 1) gui.drawBar(x - 14, y - 38, 26, 4) love.graphics.setColor(248/255, 160/255, 0, 1) - local bar = math.floor(24 * (self.hp / self.data.stats.hpmax)) + local bar = math.floor(24 * (self.shownHP / self.data.stats.hpmax)) gui.drawBar(x - 14, y - 37, bar, 2) love.graphics.setColor(1, 1, 1, 1) @@ -49,6 +51,7 @@ function Ennemy:setHP(value, relative) end self.hp = value + self.tweens:newTween(0, 0.1, {shownHP = self.hp}, 'inCubic') if (self.hp <= 0) then self:destroy() end diff --git a/sonic-radiance.love/scenes/battlesystem/actors/hero.lua b/sonic-radiance.love/scenes/battlesystem/actors/hero.lua index 37266b0..6848e57 100644 --- a/sonic-radiance.love/scenes/battlesystem/actors/hero.lua +++ b/sonic-radiance.love/scenes/battlesystem/actors/hero.lua @@ -55,7 +55,7 @@ end -- Update the hero function Hero:update(dt) - self:updateSprite(dt) + Hero.super.update(self, dt) self.keys = self.scene:getKeys(1) if (self.currentAction == "moving") then diff --git a/sonic-radiance.love/scenes/battlesystem/actors/parent.lua b/sonic-radiance.love/scenes/battlesystem/actors/parent.lua index 900ad02..646b41b 100644 --- a/sonic-radiance.love/scenes/battlesystem/actors/parent.lua +++ b/sonic-radiance.love/scenes/battlesystem/actors/parent.lua @@ -2,6 +2,8 @@ local Parent = Object:extend() -- On créer la classe des entitées, c'est la cl local maputils = require "scenes.battlesystem.utils" +local TweenManager = require "game.modules.tweenmanager" + -- INIT FUNCTION -- Initilize the actor @@ -25,6 +27,9 @@ function Parent:new(world, x, y, z) self.isEnnemy = false self.isDestroyed = false + self.tweens = TweenManager(self) + + self:setSprite() self:register() end @@ -39,6 +44,7 @@ end function Parent:update(dt) self:updateSprite(dt) + self.tweens:update(dt) end -- SPRITE FUNCTIONS diff --git a/sonic-radiance.love/scenes/battlesystem/cursor.lua b/sonic-radiance.love/scenes/battlesystem/cursor.lua index 0bc78b4..6297e83 100644 --- a/sonic-radiance.love/scenes/battlesystem/cursor.lua +++ b/sonic-radiance.love/scenes/battlesystem/cursor.lua @@ -1,12 +1,15 @@ local Cursor = Object:extend() local maputils = require "scenes.battlesystem.utils" +local TweenManager = require "game.modules.tweenmanager" function Cursor:new(world) self.world = world self.scene = world.scene self.assets = world.assets + self.tweens = TweenManager(self) + self.x = 1 self.y = 1 self.isActive = false @@ -81,28 +84,32 @@ function Cursor:update(dt) if (self.isActive) then local keys = self.scene:getKeys(1) - if (keys["up"].isPressed) then + if (keys["up"].isDown and self.y == self.ty) then dy = math.max(self.y - 1, 1) if (self.grid[dy][self.x] == 1) then self.y = dy + self:addTween() end end - if (keys["down"].isPressed) then + if (keys["down"].isDown and self.y == self.ty) then dy = math.min(self.y + 1, 7) if (self.grid[dy][self.x] == 1) then self.y = dy + self:addTween() end end - if (keys["left"].isPressed) then + if (keys["left"].isDown and self.x == self.tx) then dx = math.max(self.x - 1, 1) if (self.grid[self.y][dx] == 1) then self.x = dx + self:addTween() end end - if (keys["right"].isPressed) then + if (keys["right"].isDown and self.x == self.tx) then dx = math.min(self.x + 1, 12) if (self.grid[self.y][dx] == 1) then self.x = dx + self:addTween() end end @@ -110,13 +117,14 @@ function Cursor:update(dt) self.world:sendSignalToCurrentBattler() end - self.tx = (self.tx) + ((self.x) - (self.tx)) * dt*30 - self.ty = (self.ty) + ((self.y) - (self.ty)) * dt*30 - -- test - --game + self.tweens:update(dt) end end +function Cursor:addTween() + self.tweens:newTween(0, 0.2, {tx = self.x, ty = self.y}, 'inCubic') +end + function Cursor:drawBottom() if (self.isActive) then diff --git a/sonic-radiance.love/scenes/battlesystem/world.lua b/sonic-radiance.love/scenes/battlesystem/world.lua index 67618f6..9110ff3 100644 --- a/sonic-radiance.love/scenes/battlesystem/world.lua +++ b/sonic-radiance.love/scenes/battlesystem/world.lua @@ -4,6 +4,8 @@ local maputils = require "scenes.battlesystem.utils" local Map = require "scenes.battlesystem.map" local Cursor = require "scenes.battlesystem.cursor" +local TweenManager = require "game.modules.tweenmanager" + local POSITIONS = { {x = 3, y = 4}, {x = 2, y = 2}, @@ -42,6 +44,8 @@ function World:new(scene, battlefile) self.map = Map(self, "city") self.cursor = Cursor(self) + self.tweens = TweenManager(self) + self:initHeroes() self:initEnnemies() self:initHUD() @@ -187,15 +191,10 @@ function World:update(dt) if (self.isBattleActive) then self:updateTurns(dt) - local dPosition = math.floor(self.playerHUDPosition + dt * 256) - self.playerHUDPosition = math.min(dPosition, 36) - else - local dPosition = math.floor(self.playerHUDPosition - dt * 256) - self.playerHUDPosition = math.max(dPosition, -64) end - self:moveBattleCursor(dt) self.cursor:update(dt) + self.tweens:update(dt) end function World:moveBattleCursor(dt) @@ -217,6 +216,7 @@ end function World:startBattle() self.isBattleActive = true + self.tweens:newTween(0, 0.4, {playerHUDPosition = 36}, 'inCubic') end function World:recalculateTurns() @@ -243,6 +243,7 @@ function World:switchActiveBattler() self:selectNextAction() self.turns.changeBattler = false + self.tweens:newTween(0, 0.2, {BattlerCursor = self.turns.current}, 'inCubic') end end @@ -264,6 +265,7 @@ end function World:finishBattle() self.isBattleActive = false + self.tweens:newTween(0, 0.4, {playerHUDPosition = -64}, 'inCubic') self.actionlist = {} self.scene:finishBattle() end