PGRData/Script/matrix/xentity/xbabeltower/XBabelTowerTeamData.lua

175 lines
4.7 KiB
Lua
Raw Normal View History

local XBabelTowerTeamData = XClass(nil, "XBabelTowerTeamData")
local Default = {
TeamId = 0,
CurScore = 0,
MaxScore = 0,
IsReset = false,
IsSyn = false, --是否与服务端数据同步
CaptainPos = 0,
CharacterIds = { 0, 0, 0 },
ChallengeBuffDic = {},
SupportBuffDic = {},
StageLevel = 0,
}
local TeamMaxCount = 3
function XBabelTowerTeamData:Ctor(teamId)
for key, v in pairs(Default) do
if type(v) == "table" then
self[key] = {}
else
self[key] = v
end
end
self.TeamId = teamId
self.CharacterIds = { 0, 0, 0 }
self.StageLevel = XFubenBabelTowerConfigs.Difficult.Easy
self.CaptainPos = XFubenBabelTowerConfigs.LEADER_POSITION
self.FirstFightPos = XFubenBabelTowerConfigs.FIRST_FIGHT_POSITION
end
-- 更新服务器下发的队伍数据
function XBabelTowerTeamData:UpdateData(data)
self.TeamId = data.Id
self.CurScore = data.CurScore
self.MaxScore = data.MaxScore or 0
self.IsReset = data.IsReset
self:UpdateCharacter(data.TeamList)
self.IsSyn = true
self.StageLevel = data.StageLevel and data.StageLevel ~= 0 and data.StageLevel or XFubenBabelTowerConfigs.Difficult.Easy
self.CaptainPos = data.CaptainPos and data.CaptainPos ~= 0 and data.CaptainPos or XFubenBabelTowerConfigs.LEADER_POSITION
self.FirstFightPos = data.FirstFightPos and data.FirstFightPos ~= 0 and data.FirstFightPos or XFubenBabelTowerConfigs.FIRST_FIGHT_POSITION
self:UpdateChallengeBuffDic(data.ChallengeBuffInfos)
self.SupportBuffDic = {}
for _, buffData in pairs(data.SupportBuffInfos or {}) do
self.SupportBuffDic[buffData.GroupId] = buffData.BufferId
end
end
function XBabelTowerTeamData:UpdateCharacter(teamList)
self.CharacterIds = {}
for _, charId in ipairs(teamList) do
table.insert(self.CharacterIds, charId)
end
if #self.CharacterIds < TeamMaxCount then
for i = #self.CharacterIds + 1, TeamMaxCount do
table.insert(self.CharacterIds, 0)
end
end
end
function XBabelTowerTeamData:ResetSyn()
self.IsSyn = false
end
function XBabelTowerTeamData:IsSyned()
return self.IsSyn
end
function XBabelTowerTeamData:IsReseted()
return self.IsReset
end
function XBabelTowerTeamData:Reset()
self.IsReset = true
end
function XBabelTowerTeamData:Recover()
self.IsReset = false
end
function XBabelTowerTeamData:GetTeamId()
return self.TeamId
end
function XBabelTowerTeamData:GetChallengeBuffDic()
return XTool.Clone(self.ChallengeBuffDic)
end
function XBabelTowerTeamData:UpdateChallengeBuffDic(buffDatas)
--刷新前先置空 解决问题玩家失败返回关卡选择界面读取进入关卡前的BUFF选择而不是之前最高等级的BUFF选择
self.ChallengeBuffDic = {}
for _, buffData in pairs(buffDatas or {}) do
self.ChallengeBuffDic[buffData.GroupId] = buffData.BufferId
end
end
function XBabelTowerTeamData:GetSupportBuffDic()
return XTool.Clone(self.SupportBuffDic)
end
function XBabelTowerTeamData:UpdateSupportBuffDic(buffDatas)
self.SupportBuffDic = {}
for _, buffData in pairs(buffDatas or {}) do
self.SupportBuffDic[buffData.GroupId] = buffData.BufferId
end
end
function XBabelTowerTeamData:GetCharacterIds(includeReset)
if includeReset then
return XTool.Clone(self.CharacterIds)
end
if self:IsReseted() then
return { 0, 0, 0 }
end
return XTool.Clone(self.CharacterIds)
end
function XBabelTowerTeamData:UpdateCharacterIds(characterIds)
if not characterIds then return end
self.CharacterIds = XTool.Clone(characterIds)
end
function XBabelTowerTeamData:ClearCharacterIds()
self.CharacterIds = { 0, 0, 0 }
self.CaptainPos = XFubenBabelTowerConfigs.LEADER_POSITION
self.FirstFightPos = XFubenBabelTowerConfigs.FIRST_FIGHT_POSITION
end
function XBabelTowerTeamData:GetScore(ignoreReset)
if ignoreReset then
return self.CurScore or 0
end
return not self.IsReset and self.CurScore or 0
end
function XBabelTowerTeamData:GetMaxScore()
return self.MaxScore
end
function XBabelTowerTeamData:GetSelectDiffcult()
return self.StageLevel
end
function XBabelTowerTeamData:SelectDiffcult(difficult)
self.StageLevel = difficult
end
function XBabelTowerTeamData:GetCaptainPos()
return self.CaptainPos
end
function XBabelTowerTeamData:GetFirstFightPos()
return self.FirstFightPos
end
function XBabelTowerTeamData:SetCaptainPos(captainPos)
self.CaptainPos = captainPos
end
function XBabelTowerTeamData:SetFirstFightPos(firstFightPos)
self.FirstFightPos = firstFightPos
end
function XBabelTowerTeamData:HasCaptain()
local characterId = self.CharacterIds[self.CaptainPos]
return characterId and characterId ~= 0
end
return XBabelTowerTeamData