diff --git a/sonic-radiance.love/assets/transitions/border.png b/sonic-radiance.love/assets/transitions/border.png new file mode 100644 index 0000000..93cc110 Binary files /dev/null and b/sonic-radiance.love/assets/transitions/border.png differ diff --git a/sonic-radiance.love/assets/transitions/eggdecal.png b/sonic-radiance.love/assets/transitions/eggdecal.png new file mode 100644 index 0000000..5f94fd7 Binary files /dev/null and b/sonic-radiance.love/assets/transitions/eggdecal.png differ diff --git a/sonic-radiance.love/assets/transitions/sonicdecal.png b/sonic-radiance.love/assets/transitions/sonicdecal.png new file mode 100644 index 0000000..f5f3039 Binary files /dev/null and b/sonic-radiance.love/assets/transitions/sonicdecal.png differ diff --git a/sonic-radiance.love/game/battle.lua b/sonic-radiance.love/game/battle.lua new file mode 100644 index 0000000..4df6dbf --- /dev/null +++ b/sonic-radiance.love/game/battle.lua @@ -0,0 +1,38 @@ +local CoreCBS = Object:extend() + +local battleutils = require "game.utils.battle" +local defTransitions = require "core.modules.transitions" +local radTransitions = require "game.modules.transitions" + +local DEFAULTX = 424/2 +local DEFAULTY = 240/2 + +function CoreCBS:new() + self.lastx, self.lasty = DEFAULTX, DEFAULTY +end + +function CoreCBS:startBattle(category, name, x, y) + local data = battleutils.getBattleData(category, name) + self.lastx, self.lasty = x or DEFAULTX, y or DEFAULTY + core.screen:startTransition(radTransitions.eggman, radTransitions.borders, function() scenes.cbs(data) end, x, y) +end + +function CoreCBS:endBattle(isFleeing) + local transitionEnd = radTransitions.sonic + if (isFleeing) then + transitionEnd = defTransitions.circle; + end + core.screen:startTransition(radTransitions.borders, transitionEnd, + function() + if (core.scenemanager:haveStoredScene("afterBattle")) then + core.scenemanager:setStoredScene("afterBattle") + else + scenes.debug.menu() + end + end, self.lastx, self.lasty) + self.lastx, self.lasty = DEFAULTX, DEFAULTY +end + + + +return CoreCBS \ No newline at end of file diff --git a/sonic-radiance.love/game/init.lua b/sonic-radiance.love/game/init.lua index c6b28e6..66599d1 100644 --- a/sonic-radiance.love/game/init.lua +++ b/sonic-radiance.love/game/init.lua @@ -28,6 +28,7 @@ local Characters = require "game.characters" local Ennemies = require "game.ennemies" local Skills = require "game.skills" local Loot = require "game.loot" +local CBSCore = require "game.battle" local binser = require "core.modules.gamesystem.libs.binser" @@ -43,6 +44,7 @@ function Game:new() self.ennemies = Ennemies(self) self.skills = Skills(self) self.loot = Loot(self) + self.cbs = CBSCore(self) self.flags = {} self.destroyedGizmo = {} diff --git a/sonic-radiance.love/game/modules/transitions/eggman.lua b/sonic-radiance.love/game/modules/transitions/eggman.lua new file mode 100644 index 0000000..2081a44 --- /dev/null +++ b/sonic-radiance.love/game/modules/transitions/eggman.lua @@ -0,0 +1,8 @@ +local DecalTransition = require "core.modules.transitions.decal" +local EggmanTransition = DecalTransition:extend() + +function EggmanTransition:new(func, ox, oy, fadeOut) + EggmanTransition.super.new(self, func, ox, oy, fadeOut, "eggdecal") +end + +return EggmanTransition \ No newline at end of file diff --git a/sonic-radiance.love/game/modules/transitions/init.lua b/sonic-radiance.love/game/modules/transitions/init.lua new file mode 100644 index 0000000..6aa01a5 --- /dev/null +++ b/sonic-radiance.love/game/modules/transitions/init.lua @@ -0,0 +1,5 @@ +return { + sonic = require "game.modules.transitions.sonic", + eggman = require "game.modules.transitions.eggman", + borders = require "game.modules.transitions.zigzag", +} \ No newline at end of file diff --git a/sonic-radiance.love/game/modules/transitions/sonic.lua b/sonic-radiance.love/game/modules/transitions/sonic.lua new file mode 100644 index 0000000..c636128 --- /dev/null +++ b/sonic-radiance.love/game/modules/transitions/sonic.lua @@ -0,0 +1,8 @@ +local DecalTransition = require "core.modules.transitions.decal" +local SonicTransition = DecalTransition:extend() + +function SonicTransition:new(func, ox, oy, fadeOut) + SonicTransition.super.new(self, func, ox, oy, fadeOut, "sonicdecal") +end + +return SonicTransition \ No newline at end of file diff --git a/sonic-radiance.love/game/modules/transitions/zigzag.lua b/sonic-radiance.love/game/modules/transitions/zigzag.lua new file mode 100644 index 0000000..3334c24 --- /dev/null +++ b/sonic-radiance.love/game/modules/transitions/zigzag.lua @@ -0,0 +1,41 @@ +local CanvasTransition = require "core.modules.transitions.canvas" +local ZigZagTransition = CanvasTransition:extend() + +function ZigZagTransition:new(func, ox, oy, fadeOut) + self.offset = 0 + ZigZagTransition.super.new(self, func, ox, oy, fadeOut, "inQuad", "outQuad", 1, 0.1) + +end + +function ZigZagTransition:loadResources() + self.border = love.graphics.newImage("assets/transitions/border.png") +end + +function ZigZagTransition:drawCanvas(dt) + local w, _ = self.border:getDimensions() + self.offset = (self.offset + (dt * 256)) % w + utils.graphics.resetColor() + love.graphics.rectangle("fill", 0, 0, 424, 240) + love.graphics.setColor(0,0,0,1) + local max = 120 + 16 + self:drawBorder(0 + max * (self.value), false) + utils.graphics.resetColor() + self:drawBorder(240 - max * (self.value), true) +end + +function ZigZagTransition:drawBorder(y, reversed) + local offset = self.offset + local sy = 1 + if (reversed) then + offset = self.offset * -1 + sy = -1 + end + local w, h = self.border:getDimensions() + local ox, oy = 0, h + for i = -1, math.ceil(424 / w), 1 do + love.graphics.draw(self.border,(i * w) + offset,y,0,1,sy,ox,oy) + end + +end + +return ZigZagTransition \ No newline at end of file