sonic-radiance/sonic-radiance.love/scenes/battlesystem/fighters/character/selection.lua

67 lines
1.7 KiB
Lua
Raw Normal View History

local GuiElement = require "birb.modules.gui.elements.parent"
local SelectionSystem = GuiElement:extend()
2020-07-19 21:41:14 +02:00
function SelectionSystem:new(owner, fighterSide, onlyAlive)
SelectionSystem.super.new(self, "selection", 0, 0, 1, 1)
self.fighterList = fighterSide:getTargets(onlyAlive)
2020-07-19 21:41:14 +02:00
self.owner = owner
self.assets = self.owner.assets
self.selectedTarget = 1
self:updateTarget()
self:getFocus()
2020-07-19 21:41:14 +02:00
end
function SelectionSystem:keypressed(key)
if (key == "A") then
self.assets.sfx["mSelect"]:play()
self:selectTarget()
elseif (key == "B") then
self.assets.sfx["mBack"]:play()
self:goBack()
elseif (key == "up") then
self:purgeTarget()
2020-07-19 21:41:14 +02:00
if (self.selectedTarget == 1) then
self.selectedTarget = #self.fighterList
2020-07-19 21:41:14 +02:00
else
self.selectedTarget = self.selectedTarget - 1
end
self.assets.sfx["mBeep"]:play()
self:updateTarget()
elseif (key == "down") then
self:purgeTarget()
if (self.selectedTarget == #self.fighterList) then
2020-07-19 21:41:14 +02:00
self.selectedTarget = 1
else
self.selectedTarget = self.selectedTarget + 1
end
self.assets.sfx["mBeep"]:play()
self:updateTarget()
2020-07-19 21:41:14 +02:00
end
end
function SelectionSystem:purgeTarget()
local target = self.fighterList[self.selectedTarget]
2020-07-19 21:41:14 +02:00
target.actor.isSelected = false
end
function SelectionSystem:updateTarget()
local target = self.fighterList[self.selectedTarget]
2020-07-19 21:41:14 +02:00
target.actor.isSelected = true
end
function SelectionSystem:selectTarget()
self:looseFocus()
self:destroy()
2020-07-19 21:41:14 +02:00
self:purgeTarget()
self.owner:receiveTarget(self.fighterList[self.selectedTarget])
2020-07-19 21:41:14 +02:00
end
function SelectionSystem:goBack()
self:looseFocus()
self:destroy()
2020-07-19 21:41:14 +02:00
self:purgeTarget()
self.owner:goBackToMenu()
end
return SelectionSystem