From 04817f1e518bf1f405a294de716f03112ca59bb5 Mon Sep 17 00:00:00 2001 From: Kazhnuz Date: Sat, 24 Aug 2019 21:10:41 +0200 Subject: [PATCH] improvement(cbs): rework effect grid --- .../scenes/battlesystem/map.lua | 36 ++++++++++++++++++- .../scenes/battlesystem/menu.lua | 6 ++++ .../scenes/battlesystem/world.lua | 1 + 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/sonic-radiance.love/scenes/battlesystem/map.lua b/sonic-radiance.love/scenes/battlesystem/map.lua index 536e04e..006ee05 100644 --- a/sonic-radiance.love/scenes/battlesystem/map.lua +++ b/sonic-radiance.love/scenes/battlesystem/map.lua @@ -1,6 +1,11 @@ local Map = Object:extend() local maputils = require "scenes.battlesystem.utils" +local TweenManager = require "game.modules.tweenmanager" + +local DURATION = 0.66 +local OPACITY_MIN = 0 +local OPACITY_MAX = 0.75 function Map:new(world, type, terrain) self.world = world @@ -11,6 +16,10 @@ function Map:new(world, type, terrain) self.datas.type = type or "city" self.datas.terrains = terrain or maputils.newEmptyMap() + self.tweens = TweenManager(self) + self.effectOpacity = OPACITY_MIN + self:increaseOpacity() + local zones = require "datas.gamedata.maps.shoot.zones" local datas = zones[self.datas.type] self.datas.background = datas.background @@ -38,6 +47,31 @@ function Map:isInGrid(x, y) return ( self:getTerrain(x, y) ~= nil ) end +function Map:update(dt) + self.tweens:update(dt) +end + +-- OPACITY FUNCTIONS +-- Simple functions to work on opacity + +function Map:decreaseOpacity() + self.tweens:newTween(0, DURATION/2, {effectOpacity = OPACITY_MIN}, "inExpo") + self.tweens:newTimer(DURATION/2, "increaseOpacity") +end + +function Map:increaseOpacity() + self.tweens:newTween(0, DURATION/2, {effectOpacity = OPACITY_MAX}, "inExpo") + self.tweens:newTimer(DURATION/2, "decreaseOpacity") +end + +function Map:timerResponse(timer) + if timer == "increaseOpacity" then + self:increaseOpacity() + elseif timer == "decreaseOpacity" then + self:decreaseOpacity() + end +end + -- DRAW FUNCTIONS -- Draw the battle map @@ -124,7 +158,7 @@ function Map:drawEffectGrid(effectGrid) for j=1,17 do if (effectGrid[i][j] == 1) then local x, y = maputils.gridToPixel(j, i) - love.graphics.setColor(1, 1, 1, .2) + love.graphics.setColor(1, 1, 1, self.effectOpacity) self.assets.images["emptytile"]:draw(x, y) love.graphics.setColor(1, 1, 1, 1) end diff --git a/sonic-radiance.love/scenes/battlesystem/menu.lua b/sonic-radiance.love/scenes/battlesystem/menu.lua index 609fccc..d7b8167 100644 --- a/sonic-radiance.love/scenes/battlesystem/menu.lua +++ b/sonic-radiance.love/scenes/battlesystem/menu.lua @@ -167,6 +167,8 @@ function CharMenuWidget:drawCanvas() end function CharMenuWidget:action() + self.scene.world:resetActiveGrid() + self.scene.world:resetEffectGrid() self.character:receiveSignal(self.actionType) self.scene:flushKeys() self.scene.menusystem:reset() @@ -190,6 +192,8 @@ function BackMenuWidget:new(scene, menu_name, label, character) end function BackMenuWidget:action() + self.scene.world:resetActiveGrid() + self.scene.world:resetEffectGrid() self.character:receiveBackSignal() self.scene:flushKeys() self.scene.menusystem:reset() @@ -261,6 +265,8 @@ function SkillWidget:drawCanvas() end function SkillWidget:action() + self.scene.world:resetActiveGrid() + self.scene.world:resetEffectGrid() if self.skilldata ~= nil then self.character:receiveSignal("skill", self.actionType) else diff --git a/sonic-radiance.love/scenes/battlesystem/world.lua b/sonic-radiance.love/scenes/battlesystem/world.lua index 0807c6b..0fe87aa 100644 --- a/sonic-radiance.love/scenes/battlesystem/world.lua +++ b/sonic-radiance.love/scenes/battlesystem/world.lua @@ -198,6 +198,7 @@ function World:update(dt) self.cursor:update(dt) self.tweens:update(dt) + self.map:update(dt) end function World:moveBattleCursor(dt)