sonic-bluestreak/sonic-bluestreak.love/scenes/overworld/actors/player/team.lua

64 lines
1.8 KiB
Lua
Raw Normal View History

2021-11-25 10:57:13 +01:00
local Team = Object:extend()
local Emblem = require "game.modules.gui.emblem"
function Team:initTeam()
self.active = game.characters:getActiveCharacterData()
self.emblems = {}
for i, name in ipairs(game.characters.team) do
game.characters:loadSprite(self.assets, name)
self.emblems[i] = Emblem(game.characters.list[name], self.scene)
end
self.activeVisible = game.characters.active
self.canChangeActive = true
end
function Team:updateActiveCharacter()
local everybodyIsKo = true
for id, name in ipairs(game.characters.team) do
if (game.characters.list[name].hp > 0) then
everybodyIsKo = false
break;
end
end
if (everybodyIsKo) then
self.scene:gameover()
else
if ((self.active.hp == 0) and not game.difficulty:get("playerKoChar")) then
self:switchActiveCharacter()
end
end
end
function Team:getCurrentCharType()
return self.active.data.class
end
function Team:switchActiveCharacter()
if (self.canChangeActive) then
local count = game.characters:setActiveCharacter()
self.active = game.characters:getActiveCharacterData()
self.canChangeActive = false
self.tweens:newTimer(0.3, "changeCharacter")
self.tweens:newTween(0, 0.3, {activeVisible = self.activeVisible + count}, "inQuad")
end
end
function Team:endCharacterSwitchAnimation()
self.canChangeActive = true
self.activeVisible = game.characters.active
self:updateCurrentCharset()
end
function Team:drawEmblems(x, y)
for i,emblem in ipairs(self.emblems) do
local angle = ((i-self.activeVisible) * (360/#self.emblems)) - 90
local rad = math.rad(angle)
local emblemX, emblemY = utils.math.lengthdir(18, rad)
emblem:draw(x + emblemX, y + emblemY)
end
end
return Team