122 lines
4.2 KiB
Lua
122 lines
4.2 KiB
Lua
|
local Screen = require "birb.modules.gui.screen"
|
||
|
local VictoryScreen = Screen:extend()
|
||
|
|
||
|
local TextElement = require "birb.modules.gui.elements.text"
|
||
|
local ChoiceElement = require "game.modules.gui.choiceElem"
|
||
|
local ConfirmDialog = require "game.modules.confirmdialog"
|
||
|
local TextureElement = require "birb.modules.gui.elements.drawable"
|
||
|
local LootElement = require "scenes.battlesystem.gui.victory.loot"
|
||
|
local ItemsElement = require "scenes.battlesystem.gui.victory.items"
|
||
|
local CharExperience = require "scenes.battlesystem.gui.victory.exp"
|
||
|
local TileElement = require "birb.modules.gui.elements.tile"
|
||
|
|
||
|
local defTransitions = require "birb.modules.transitions"
|
||
|
local gui = require "game.modules.gui"
|
||
|
|
||
|
local HEIGHT = 32
|
||
|
local STARTX, STARTY = 32, HEIGHT + 44
|
||
|
local ENDX, ENDY = 424 - 32, 240 - 24
|
||
|
local SIZE_FEATS = 128+28
|
||
|
local START_ITEMS = STARTX + SIZE_FEATS
|
||
|
local START_EXP = START_ITEMS + 128
|
||
|
|
||
|
local show = {
|
||
|
{"gameText", "movement", 0.9, 0.4, 424/2, HEIGHT, "inExpo"},
|
||
|
--{"rankBox", "tween", 1.4, 0.4, {opacity = 1}, "inExpo"},
|
||
|
{"loot", "tween", 1.4, 0.4, {opacity = 1}, "inExpo"},
|
||
|
{"items", "tween", 1.4, 0.4, {opacity = 1}, "inExpo"},
|
||
|
}
|
||
|
|
||
|
function VictoryScreen:new()
|
||
|
self.feats = 0
|
||
|
self.rankBox = gui.newTextBox("assets/gui/dialogbox.png", 48, 32)
|
||
|
self.itemBox = gui.newTextBox("assets/gui/dialogbox.png", 96, 48)
|
||
|
|
||
|
VictoryScreen.super.new(self, "titleScreen")
|
||
|
self:addTransform("show", show)
|
||
|
self.scene:showOverlay(true)
|
||
|
self:show()
|
||
|
end
|
||
|
|
||
|
function VictoryScreen:createFeats(list)
|
||
|
local ennemyNbr, turns, dmgSent, dmgTaken, ko = self.turns:getDatas()
|
||
|
self:addFeat(list,"Ennemies", ennemyNbr)
|
||
|
self:addFeat(list,"Turns", turns)
|
||
|
self:addFeat(list,"Dmg sent", dmgSent)
|
||
|
if (dmgTaken == 0) then
|
||
|
self:addFeat(list,"No damage !", "")
|
||
|
else
|
||
|
self:addFeat(list,"Dmg taken", dmgTaken)
|
||
|
self:addFeat(list,"KO", ko)
|
||
|
end
|
||
|
local qteRate, haveDoneQte = self.rewards:getQteSuccessRate()
|
||
|
if (not haveDoneQte) then
|
||
|
self:addFeat(list,"No QTE done")
|
||
|
else
|
||
|
self:addFeat(list,"QTE success", math.floor(qteRate * 100) .. "%")
|
||
|
end
|
||
|
self:addRank(list)
|
||
|
end
|
||
|
|
||
|
function VictoryScreen:addFeat(list, text, label)
|
||
|
self.feats = self.feats + 1
|
||
|
local featID = "feat" .. self.feats
|
||
|
|
||
|
label = label or ""
|
||
|
|
||
|
local elem = ChoiceElement(featID, text, "", label, STARTX - 16, STARTY + (16*(self.feats-1)), SIZE_FEATS)
|
||
|
elem.opacity = 0
|
||
|
elem:newTween(1 + (0.2*self.feats), 0.15, {opacity = 1, x = STARTX}, 'inQuad')
|
||
|
|
||
|
table.insert(list, {elem, 0, 1})
|
||
|
end
|
||
|
|
||
|
function VictoryScreen:addRank(list)
|
||
|
local rank = TileElement("rank", "ranks", self.rewards:getRank(), 424/2, ENDY - 28,0,4,4,13,13, 0)
|
||
|
rank:newTween(1.9, 0.4, {sx=1, sy=1, opacity=1}, 'inExpo')
|
||
|
|
||
|
table.insert(list, {rank, 0, 1})
|
||
|
end
|
||
|
|
||
|
function VictoryScreen:nextExp(nbr)
|
||
|
local list = self.scene.turns.player:getList()
|
||
|
local nextChar = list[nbr]
|
||
|
if nextChar ~= nil then
|
||
|
self.elements[nextChar.name .. "Exp"]:startExpGain(nbr)
|
||
|
return false
|
||
|
else
|
||
|
self.scene:setPrompt("Finish")
|
||
|
return true
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function VictoryScreen:createElements()
|
||
|
self.turns = self.scene.turns
|
||
|
self.rewards = self.turns.rewards
|
||
|
|
||
|
local list = {
|
||
|
{TextElement("gameText", "SA2font", "BATTLE COMPLETED", 424/2, -24, "center"), 0, 1},
|
||
|
--{TextureElement("rankBox", self.rankBox, 424/2, ENDY - 4, 0, 1,1, 64/2,48, 0), 0, 1},
|
||
|
{LootElement(START_ITEMS + 2, STARTY - 2), 0, 1},
|
||
|
{ItemsElement(START_ITEMS + 2, STARTY + 40, {"test", "test", "test"}), 0, 1}
|
||
|
}
|
||
|
self:createFeats(list)
|
||
|
|
||
|
for i, character in ipairs(self.scene.turns.player:getList()) do
|
||
|
table.insert(list, {CharExperience(START_EXP - 4, STARTY + (i-1)*24 - 12, character, i), 0, 1})
|
||
|
end
|
||
|
|
||
|
return list
|
||
|
end
|
||
|
|
||
|
function VictoryScreen:returnToTitle()
|
||
|
core.screen:startTransition(defTransitions.default, defTransitions.circle, function() scenes.menus.title(true) end, 424/2, 240/2)
|
||
|
end
|
||
|
|
||
|
function VictoryScreen:loadLastSave()
|
||
|
self.scene.tweens:newTween(0, 0.3, {borderPosition=0}, "inOutQuad")
|
||
|
core.screen:startTransition(defTransitions.default, defTransitions.default, function() game:reload() scenes.overworld() end, 424/2, 240/2)
|
||
|
end
|
||
|
|
||
|
|
||
|
return VictoryScreen
|