diff --git a/debug.sh b/debug.sh new file mode 100755 index 0000000..115a66b --- /dev/null +++ b/debug.sh @@ -0,0 +1 @@ +love ./sonic-radiance.love DEBUGLEVEL=4 \ No newline at end of file diff --git a/launch.sh b/launch.sh new file mode 100755 index 0000000..487ffd1 --- /dev/null +++ b/launch.sh @@ -0,0 +1 @@ +love ./sonic-radiance.love \ No newline at end of file diff --git a/sonic-radiance.love/birb/core/debug.lua b/sonic-radiance.love/birb/core/debug.lua index 372b7f4..6e2531f 100644 --- a/sonic-radiance.love/birb/core/debug.lua +++ b/sonic-radiance.love/birb/core/debug.lua @@ -23,7 +23,7 @@ local DebugSystem = Object:extend() -local lovebird = require "birb.libs.lovebird" +local lovebird local Levels = enum { "ERROR", @@ -32,18 +32,19 @@ local Levels = enum { "DEBUG" } -function DebugSystem:new(controller) +function DebugSystem:new(controller, debugLevel) self.controller = controller - self.debugLevel = self.controller.conf.debugLevel or Levels.INFO + self.debugLevel = debugLevel or Levels.WARNING self.active = (self.debugLevel == Levels.DEBUG) if (self.active) then + lovebird = require "birb.libs.lovebird" lovebird.update() end end function DebugSystem:update(dt) - if (self.active) then + if (self.active and lovebird ~= nil) then lovebird.update(dt) end end diff --git a/sonic-radiance.love/birb/core/init.lua b/sonic-radiance.love/birb/core/init.lua index 50eb89e..0e4f132 100644 --- a/sonic-radiance.love/birb/core/init.lua +++ b/sonic-radiance.love/birb/core/init.lua @@ -40,10 +40,11 @@ local DataManager = require(cwd .. "datas") -- INIT FUNCTIONS -- Initialize and configure the core object -function CoreSystem:new() +function CoreSystem:new(args) + self.args = args self:setDefaultConf() - self.debug = DebugSystem(self) + self.debug = DebugSystem(self, self:getArg("DEBUGLEVEL", true)) self.options = Options(self) self.input = Input(self) self.screen = Screen(self) @@ -77,6 +78,20 @@ function CoreSystem:getIdentity(versionned) return identity end +function CoreSystem:getArg(name, isNumber) + for _, arg in ipairs(self.args) do + print(arg) + local argData = utils.string.split(arg, "=") + if (argData[1] == name) then + if (isNumber == true) then + return tonumber(argData[2]) + else + return argData[2] + end + end + end +end + -- MOUSE FUNCTIONS -- get directly the mouse when needed diff --git a/sonic-radiance.love/birb/init.lua b/sonic-radiance.love/birb/init.lua index 0f13883..b6827c4 100644 --- a/sonic-radiance.love/birb/init.lua +++ b/sonic-radiance.love/birb/init.lua @@ -33,15 +33,15 @@ enum = require("birb.utils.enum") birb.Core = require("birb.core") -function birb.start(gamemodule) - birb.startCore() +function birb.start(gamemodule, args) + birb.startCore(args) if (gamemodule ~= nil) then birb.startGame(gamemodule) end end -function birb.startCore() - core = birb.Core() +function birb.startCore(args) + core = birb.Core(args) end function birb.startGame(gamemodule) diff --git a/sonic-radiance.love/birb/libs/talkies.lua b/sonic-radiance.love/birb/libs/talkies.lua index c888b2d..0b4456c 100644 --- a/sonic-radiance.love/birb/libs/talkies.lua +++ b/sonic-radiance.love/birb/libs/talkies.lua @@ -102,7 +102,7 @@ local Talkies = { titleBackgroundColor = nil, titleBorderColor = nil, messageColor = {1, 1, 1}, - messageBackgroundColor = {0, 0, 0, 0.5}, + messageBackgroundColor = {0, 0, 0, 0.8}, messageBorderColor = nil, rounding = 0, diff --git a/sonic-radiance.love/conf.lua b/sonic-radiance.love/conf.lua index 985872b..b729630 100644 --- a/sonic-radiance.love/conf.lua +++ b/sonic-radiance.love/conf.lua @@ -4,7 +4,6 @@ function love.conf(t) t.console = false -- Attach a console (boolean, Windows only) t.accelerometerjoystick = false -- Enable the accelerometer on iOS and Android by exposing it as a Joystick (boolean) t.gammacorrect = false -- Enable gamma-correct rendering, when supported by the system (boolean) - t.debugLevel = 4 -- Debug level mode : 0=Error only, 3=Everything. t.gameversion = "0.0.7" -- The game version (different than love2D version) t.window.title = "Sonic Radiance" -- The window title (string) diff --git a/sonic-radiance.love/datas/gamedata/characters/amy/skills.lua b/sonic-radiance.love/datas/gamedata/characters/amy/skills.lua index 04220c4..a3bd261 100644 --- a/sonic-radiance.love/datas/gamedata/characters/amy/skills.lua +++ b/sonic-radiance.love/datas/gamedata/characters/amy/skills.lua @@ -1,3 +1,3 @@ return { - + {"hitcombo", 2}, } diff --git a/sonic-radiance.love/datas/gamedata/characters/amy/sprites.lua b/sonic-radiance.love/datas/gamedata/characters/amy/sprites.lua index 8c06048..86026dc 100644 --- a/sonic-radiance.love/datas/gamedata/characters/amy/sprites.lua +++ b/sonic-radiance.love/datas/gamedata/characters/amy/sprites.lua @@ -78,23 +78,23 @@ return { pauseAtEnd = true, }, ["spindash"] = { - startAt = 46, - endAt = 48, - loop = 37, + startAt = 59, + endAt = 62, + loop = 59, speed = 25, pauseAtEnd = false, }, ["spindash_full"] = { - startAt = 41, - endAt = 44, - loop = 41, + startAt = 59, + endAt = 62, + loop = 59, speed = 25, pauseAtEnd = false, }, ["spin"] = { - startAt = 45, - endAt = 48, - loop = 45, + startAt = 55, + endAt = 58, + loop = 55, speed = 25, pauseAtEnd = false, }, diff --git a/sonic-radiance.love/datas/gamedata/characters/amy/sprites.png b/sonic-radiance.love/datas/gamedata/characters/amy/sprites.png index ad36196..ea4b3f8 100644 Binary files a/sonic-radiance.love/datas/gamedata/characters/amy/sprites.png and b/sonic-radiance.love/datas/gamedata/characters/amy/sprites.png differ diff --git a/sonic-radiance.love/datas/gamedata/characters/sonic/skills.lua b/sonic-radiance.love/datas/gamedata/characters/sonic/skills.lua index 2aed1c1..4a5b1bb 100644 --- a/sonic-radiance.love/datas/gamedata/characters/sonic/skills.lua +++ b/sonic-radiance.love/datas/gamedata/characters/sonic/skills.lua @@ -1,8 +1,7 @@ return { --{attack_name, level}, - {"spinattack", 2}, + {"spindash", 2}, --{"spinjump", 3}, - {"spindash", 8}, {"hommingattack", 11}, {"spinattack", 15}, {"sonicflare", 18}, diff --git a/sonic-radiance.love/datas/gamedata/characters/tails/sprites.lua b/sonic-radiance.love/datas/gamedata/characters/tails/sprites.lua index e5ed31b..19ad024 100644 --- a/sonic-radiance.love/datas/gamedata/characters/tails/sprites.lua +++ b/sonic-radiance.love/datas/gamedata/characters/tails/sprites.lua @@ -78,23 +78,23 @@ return { pauseAtEnd = true, }, ["spindash"] = { - startAt = 46, - endAt = 48, - loop = 37, + startAt = 66, + endAt = 73, + loop = 66, speed = 25, pauseAtEnd = false, }, ["spindash_full"] = { - startAt = 41, - endAt = 44, - loop = 41, + startAt = 66, + endAt = 73, + loop = 66, speed = 25, pauseAtEnd = false, }, ["spin"] = { - startAt = 45, - endAt = 48, - loop = 45, + startAt = 62, + endAt = 65, + loop = 65, speed = 25, pauseAtEnd = false, }, diff --git a/sonic-radiance.love/datas/gamedata/characters/tails/sprites.png b/sonic-radiance.love/datas/gamedata/characters/tails/sprites.png index ec441bd..7d9e28e 100644 Binary files a/sonic-radiance.love/datas/gamedata/characters/tails/sprites.png and b/sonic-radiance.love/datas/gamedata/characters/tails/sprites.png differ diff --git a/sonic-radiance.love/datas/gamedata/skills/attack.lua b/sonic-radiance.love/datas/gamedata/skills/attack.lua index 08e5121..0ef4bd0 100644 --- a/sonic-radiance.love/datas/gamedata/skills/attack.lua +++ b/sonic-radiance.love/datas/gamedata/skills/attack.lua @@ -4,42 +4,27 @@ -- Also serve as a tutoriel for how to create a file attack and choregraphy return { - name = "attack", -- unused for this attack, but still usefull sometimes - cost = 00, -- the pp cost of the attack. Will be ignored if it's set - -- as character default attack + name = "attack", -- unused for this attack, but still usefull sometimes + fullname = "Spin Attack", + cost = 00, -- the pp cost of the attack. Will be ignored if it's set + -- as character default attack + description = "Spin to attack. Roll at the right time for more damages", - needTarget = true, targetNumber = 1, -- 0 for targeting all ennemies + targetEnnemies = true, choregraphy = { -- the main attack choregraphy {"setAnimation", "none", "walk", false}, - {'goTo', "none", "target", -1, 0, 0.3, true}, - - {"addQTE", "none", {"simplePrompt", {{"A", 1}}, 0.2}, "target", false}, - {'playSFX', "none", 'hit'}, - {'setAnimation', "none", 'hit1start', true}, - {'sendDamage', "none", 33, "basic", "none", false}, - {'addGFX',"sentDamage", 'hitGFX', "actor", 0.75, 0, true, false}, + {"goTo", "none", "target", 0, 0, 0.6, false}, + {"wait", "none", 0.3}, + {"setAnimation", "none", "spin", false}, + {'playSFX', "none", 'spinrelease'}, + {"waitActorFinished", "none", "goTo"}, + {"sendDamage", "none", 100, "basic", "none", false}, + {'addGFX', "sentDamage", 'hitGFX', "target", 0, 0, true, false}, {'playSFX', "sentDamage", 'hitconnect'}, - {'setAnimation', "none", 'hit1end', true}, - - {"addQTE", "none", {"simplePrompt", {{"A", 1}}, 0.2}, "target", false}, - {'playSFX', "none", 'hit'}, - {'setAnimation', "none", 'hit2start', true}, - {'sendDamage', "none", 33, "basic", "none", false}, - {'addGFX',"sentDamage", 'hitGFX', "actor", 0.75, 0, true, false}, - {'playSFX', "sentDamage", 'hitconnect'}, - {'setAnimation', "none", 'hit2end', true}, - - {"addQTE", "none", {"simplePrompt", {{"A", 1}}, 0.2}, "target", false}, - {'playSFX', "none", 'hit'}, - {'setAnimation', "none", 'hit3start', true}, - {'sendDamage', "none", 33, "basic", "none", false}, - {'addGFX',"sentDamage", 'hitGFX', "actor", 0.75, 0, true, false}, - {'playSFX', "sentDamage", 'hitconnect'}, - {'setAnimation', "none", 'hit3end', true}, - {'setAnimation', "none", 'idle', false}, - {'wait', "none", 0.2}, + {'jumpBack', "none", 0.3, true}, + {"wait", "none", 0.1}, {"setAnimation", "none", "walk", false}, {'goTo', "none", "start", 0, 0, 0.3, true}, {'setAnimation', "none", 'idle', false}, @@ -49,42 +34,3 @@ return { -- specific effect when you touch the ennemy. }, } - ---[[ - CHOREGRAPHY POSSIBLE EFFECTS --- "wait" :: Simply wait before doing the next command --- :: {"wait", condition, duration} - --- "setAnimation" :: Change the animation of the battler --- {"setAnimation", condition, animation, blockProcess} - --- "addGFX" :: Show a GFX relatively to the target position --- :: (player if target is nil) --- :: {"addGFX", condition, "gfxname", x, y, affectedByDirection, blockProcess} - --- "sendDamage" :: Send Damage on the whole target Area --- :: --- :: {"sendDamage", condition, damageEffect, accuracy, isSpecial, isAerial} - --- "sendDamageFromPos" :: Send Damage on a point from Actor position --- :: --- :: {"sendDamageFromPos", condition, dx, dy, damageEffect, accuracy, isSpecial, isAerial, affectedByDirection} - --- "sendDamageFromCursor" :: Send Damage on a point from Cursor final position --- :: --- :: {"sendDamageFromCursor", condition, dx, dy, damageEffect, accuracy, isSpecial, isAerial, affectedByDirection} - - --- "dashForward" :: Dash until your are stopped --- :: {"dashForward", condition, speed, blockProcess} - --- "jumpBack" :: jump to initial position --- :: {"jumpBack", condition, blockProcess} - - CONDITION TYPES --- --- "sentDamage" :: an ennemy have received damage --- --- - -]] diff --git a/sonic-radiance.love/datas/gamedata/skills/hitcombo.lua b/sonic-radiance.love/datas/gamedata/skills/hitcombo.lua new file mode 100644 index 0000000..9b7deee --- /dev/null +++ b/sonic-radiance.love/datas/gamedata/skills/hitcombo.lua @@ -0,0 +1,92 @@ +-- A basic file describing the basic attack, in order to make it customizable one +-- day ? + +-- Also serve as a tutoriel for how to create a file attack and choregraphy + +return { + name = "hitcombo", + fullname = "Hit Combo", + cost = 03, + description = "Chain punches and strike with a final blow", + + needTarget = true, + targetNumber = 1, -- 0 for targeting all ennemies + targetEnnemies = true, + + choregraphy = { -- the main attack choregraphy + {"setAnimation", "none", "walk", false}, + {'goTo', "none", "target", -1, 0, 0.3, false}, + {"wait", "none", 0.15}, + {"addQTE", "none", {"simplePrompt", {{"A", 1}, {"A", 1}, {"B", 1}}, 0.5}, "target", false}, + {"wait", "none", 0.15}, + + {'playSFX', "none", 'hit'}, + {'setAnimation', "none", 'hit1start', true}, + {'sendDamage', "none", 40, "basic", "none", false}, + {'addGFX',"sentDamage", 'hitGFX', "actor", 0.75, 0, true, false}, + {'playSFX', "sentDamage", 'hitconnect'}, + {'setAnimation', "none", 'hit1end', true}, + + {'playSFX', "none", 'hit'}, + {'setAnimation', "none", 'hit2start', true}, + {'sendDamage', "none", 40, "basic", "none", false}, + {'addGFX',"sentDamage", 'hitGFX', "actor", 0.75, 0, true, false}, + {'playSFX', "sentDamage", 'hitconnect'}, + {'setAnimation', "none", 'hit2end', true}, + + {'playSFX', "none", 'hit'}, + {'setAnimation', "none", 'hit3start', true}, + {'sendDamage', "none", 40, "basic", "none", false}, + {'addGFX',"sentDamage", 'hitGFX', "actor", 0.75, 0, true, false}, + {'playSFX', "sentDamage", 'hitconnect'}, + {'setAnimation', "none", 'hit3end', true}, + {'setAnimation', "none", 'idle', false}, + {'wait', "none", 0.2}, + {"setAnimation", "none", "walk", false}, + {'goTo', "none", "start", 0, 0, 0.3, true}, + {'setAnimation', "none", 'idle', false}, + }, + + onContact = { -- if the attack move and touch multiple ennemies, you can add + -- specific effect when you touch the ennemy. + }, +} + +--[[ + CHOREGRAPHY POSSIBLE EFFECTS +-- "wait" :: Simply wait before doing the next command +-- :: {"wait", condition, duration} + +-- "setAnimation" :: Change the animation of the battler +-- {"setAnimation", condition, animation, blockProcess} + +-- "addGFX" :: Show a GFX relatively to the target position +-- :: (player if target is nil) +-- :: {"addGFX", condition, "gfxname", x, y, affectedByDirection, blockProcess} + +-- "sendDamage" :: Send Damage on the whole target Area +-- :: +-- :: {"sendDamage", condition, damageEffect, accuracy, isSpecial, isAerial} + +-- "sendDamageFromPos" :: Send Damage on a point from Actor position +-- :: +-- :: {"sendDamageFromPos", condition, dx, dy, damageEffect, accuracy, isSpecial, isAerial, affectedByDirection} + +-- "sendDamageFromCursor" :: Send Damage on a point from Cursor final position +-- :: +-- :: {"sendDamageFromCursor", condition, dx, dy, damageEffect, accuracy, isSpecial, isAerial, affectedByDirection} + + +-- "dashForward" :: Dash until your are stopped +-- :: {"dashForward", condition, speed, blockProcess} + +-- "jumpBack" :: jump to initial position +-- :: {"jumpBack", condition, blockProcess} + + CONDITION TYPES +-- +-- "sentDamage" :: an ennemy have received damage +-- +-- + +]] diff --git a/sonic-radiance.love/datas/gamedata/skills/spinattack.lua b/sonic-radiance.love/datas/gamedata/skills/spinattack.lua deleted file mode 100644 index a37dd8a..0000000 --- a/sonic-radiance.love/datas/gamedata/skills/spinattack.lua +++ /dev/null @@ -1,35 +0,0 @@ --- A basic file describing the basic attack, in order to make it customizable one --- day ? - --- Also serve as a tutoriel for how to create a file attack and choregraphy - -return { - name = "spinattack", - fullname = "Spin Attack", - cost = 03, - description = "Spin to attack. Roll at the right time for more damages", - - targetNumber = 1, -- 0 for targeting all ennemies - targetEnnemies = true, - - choregraphy = { -- the main attack choregraphy - {"setAnimation", "none", "walk", false}, - {"goTo", "none", "target", 0, 0, 0.6, false}, - {"wait", "none", 0.3}, - {"setAnimation", "none", "spin", false}, - {'playSFX', "none", 'spinrelease'}, - {"waitActorFinished", "none", "goTo"}, - {"sendDamage", "none", 120, "basic", "none", false}, - {'addGFX', "sentDamage", 'hitGFX', "target", 0, 0, true, false}, - {'playSFX', "sentDamage", 'hitconnect'}, - {'jumpBack', "none", 0.3, true}, - {"wait", "none", 0.1}, - {"setAnimation", "none", "walk", false}, - {'goTo', "none", "start", 0, 0, 0.3, true}, - {'setAnimation', "none", 'idle', false}, - }, - - onContact = { -- if the attack move and touch multiple ennemies, you can add - -- specific effect when you touch the ennemy. - }, -} diff --git a/sonic-radiance.love/main.lua b/sonic-radiance.love/main.lua index 52abe33..a3bd7ad 100644 --- a/sonic-radiance.love/main.lua +++ b/sonic-radiance.love/main.lua @@ -25,7 +25,8 @@ require "birb" scenes = require "scenes" -function love.load() - birb.start("game") +function love.load(args) + print(utils.table.toString(args)) + birb.start("game", args) scenes.title() end \ No newline at end of file