1100 lines
No EOL
44 KiB
Lua
1100 lines
No EOL
44 KiB
Lua
local XExFubenSimulationChallengeManager = require("XEntity/XFuben/XExFubenSimulationChallengeManager")
|
||
--- 占领副本管理器
|
||
XFubenAssignManagerCreator = function()
|
||
local XFubenAssignManager = XExFubenSimulationChallengeManager.New(XFubenConfigs.ChapterType.Assign)
|
||
|
||
-- 协议
|
||
local METHOD_NAME = {
|
||
AssignGetDataRequest = "AssignGetDataRequest",
|
||
AssignSetTeamRequest = "AssignSetTeamRequest",
|
||
AssignSetCharacterRequest = "AssignSetCharacterRequest",
|
||
AssignGetRewardRequest = "AssignGetRewardRequest",
|
||
AssignResetStageRequest = "AssignResetStageRequest",
|
||
}
|
||
|
||
-- 常量
|
||
XFubenAssignManager.MaxSelectConditionNum = 4
|
||
XFubenAssignManager.SelectConditionColor = {[true] = CS.UnityEngine.Color.black, [false] = CS.UnityEngine.Color.gray }
|
||
XFubenAssignManager.MemberColor = {
|
||
"FF1111FF", -- red
|
||
"4F99FFFF", -- blue
|
||
"F9CB35FF", -- yellow
|
||
}
|
||
XFubenAssignManager.FomationAnimFinishDelay = 400 -- 特效显示时间
|
||
XFubenAssignManager.FormationState = { Effect = 1, Reset = 2 }
|
||
local CHARACTERTYPE_ALL = 0
|
||
local SKILLTYPE_BITS = 1000
|
||
local KeyAccountEnterAssign = "Assign"
|
||
|
||
-- ui操作所缓存的数据
|
||
XFubenAssignManager.SelectChapterId = nil
|
||
XFubenAssignManager.SelectGroupId = nil
|
||
XFubenAssignManager.SelectCharacterId = nil
|
||
XFubenAssignManager.OccupyFirstSelectTeamId = nil
|
||
XFubenAssignManager.OccupyFirstSelectOrder = nil
|
||
XFubenAssignManager.OccupySecondSelectTeamId = nil
|
||
XFubenAssignManager.OccupySecondSelectOrder = nil
|
||
|
||
XFubenAssignManager.CAPTIAN_MEMBER_INDEX = 1 -- 队长位置
|
||
XFubenAssignManager.FIRSTFIGHT_MEMBER_INDEX = 1 -- 首发位置
|
||
local MEMBER_MAX_COUNT = 3 -- 队伍最大成员数
|
||
|
||
-- 自定义数据
|
||
local ChapterIdList = nil
|
||
local ChapterDataDict = nil -- 章节
|
||
local GroupDataDict = nil -- 关卡组
|
||
local TeamDataDict = nil -- 队伍
|
||
local LoadingData = nil
|
||
local ChapterFirstPassTrigger = nil
|
||
--- 服务器下发确认的数据
|
||
local GroupTeamRecords = {}
|
||
local GroupTeamRecordsDic = {} -- GroupTeamRecords 的重定义字典
|
||
local FinishStageIds = {}
|
||
local FinishStageIdDic = {}
|
||
|
||
------ 战斗接口用的数据
|
||
local FinishFightCb = nil
|
||
local CloseLoadingCb = nil
|
||
-- local MEMBER_INDEX_BY_ORDER = {[1] = 2, [2] = 1, [3] = 3} -- 面板上显示的位置(order) = 队伍中实际中的位置(index)
|
||
local MEMBER_ORDER_BY_INDEX = {[1] = 2, [2] = 1, [3] = 3 } -- 队伍中实际中的位置(index) = 面板上显示的位置(order)
|
||
local GroupIdByStageId = nil -- {[stageId] = groupId, ...}
|
||
local FollowGroupDict = nil -- {[前置组id] = {后置组id, ...}, ...}
|
||
|
||
function XFubenAssignManager.Init()
|
||
end
|
||
|
||
function XFubenAssignManager.ClearData()
|
||
XFubenAssignManager.SelectChapterId = nil
|
||
XFubenAssignManager.SelectGroupId = nil
|
||
XFubenAssignManager.SelectCharacterId = nil
|
||
XFubenAssignManager.OccupyFirstSelectTeamId = nil
|
||
XFubenAssignManager.OccupyFirstSelectOrder = nil
|
||
XFubenAssignManager.OccupySecondSelectTeamId = nil
|
||
XFubenAssignManager.OccupySecondSelectOrder = nil
|
||
|
||
ChapterIdList = nil
|
||
ChapterDataDict = nil -- 章节
|
||
GroupDataDict = nil -- 关卡组
|
||
TeamDataDict = nil -- 队伍
|
||
FollowGroupDict = nil
|
||
end
|
||
|
||
function XFubenAssignManager.GetChapterFirstPassTrigger()
|
||
if ChapterFirstPassTrigger then
|
||
local tempData = ChapterFirstPassTrigger
|
||
ChapterFirstPassTrigger = nil
|
||
return tempData
|
||
end
|
||
end
|
||
|
||
----------- 章节数据 begin-----------
|
||
local XAssignChapter = require("XEntity/XAssign/XAssignChapter")
|
||
|
||
-- 是否当前进度章节
|
||
function XFubenAssignManager.IsCurrentChapter(chapterId)
|
||
local passNum = XFubenAssignManager.GetAllChapterPassNum()
|
||
local targetIndex = 0
|
||
for i, id in ipairs(XFubenAssignManager.GetChapterIdList()) do
|
||
if chapterId == id then
|
||
targetIndex = i
|
||
break
|
||
end
|
||
end
|
||
if targetIndex == 0 then
|
||
XLog.Debug("XFubenAssignManager.IsCurrentChapter参数传入了无效的chapterId: " .. tostring(chapterId))
|
||
end
|
||
return (targetIndex == passNum + 1)
|
||
end
|
||
|
||
function XFubenAssignManager.GetAllChapterPassNum()
|
||
local passNum = 0
|
||
for _, chapterId in ipairs(XFubenAssignManager.GetChapterIdList()) do
|
||
local chapterData = XFubenAssignManager.GetChapterDataById(chapterId)
|
||
if chapterData:IsPass() then
|
||
passNum = passNum + 1
|
||
end
|
||
end
|
||
return passNum
|
||
end
|
||
|
||
function XFubenAssignManager.GetAllChapterRewardedNum()
|
||
local count = 0
|
||
for _, chapterId in ipairs(XFubenAssignManager.GetChapterIdList()) do
|
||
local chapterData = XFubenAssignManager.GetChapterDataById(chapterId)
|
||
if chapterData:IsRewarded() then
|
||
count = count + 1
|
||
end
|
||
end
|
||
return count
|
||
end
|
||
|
||
function XFubenAssignManager.GetAllChapterOccupyNum()
|
||
local count = 0
|
||
for _, chapterId in ipairs(XFubenAssignManager.GetChapterIdList()) do
|
||
local chapterData = XFubenAssignManager.GetChapterDataById(chapterId)
|
||
if chapterData:IsOccupy() then
|
||
count = count + 1
|
||
end
|
||
end
|
||
return count
|
||
end
|
||
|
||
function XFubenAssignManager.GetCharacterOccupyChapterId(characterId)
|
||
if characterId and characterId ~= 0 then
|
||
for _, chapterId in ipairs(XFubenAssignManager.GetChapterIdList()) do
|
||
local chapterData = XFubenAssignManager.GetChapterDataById(chapterId)
|
||
if chapterData:GetCharacterId() == characterId then
|
||
return chapterId
|
||
end
|
||
end
|
||
end
|
||
return nil
|
||
end
|
||
|
||
function XFubenAssignManager.GetChapterIdList()
|
||
if not ChapterIdList then
|
||
ChapterIdList = {}
|
||
for id, _ in pairs(XFubenAssignConfigs.GetChapterTemplates()) do
|
||
table.insert(ChapterIdList, id)
|
||
end
|
||
table.sort(ChapterIdList, function(a, b) return a < b end)
|
||
end
|
||
return ChapterIdList
|
||
end
|
||
|
||
function XFubenAssignManager.GetUnlockChapterIdList()
|
||
local idList = {}
|
||
local data
|
||
for _, id in ipairs(XFubenAssignManager.GetChapterIdList()) do
|
||
data = XFubenAssignManager.GetChapterDataById(id)
|
||
if data:IsUnlock() then
|
||
table.insert(idList, id)
|
||
end
|
||
end
|
||
return idList
|
||
end
|
||
|
||
-- 角色是否已在占领
|
||
function XFubenAssignManager.CheckCharacterInOccupy(characterId)
|
||
local chapterData
|
||
for _, id in ipairs(XFubenAssignManager.GetChapterIdList()) do
|
||
chapterData = XFubenAssignManager.GetChapterDataById(id)
|
||
if chapterData:GetCharacterId() == characterId then
|
||
return true
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
|
||
function XFubenAssignManager.GetChapterDataById(id)
|
||
if not id then
|
||
XLog.Error("XFubenAssignManager.GetChapterDataById函数参数id不能为空" .. tostring(id))
|
||
return
|
||
end
|
||
if not ChapterDataDict then
|
||
ChapterDataDict = {}
|
||
end
|
||
if not ChapterDataDict[id] then
|
||
ChapterDataDict[id] = XAssignChapter.New(id)
|
||
end
|
||
return ChapterDataDict[id]
|
||
end
|
||
|
||
function XFubenAssignManager.GetCurrentChapterData()
|
||
local idList = XFubenAssignManager.GetChapterIdList()
|
||
for _, chapterId in ipairs(idList) do
|
||
local chapterData = XFubenAssignManager.GetChapterDataById(chapterId)
|
||
if not chapterData:IsPass() then
|
||
return chapterData
|
||
end
|
||
end
|
||
return XFubenAssignManager.GetChapterDataById(idList[#idList])
|
||
end
|
||
|
||
function XFubenAssignManager.GetChapterProgressTxt()
|
||
local chapterData = XFubenAssignManager.GetCurrentChapterData()
|
||
return CS.XTextManager.GetText("AssignChapterProgressTxt", chapterData:GetDesc())
|
||
end
|
||
----------- 章节数据 end-----------
|
||
----------- 关卡组数据 begin-----------
|
||
local XAssignGroup = require("XEntity/XAssign/XAssignGroup")
|
||
|
||
function XFubenAssignManager.GetGroupDataById(id)
|
||
if not GroupDataDict then
|
||
GroupDataDict = {}
|
||
end
|
||
if not GroupDataDict[id] then
|
||
GroupDataDict[id] = XAssignGroup.New(id)
|
||
end
|
||
return GroupDataDict[id]
|
||
end
|
||
----------- 关卡组数据 end-----------
|
||
-------队伍数据
|
||
local XAssignTeam = require("XEntity/XAssign/XAssignTeam")
|
||
|
||
-- 检查该group是否有服务器记录过队伍数据
|
||
function XFubenAssignManager.CheckGroupHadRecordTeam(groupId)
|
||
return GroupTeamRecordsDic[groupId]
|
||
end
|
||
|
||
-- 检查该group是否有服务器记录过队伍数据
|
||
function XFubenAssignManager.GetGroupTeamRecords()
|
||
return GroupTeamRecords
|
||
end
|
||
|
||
function XFubenAssignManager.GetFinishStageIds()
|
||
return FinishStageIds
|
||
end
|
||
|
||
function XFubenAssignManager.CheckStageFinish(stageId)
|
||
return FinishStageIdDic[stageId]
|
||
end
|
||
|
||
-- 角色是否已在队伍中
|
||
function XFubenAssignManager.CheckCharacterInTeam(characterId)
|
||
for _, teamData in pairs(TeamDataDict) do
|
||
if teamData:GetCharacterOrder(characterId) ~= nil then
|
||
return true
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
|
||
-- 该角色是否已有关卡进度 压制
|
||
function XFubenAssignManager.CheckCharacterInMultiTeamLock(characterId, groupId)
|
||
local groupData = XFubenAssignManager.GetGroupDataById(groupId)
|
||
local isIn, teamData, teamOrder = XFubenAssignManager.CheckCharacterInCurGroupTeam(characterId, groupId)
|
||
|
||
local stageList = groupData:GetStageId()
|
||
local stageId = stageList[teamOrder]
|
||
|
||
return XFubenAssignManager.CheckStageFinish(stageId)
|
||
end
|
||
|
||
-- 角色是否已在该group的队伍中
|
||
function XFubenAssignManager.CheckCharacterInCurGroupTeam(characterId, groupId)
|
||
local groupData = XFubenAssignManager.GetGroupDataById(groupId)
|
||
|
||
for order, teamId in pairs(groupData:GetTeamInfoId()) do
|
||
local teamData = XFubenAssignManager.GetTeamDataById(teamId)
|
||
if teamData:GetCharacterOrder(characterId) ~= nil then
|
||
return true, teamData, order
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
|
||
-- 获取其他队伍的角色
|
||
function XFubenAssignManager.GetOtherTeamCharacters(groupId, srcTeamId)
|
||
local otherTeamCharacters = {}
|
||
for _, teamId in pairs(GroupDataDict[groupId]:GetTeamInfoId()) do
|
||
if teamId ~= srcTeamId and TeamDataDict[teamId] then
|
||
for i, member in ipairs(TeamDataDict[teamId]:GetMemberList()) do
|
||
local characterId = member:GetCharacterId()
|
||
if characterId and characterId ~= 0 then
|
||
table.insert(otherTeamCharacters, { teamId, i, characterId })
|
||
end
|
||
end
|
||
end
|
||
end
|
||
return otherTeamCharacters
|
||
end
|
||
|
||
-- 获取某组里 角色对应的队伍编号
|
||
function XFubenAssignManager.GetCharacterTeamOderMapByGroup(groupId)
|
||
local teamOrderMap = {}
|
||
local teamIdMap = {}
|
||
for i, teamId in pairs(GroupDataDict[groupId]:GetTeamInfoId()) do
|
||
local teamData = XFubenAssignManager.GetTeamDataById(teamId)
|
||
for _, memberData in ipairs(teamData:GetMemberList()) do
|
||
if memberData:HasCharacter() then
|
||
teamIdMap[memberData:GetCharacterId()] = teamId
|
||
teamOrderMap[memberData:GetCharacterId()] = i
|
||
end
|
||
end
|
||
end
|
||
return teamIdMap, teamOrderMap
|
||
end
|
||
|
||
function XFubenAssignManager.SwapMultiTeamMember(aTeam, aPos, bTeam, bPos)
|
||
local aMemberData = aTeam:GetMemberList()[aPos]
|
||
local bMemberData = bTeam:GetMemberList()[bPos]
|
||
local aTeamaPosCharId = aMemberData:GetCharacterId()
|
||
local bTeambPosCharId = bMemberData:GetCharacterId()
|
||
-- 后续维护的人:这里由于远古设计,teamList里的key不是角色真正在队伍里的pos, 要拿MemberData才行。而且这个xteam和通用的不一样,尽量不要SetMember,直接SetCharList或者拿
|
||
if aTeamaPosCharId == bTeambPosCharId then
|
||
bMemberData:SetCharacterId(0)
|
||
else
|
||
aMemberData:SetCharacterId(bTeambPosCharId)
|
||
bMemberData:SetCharacterId(aTeamaPosCharId)
|
||
end
|
||
end
|
||
|
||
function XFubenAssignManager.SetTeamMember(teamId, targetOrder, characterId)
|
||
local targetTeamData = XFubenAssignManager.GetTeamDataById(teamId)
|
||
-- -- 检查所有队伍并清除该characterId
|
||
-- local order = nil
|
||
-- for k, teamData in pairs(TeamDataDict) do
|
||
-- order = teamData:GetCharacterOrder(characterId)
|
||
-- if order ~= nil then
|
||
-- teamData:SetMember(order, nil)
|
||
-- break
|
||
-- end
|
||
-- end
|
||
targetTeamData:SetMember(targetOrder, characterId)
|
||
end
|
||
|
||
function XFubenAssignManager.GetTeamDataById(id)
|
||
if not TeamDataDict then
|
||
TeamDataDict = {}
|
||
end
|
||
if not TeamDataDict[id] then
|
||
TeamDataDict[id] = XAssignTeam.New(id)
|
||
end
|
||
return TeamDataDict[id]
|
||
end
|
||
|
||
function XFubenAssignManager.GetTeamCharacterType(teamId)
|
||
local teamData = XFubenAssignManager.GetTeamDataById(teamId)
|
||
return teamData:GetCharacterType()
|
||
end
|
||
|
||
function XFubenAssignManager.IsCharacterInTeamById(teamId, characterId)
|
||
local teamData = XFubenAssignManager.GetTeamDataById(teamId)
|
||
return teamData:GetCharacterOrder(characterId) ~= nil
|
||
end
|
||
|
||
function XFubenAssignManager.GetGroupMemberCount(groupId)
|
||
local count = 0
|
||
for _, teamId in pairs(GroupDataDict[groupId]:GetTeamInfoId()) do
|
||
for _, member in ipairs(XFubenAssignManager.GetTeamDataById(teamId):GetMemberList()) do
|
||
if member:HasCharacter() then
|
||
count = count + 1
|
||
end
|
||
end
|
||
end
|
||
return count
|
||
end
|
||
|
||
-- 一键上阵
|
||
function XFubenAssignManager.AutoTeam(groupId)
|
||
local groupData = XFubenAssignManager.GetGroupDataById(groupId)
|
||
for k, stageId in pairs(groupData:GetStageId()) do
|
||
local isFinish = XFubenAssignManager.CheckStageFinish(stageId)
|
||
if isFinish then -- 有完成进度
|
||
XUiManager.TipError(CS.XTextManager.GetText("AutoTeamLimit"))
|
||
return
|
||
end
|
||
end
|
||
|
||
local ownCharacters = XDataCenter.CharacterManager.GetOwnCharacterList()
|
||
table.sort(ownCharacters, function(a, b)
|
||
return a.Ability > b.Ability
|
||
end)
|
||
-- 保留当前角色
|
||
-- local curCharacters = XFubenAssignManager.GetOtherTeamCharacters(groupId, nil)
|
||
-- 先清空,再上阵
|
||
for _, teamId in pairs(GroupDataDict[groupId]:GetTeamInfoId()) do
|
||
local targetTeamData = XFubenAssignManager.GetTeamDataById(teamId)
|
||
targetTeamData:ClearMemberList()
|
||
end
|
||
local count = 1
|
||
local maxCount = #ownCharacters
|
||
for _, teamId in pairs(GroupDataDict[groupId]:GetTeamInfoId()) do
|
||
if count > maxCount then
|
||
break
|
||
end
|
||
local teamData = XFubenAssignManager.GetTeamDataById(teamId)
|
||
local needCount = teamData:GetNeedCharacter()
|
||
for index = 1, needCount do
|
||
local order = XFubenAssignManager.GetMemberOrderByIndex(index, needCount)
|
||
local targetTeamData = XFubenAssignManager.GetTeamDataById(teamId)
|
||
|
||
local stageId = teamId
|
||
local characterLimitType = XFubenConfigs.GetStageCharacterLimitType(teamId)
|
||
local defaultCharacterType = XDataCenter.FubenManager.GetDefaultCharacterTypeByCharacterLimitType(characterLimitType)
|
||
|
||
local i
|
||
for charIndex, char in ipairs(ownCharacters) do
|
||
local charType = XCharacterConfigs.GetCharacterType(char.Id)
|
||
if defaultCharacterType ~= XFubenConfigs.CharacterLimitType.All and defaultCharacterType ~= charType then
|
||
goto CONTINUE
|
||
end
|
||
XFubenAssignManager.SetTeamMember(teamId, order, char.Id)
|
||
i = charIndex
|
||
break
|
||
:: CONTINUE ::
|
||
end
|
||
if i then
|
||
table.remove(ownCharacters, i)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
-- 是否满足关卡所需战力
|
||
function XFubenAssignManager.IsAbilityMatch(targetStageId, charIdList)
|
||
local groupId = XFubenAssignManager.GetGroupIdByStageId(targetStageId)
|
||
local groupData = XFubenAssignManager.GetGroupDataById(groupId)
|
||
local isMatch = false
|
||
local teamIdList = groupData:GetTeamInfoId()
|
||
for i, stageId in pairs(groupData:GetStageId()) do
|
||
if stageId == targetStageId then
|
||
isMatch = true
|
||
local teamId = teamIdList[i]
|
||
local teamData = XFubenAssignManager.GetTeamDataById(teamId)
|
||
for order = 1, teamData:GetNeedCharacter() do
|
||
local characterId = charIdList[order]
|
||
local character = XDataCenter.CharacterManager.GetCharacter(characterId)
|
||
if character.Ability < teamData:GetRequireAbility() then
|
||
isMatch = false
|
||
break
|
||
end
|
||
end
|
||
break
|
||
end
|
||
end
|
||
return isMatch
|
||
end
|
||
----------- 队伍数据 end-----------
|
||
----------- 战斗接口 begin-----------
|
||
function XFubenAssignManager.SetCloseLoadingCb(cb)
|
||
CloseLoadingCb = cb
|
||
end
|
||
|
||
function XFubenAssignManager.SetFinishFightCb(cb)
|
||
FinishFightCb = cb
|
||
end
|
||
|
||
-- function XFubenAssignManager.GetMemberIndexByOrder(order)
|
||
-- return MEMBER_INDEX_BY_ORDER[order]
|
||
-- end
|
||
function XFubenAssignManager.GetMemberOrderByIndex(index, maxCount)
|
||
return maxCount > 1 and MEMBER_ORDER_BY_INDEX[index] or index
|
||
end
|
||
|
||
function XFubenAssignManager.GetGroupIdByStageId(stageId)
|
||
if not GroupIdByStageId then
|
||
GroupIdByStageId = {}
|
||
local GroupTemplates = XFubenAssignConfigs.GetGroupTemplates()
|
||
local groupData
|
||
for groupId, _ in pairs(GroupTemplates) do
|
||
groupData = XFubenAssignManager.GetGroupDataById(groupId)
|
||
for _, id in ipairs(groupData:GetStageId()) do
|
||
GroupIdByStageId[id] = groupId
|
||
end
|
||
end
|
||
end
|
||
return GroupIdByStageId[stageId]
|
||
end
|
||
|
||
function XFubenAssignManager.CheckIsGroupLastStage(stageId)
|
||
local groupId = XFubenAssignManager.GetGroupIdByStageId(stageId)
|
||
local groupData = XFubenAssignManager.GetGroupDataById(groupId)
|
||
local stageIdList = groupData:GetStageId()
|
||
return (stageIdList[#stageIdList] == stageId)
|
||
end
|
||
|
||
------ 以下是在FubenManager注册的函数
|
||
function XFubenAssignManager.InitStageInfo()
|
||
local stageType = XDataCenter.FubenManager.StageType.Assign
|
||
local chapterData
|
||
local groupData
|
||
for _, chapterid in pairs(XFubenAssignManager.GetChapterIdList()) do
|
||
chapterData = XFubenAssignManager.GetChapterDataById(chapterid)
|
||
for _, groupId in pairs(chapterData:GetGroupId()) do
|
||
groupData = XFubenAssignManager.GetGroupDataById(groupId)
|
||
|
||
local isUnlock = groupData:IsUnlock()
|
||
for _, stageId in ipairs(groupData:GetStageId()) do
|
||
local stageInfo = XDataCenter.FubenManager.GetStageInfo(stageId)
|
||
stageInfo.IsOpen = true
|
||
stageInfo.Type = stageType
|
||
stageInfo.Unlock = isUnlock
|
||
stageInfo.ChapterId = chapterid
|
||
end
|
||
|
||
local baseStageInfo = XDataCenter.FubenManager.GetStageInfo(groupData:GetBaseStageId())
|
||
baseStageInfo.IsOpen = true
|
||
baseStageInfo.Type = stageType
|
||
baseStageInfo.Unlock = isUnlock
|
||
baseStageInfo.ChapterId = chapterid
|
||
end
|
||
end
|
||
end
|
||
|
||
function XFubenAssignManager.FinishFight(settle)
|
||
|
||
local groupId = XFubenAssignManager.GetGroupIdByStageId(settle.StageId)
|
||
local groupData = XFubenAssignManager.GetGroupDataById(groupId)
|
||
if not groupData:GetIsPerfect() then
|
||
if settle.IsWin then
|
||
groupData:SetGroupRebootCountAdd(CS.XFight.Instance.FightReboot.RebootCount)
|
||
else
|
||
groupData:ResetGroupRebootCount()
|
||
end
|
||
end
|
||
|
||
XDataCenter.FubenManager.FinishFight(settle)
|
||
|
||
if FinishFightCb then
|
||
FinishFightCb(settle.IsWin)
|
||
end
|
||
end
|
||
|
||
-- 设置进入loading界面用到的数据
|
||
function XFubenAssignManager.SetEnterLoadingData(stageIndex, teamCharList, groupData, chapterData, isNextFight)
|
||
LoadingData = {
|
||
StageIndex = stageIndex,
|
||
TeamCharList = teamCharList,
|
||
GroupData = groupData,
|
||
ChapterData = chapterData,
|
||
IsNextFight = isNextFight,
|
||
}
|
||
end
|
||
|
||
-- 打开战斗前loading界面
|
||
function XFubenAssignManager.OpenFightLoading(stageId)
|
||
if LoadingData.IsNextFight then
|
||
XLuaUiManager.Open("UiAssignLoading", LoadingData)
|
||
else
|
||
XLuaUiManager.Open("UiLoading", LoadingType.Fight)
|
||
end
|
||
end
|
||
|
||
function XFubenAssignManager.CloseFightLoading()
|
||
XLuaUiManager.Remove("UiAssignLoading")
|
||
XLuaUiManager.Remove("UiLoading")
|
||
if CloseLoadingCb then
|
||
CloseLoadingCb()
|
||
end
|
||
end
|
||
|
||
function XFubenAssignManager.ShowReward(winData)
|
||
-- 同步本地战斗后的关卡数据
|
||
-- 关卡通关数据要先刷新,再在下一关for循环检测,最后再清除
|
||
FinishStageIdDic[winData.StageId] = true
|
||
|
||
-- if XFubenAssignManager.CheckIsGroupLastFinishStage(winData.StageId) then
|
||
-- -- 本地挑战次数自增
|
||
-- -- local groupId = XFubenAssignManager.GetGroupIdByStageId(winData.StageId)
|
||
-- -- local groupData = XFubenAssignManager.GetGroupDataById(groupId)
|
||
-- -- groupData:SetFightCount(groupData:GetFightCount() + 1)
|
||
-- if not groupData:GetIsPerfect() then
|
||
-- -- if groupData:GetGroupRebootCount() <= 0 then
|
||
-- -- groupData:SetIsPerfect(true)
|
||
-- -- end
|
||
-- groupData:ResetGroupRebootCount()
|
||
-- end
|
||
-- XEventManager.DispatchEvent(XEventId.EVENET_ASSIGN_CAN_REWARD) -- 刷新红点
|
||
-- XLuaUiManager.Remove("UiAssignLoading")
|
||
-- XLuaUiManager.Open("UiAssignPostWarCount", winData)
|
||
-- end
|
||
|
||
local index = nil
|
||
local targetNextStageId = nil
|
||
local groupData = LoadingData.GroupData
|
||
local chapterData = LoadingData.ChapterData
|
||
local stageIdList = groupData:GetStageId()
|
||
for i = 1, #stageIdList, 1 do
|
||
local stageId = stageIdList[i]
|
||
if not XFubenAssignManager.CheckStageFinish(stageId) then
|
||
index = i
|
||
targetNextStageId = stageId
|
||
break
|
||
end
|
||
end
|
||
|
||
-- 如果还有未完成的关
|
||
if targetNextStageId then
|
||
-- 且是连续挑战
|
||
if LoadingData.IsNextFight then
|
||
local isNextFight = true
|
||
|
||
local _, teamCharListOrg, captainPosList, firstFightPosList = XFubenAssignManager.TryGetFightTeamCharList(groupData:GetId())
|
||
local teamCharList = teamCharListOrg[index]
|
||
|
||
XFubenAssignManager.SetEnterLoadingData(index, teamCharList, groupData, chapterData, isNextFight)
|
||
XDataCenter.FubenManager.EnterAssignFight(targetNextStageId, teamCharList, captainPosList[index], nil, nil, firstFightPosList[index])
|
||
else
|
||
local curIndex = 1
|
||
for i = 1, #stageIdList, 1 do
|
||
local stageId = stageIdList[i]
|
||
if stageId == winData.StageId then
|
||
curIndex = i
|
||
end
|
||
end
|
||
XLuaUiManager.Open("UiAssignPostWarCount", winData, curIndex)
|
||
end
|
||
else
|
||
-- 如果没有未完成的关了 说明group已经作战完毕 结算
|
||
groupData:SetFightCount(groupData:GetFightCount() + 1)
|
||
if not groupData:GetIsPerfect() then
|
||
if groupData:GetGroupRebootCount() <= 0 then
|
||
groupData:SetIsPerfect(true)
|
||
end
|
||
groupData:ResetGroupRebootCount()
|
||
end
|
||
|
||
-- 并清除所有已完成的关卡数据
|
||
for k, id in pairs(stageIdList) do
|
||
FinishStageIdDic[id] = nil
|
||
end
|
||
|
||
-- 检测设置首通提示驻守trigger
|
||
if groupData:GetFightCount() == 1 and groupData:IsLastGroup() then
|
||
ChapterFirstPassTrigger = chapterData:GetId()
|
||
XLuaUiManager.Remove("UiPanelAssignStage")
|
||
end
|
||
|
||
XEventManager.DispatchEvent(XEventId.EVENET_ASSIGN_CAN_REWARD) -- 刷新红点
|
||
XLuaUiManager.Remove("UiAssignLoading")
|
||
XLuaUiManager.Remove("UiAssignDeploy")
|
||
XLuaUiManager.Open("UiAssignPostWarCount", winData)
|
||
end
|
||
end
|
||
----------- 战斗接口 end-----------
|
||
|
||
-- 某角色某技能加成
|
||
function XFubenAssignManager.GetSkillLevel(characterId, skillId)
|
||
local character = XDataCenter.CharacterManager.GetCharacter(characterId)
|
||
if not character then return 0 end
|
||
|
||
local keys, levels = XFubenAssignManager.GetBuffKeysAndLevels()
|
||
local npcTemplate = XCharacterConfigs.GetNpcTemplate(character.NpcId)
|
||
local tragetCharacterType = npcTemplate.Type
|
||
local targetSkilType = XCharacterConfigs.GetSkillType(skillId)
|
||
local level = nil
|
||
for _, key in pairs(keys) do
|
||
local skillType = key % SKILLTYPE_BITS
|
||
local characterType = (key - skillType) / SKILLTYPE_BITS
|
||
if (characterType == tragetCharacterType or characterType == CHARACTERTYPE_ALL) and skillType == targetSkilType then
|
||
level = levels[key]
|
||
end
|
||
end
|
||
return level or 0
|
||
end
|
||
|
||
function XFubenAssignManager.GetSkillLevelByCharacterData(character, skillId, assignChapterRecords)
|
||
local keys = {}
|
||
local levels = {}
|
||
for _, v in ipairs(assignChapterRecords) do
|
||
local chapterData = XAssignChapter.New(v.ChapterId)
|
||
chapterData:SetCharacterId(v.CharacterId)
|
||
|
||
if chapterData:IsOccupy() then
|
||
for _, key in ipairs(chapterData:GetBuffKeys()) do
|
||
if not levels[key] then
|
||
levels[key] = 1
|
||
table.insert(keys, key)
|
||
else
|
||
levels[key] = levels[key] + 1
|
||
end
|
||
end
|
||
end
|
||
end
|
||
local npcTemplate = XCharacterConfigs.GetNpcTemplate(character.NpcId)
|
||
local tragetCharacterType = npcTemplate.Type
|
||
local targetSkilType = XCharacterConfigs.GetSkillType(skillId)
|
||
local level = nil
|
||
for _, key in pairs(keys) do
|
||
local skillType = key % SKILLTYPE_BITS
|
||
local characterType = (key - skillType) / SKILLTYPE_BITS
|
||
if (characterType == tragetCharacterType or characterType == CHARACTERTYPE_ALL) and skillType == targetSkilType then
|
||
level = levels[key]
|
||
end
|
||
end
|
||
return level or 0
|
||
end
|
||
|
||
-- 参数keys: {角色类型*1000+技能类型, ...}
|
||
-- 参数levels: {[key] = level, ...}
|
||
function XFubenAssignManager.GetBuffDescListByKeys(keys, levels)
|
||
local descList = {}
|
||
local GetCareerName = XCharacterConfigs.GetCareerName
|
||
local GetSkillTypeName = XCharacterConfigs.GetSkillTypeName
|
||
local GetText = CS.XTextManager.GetText
|
||
for _, key in ipairs(keys) do
|
||
local skillType = key % SKILLTYPE_BITS
|
||
local characterType = (key - skillType) / SKILLTYPE_BITS
|
||
local level = levels and levels[key] or 1
|
||
local memberTypeName = characterType == CHARACTERTYPE_ALL and "" or GetCareerName(characterType)
|
||
local str = GetText("AssignSkillPlus", memberTypeName, GetSkillTypeName(skillType), level) -- 全体{0}成员{1}等级+{2}
|
||
table.insert(descList, str)
|
||
end
|
||
return descList
|
||
end
|
||
|
||
function XFubenAssignManager.GetBuffKeysAndLevels()
|
||
local keys = {}
|
||
local levels = {}
|
||
for _, id in ipairs(XFubenAssignManager.GetChapterIdList()) do
|
||
local chapterData = XFubenAssignManager.GetChapterDataById(id)
|
||
if chapterData:IsOccupy() then
|
||
for _, key in ipairs(chapterData:GetBuffKeys()) do
|
||
if not levels[key] then
|
||
levels[key] = 1
|
||
table.insert(keys, key)
|
||
else
|
||
levels[key] = levels[key] + 1
|
||
end
|
||
end
|
||
end
|
||
end
|
||
return keys, levels
|
||
end
|
||
|
||
function XFubenAssignManager.SortKeys(keys)
|
||
table.sort(keys, function(a, b)
|
||
local skillTypeA = a % SKILLTYPE_BITS
|
||
local characterTypeA = (a - skillTypeA) / SKILLTYPE_BITS
|
||
local skillTypeB = b % SKILLTYPE_BITS
|
||
local characterTypeB = (b - skillTypeB) / SKILLTYPE_BITS
|
||
if skillTypeA ~= skillTypeB then
|
||
return skillTypeA < skillTypeB
|
||
end
|
||
return characterTypeA < characterTypeB
|
||
end)
|
||
return keys
|
||
end
|
||
|
||
function XFubenAssignManager.GetAllBuffList()
|
||
local keys, levels = XFubenAssignManager.GetBuffKeysAndLevels()
|
||
keys = XFubenAssignManager.SortKeys(keys)
|
||
return XFubenAssignManager.GetBuffDescListByKeys(keys, levels)
|
||
end
|
||
|
||
function XFubenAssignManager.TryGetFightTeamCharList(groupId)
|
||
local groupData = XFubenAssignManager.GetGroupDataById(groupId)
|
||
local teamList = {}
|
||
local captainPosList = {}
|
||
local firstFightPosList = {}
|
||
local teamIdList = groupData:GetTeamInfoId()
|
||
local allTeamHasMember = (#teamIdList > 0)
|
||
for i, teamId in ipairs(teamIdList) do
|
||
teamList[i] = {}
|
||
local count = 0
|
||
local teamData = XFubenAssignManager.GetTeamDataById(teamId)
|
||
captainPosList[i] = teamData:GetLeaderIndex()
|
||
firstFightPosList[i] = teamData:GetFirstFightIndex()
|
||
local memberList = teamData:GetMemberList()
|
||
for _, memberData in ipairs(memberList) do
|
||
local characterId = memberData:GetCharacterId() or 0
|
||
teamList[i][memberData:GetIndex()] = characterId
|
||
if characterId ~= 0 then
|
||
count = count + 1
|
||
end
|
||
end
|
||
if count < #memberList then
|
||
allTeamHasMember = false
|
||
end
|
||
end
|
||
return allTeamHasMember, teamList, captainPosList, firstFightPosList
|
||
end
|
||
|
||
-- 刷新后面关卡的解锁信息
|
||
function XFubenAssignManager.UnlockFollowGroupStage(preGroupId)
|
||
local followGroupIdList = XFubenAssignManager.GetFollowGroupIdList(preGroupId)
|
||
if not followGroupIdList then
|
||
-- XLog.Debug(" 没有后置关卡id列表:" .. tostring(preGroupId))
|
||
return
|
||
end
|
||
for _, followGroupId in ipairs(followGroupIdList) do
|
||
local followGroupData = XFubenAssignManager.GetGroupDataById(followGroupId)
|
||
followGroupData:SyncStageInfo()
|
||
end
|
||
end
|
||
|
||
-- 获得后置关卡组
|
||
function XFubenAssignManager.GetFollowGroupIdList(preGroupId)
|
||
if not FollowGroupDict then
|
||
XFubenAssignManager.InitFollowGroupDict()
|
||
end
|
||
local ids = FollowGroupDict[preGroupId]
|
||
-- if not ids then
|
||
-- XLog.Debug("前置关卡id无效:" .. tostring(preGroupId))
|
||
-- end
|
||
return ids
|
||
end
|
||
|
||
-- 初始化关卡组后置数据
|
||
function XFubenAssignManager.InitFollowGroupDict()
|
||
if not FollowGroupDict then
|
||
FollowGroupDict = {}
|
||
local GroupTemplates = XFubenAssignConfigs.GetGroupTemplates()
|
||
local groupData
|
||
for groupId, _ in pairs(GroupTemplates) do
|
||
groupData = XFubenAssignManager.GetGroupDataById(groupId)
|
||
local preGroupId = groupData:GetPreGroupId()
|
||
if not FollowGroupDict[preGroupId] then
|
||
FollowGroupDict[preGroupId] = {}
|
||
end
|
||
table.insert(FollowGroupDict[preGroupId], groupId)
|
||
end
|
||
end
|
||
end
|
||
|
||
-- Login登录后端初始化数据接口
|
||
function XFubenAssignManager.InitServerData(chapterRecords)
|
||
XFubenAssignManager.UpdateChapterRecords(chapterRecords)
|
||
XFubenAssignManager.InitFollowGroupDict()
|
||
|
||
-- 有数据代表已经通关
|
||
local chapterData
|
||
for _, v in pairs(chapterRecords) do
|
||
chapterData = XFubenAssignManager.GetChapterDataById(v.ChapterId)
|
||
chapterData:SetIsPassByServer(true)
|
||
end
|
||
XEventManager.DispatchEvent(XEventId.EVENET_ASSIGN_CAN_REWARD) -- 刷新红点
|
||
end
|
||
|
||
function XFubenAssignManager.UpdateChapterRecords(chapterRecords)
|
||
if not chapterRecords then
|
||
return
|
||
end
|
||
for _, v in pairs(chapterRecords) do
|
||
local chapterData = XFubenAssignManager.GetChapterDataById(v.ChapterId)
|
||
chapterData:SetCharacterId(v.CharacterId)
|
||
chapterData:SetRewarded(v.IsGetReward)
|
||
end
|
||
end
|
||
|
||
-- 奖励红点
|
||
function XFubenAssignManager.IsRewardRedPoint()
|
||
for _, chapterId in ipairs(XFubenAssignManager.GetChapterIdList()) do
|
||
local chapterData = XFubenAssignManager.GetChapterDataById(chapterId)
|
||
if chapterData:CanReward() then
|
||
return true
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
|
||
function XFubenAssignManager.GetCharacterListInTeam(inTeamIdMap, charType)
|
||
local ownCharacters = XDataCenter.CharacterManager.GetOwnCharacterList(charType)
|
||
-- 排序 未编队>已编队 等级>品质>优先级
|
||
local weights = {} -- 编队[1位] + 等级[3位] + 品质[1位] + 优先级[5位]
|
||
local GetCharacterPriority = XCharacterConfigs.GetCharacterPriority
|
||
for _, character in ipairs(ownCharacters) do
|
||
local teamOrder = inTeamIdMap[character.Id]
|
||
local stateOrder = teamOrder and (9 - teamOrder) or 9
|
||
local priority = GetCharacterPriority(character.Id)
|
||
local weightOrder = stateOrder * 1000000000
|
||
local weightLevel = character.Level * 1000000
|
||
local weightQuality = character.Quality * 100000
|
||
local weightPriority = priority
|
||
weights[character.Id] = weightOrder + weightLevel + weightQuality + weightPriority
|
||
end
|
||
table.sort(ownCharacters, function(a, b)
|
||
return weights[a.Id] > weights[b.Id]
|
||
end)
|
||
return ownCharacters
|
||
end
|
||
|
||
-- 是否满足关卡所需战力
|
||
function XFubenAssignManager.IsStagePass(stageId)
|
||
local groupId = XFubenAssignManager.GetGroupIdByStageId(stageId)
|
||
local groupData = XFubenAssignManager.GetGroupDataById(groupId)
|
||
return groupData:IsPass()
|
||
end
|
||
|
||
function XFubenAssignManager.GetAccountEnterKey()
|
||
return KeyAccountEnterAssign .. XPlayer.Id
|
||
end
|
||
|
||
-----------------协议----------
|
||
function XFubenAssignManager.AssignGetDataRequest(cb)
|
||
-- if cb then cb() return end -- for testing
|
||
XNetwork.Call(METHOD_NAME.AssignGetDataRequest, nil, function(res)
|
||
local info = res.AssignInfo
|
||
local chapterRecords = info.ChapterRecords -- 章节占领角色
|
||
XFubenAssignManager.UpdateChapterRecords(chapterRecords)
|
||
FinishStageIdDic = {}
|
||
local groupRecords = info.GroupRecords -- 关卡组挑战次数
|
||
for _, v in ipairs(groupRecords) do
|
||
local groupData = XFubenAssignManager.GetGroupDataById(v.GroupId)
|
||
groupData:SetFightCount(v.Count)
|
||
groupData:SetIsPerfect(v.IsPerfect)
|
||
if not XTool.IsTableEmpty(v.FinishStageIds) then
|
||
FinishStageIds = appendArray(FinishStageIds, v.FinishStageIds)
|
||
for k, id in pairs(v.FinishStageIds) do
|
||
-- 使用全局变量记录服务器发下来的数据
|
||
-- 已通关的StageId
|
||
FinishStageIdDic[id] = true
|
||
end
|
||
end
|
||
end
|
||
XEventManager.DispatchEvent(XEventId.EVENET_ASSIGN_CAN_REWARD) -- 刷新红点
|
||
|
||
GroupTeamRecords = info.GroupTeamRecords -- 编队记录
|
||
GroupTeamRecordsDic = {}
|
||
for _, v in ipairs(GroupTeamRecords or {}) do
|
||
local groupData = XFubenAssignManager.GetGroupDataById(v.GroupId)
|
||
local teamCount = #v.TeamInfoList
|
||
local posCount = v.CaptainPosList and #v.CaptainPosList or 0
|
||
local firstFightCount = v.FirstFightPosList and #v.FirstFightPosList or 0
|
||
|
||
for i, teamId in ipairs(groupData:GetTeamInfoId()) do
|
||
local teamData = XFubenAssignManager.GetTeamDataById(teamId)
|
||
local charaterIds = (i <= teamCount) and v.TeamInfoList[i] or nil
|
||
local captainPos = (i <= posCount) and v.CaptainPosList[i] or XFubenAssignManager.CAPTIAN_MEMBER_INDEX
|
||
local firstFightPos = (i <= firstFightCount) and v.FirstFightPosList[i] or XFubenAssignManager.FIRSTFIGHT_MEMBER_INDEX
|
||
teamData:SetMemberList(charaterIds)
|
||
teamData:SetLeaderIndex(captainPos)
|
||
teamData:SetFirstFightIndex(firstFightPos)
|
||
end
|
||
-- 队伍字典
|
||
GroupTeamRecordsDic[v.GroupId] = v
|
||
end
|
||
|
||
if cb then
|
||
cb()
|
||
end
|
||
end)
|
||
end
|
||
|
||
function XFubenAssignManager.AssignSetTeamRequest(GroupId, TeamList, captainPosList, firstFightPosList, cb)
|
||
XNetwork.Call(METHOD_NAME.AssignSetTeamRequest, { GroupId = GroupId, TeamList = TeamList, CaptainPosList = captainPosList, FirstFightPosList = firstFightPosList }, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
|
||
-- 设完队伍强制刷新下
|
||
XFubenAssignManager.AssignGetDataRequest(cb)
|
||
end)
|
||
end
|
||
|
||
function XFubenAssignManager.AssignSetCharacterRequest(ChapterId, CharacterId, cb)
|
||
-- if cb then cb() return end -- for testing
|
||
XNetwork.Call(METHOD_NAME.AssignSetCharacterRequest, { ChapterId = ChapterId, CharacterId = CharacterId }, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
|
||
local chapterData = XFubenAssignManager.GetChapterDataById(ChapterId)
|
||
chapterData:SetCharacterId(CharacterId)
|
||
|
||
XEventManager.DispatchEvent(XEventId.EVENT_REFRESH_CHRACTER_ABLIITY) -- 重新计算角色战力
|
||
XEventManager.DispatchEvent(XEventId.EVENT_ASSIGN_SELECT_OCCUPY_END) -- 刷新驻守界面
|
||
CsXGameEventManager.Instance:Notify(XEventId.EVENT_ASSIGN_SELECT_OCCUPY_END) -- 刷新驻守界面
|
||
if cb then
|
||
cb()
|
||
end
|
||
end)
|
||
end
|
||
function XFubenAssignManager.AssignGetRewardRequest(ChapterId, cb)
|
||
-- if cb then cb() return end -- for testing
|
||
XNetwork.Call(METHOD_NAME.AssignGetRewardRequest, { ChapterId = ChapterId }, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
local chapterData = XFubenAssignManager.GetChapterDataById(ChapterId)
|
||
chapterData:SetRewarded(true)
|
||
XUiManager.OpenUiObtain(res.RewardList or {})
|
||
if cb then
|
||
cb()
|
||
end
|
||
end)
|
||
end
|
||
|
||
-- 重置关卡
|
||
function XFubenAssignManager.AssignResetStageRequest(groupId, stageId, cb)
|
||
XNetwork.Call(METHOD_NAME.AssignResetStageRequest, { GroupId = groupId, StageId = stageId }, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
FinishStageIdDic[stageId] = nil
|
||
|
||
if cb then
|
||
cb()
|
||
end
|
||
end)
|
||
end
|
||
|
||
function XFubenAssignManager.GetSkillPlusIdList()
|
||
local list = {}
|
||
for _, chapterId in ipairs(XFubenAssignManager.GetChapterIdList()) do
|
||
local chapterData = XFubenAssignManager.GetChapterDataById(chapterId)
|
||
if chapterData:IsOccupy() then
|
||
table.insert(list, chapterData:GetSkillPlusId())
|
||
end
|
||
end
|
||
return list
|
||
end
|
||
|
||
function XFubenAssignManager.GetSkillPlusIdListOther(assignChapterRecords)
|
||
local list = {}
|
||
if assignChapterRecords == nil then
|
||
return list
|
||
end
|
||
for _, v in ipairs(assignChapterRecords) do
|
||
local chapterData = XAssignChapter.New(v.ChapterId)
|
||
chapterData:SetCharacterId(v.CharacterId)
|
||
|
||
if chapterData:IsOccupy() then
|
||
table.insert(list, chapterData:GetSkillPlusId())
|
||
end
|
||
end
|
||
return list
|
||
end
|
||
|
||
-- 二选1 入口红点
|
||
function XFubenAssignManager.CheckIsShowRedPoint()
|
||
if XFubenAssignManager.IsRewardRedPoint() then
|
||
return true
|
||
end
|
||
|
||
for k, chapterId in pairs(XFubenAssignManager.GetChapterIdList()) do
|
||
local chapter = XFubenAssignManager.GetChapterDataById(chapterId)
|
||
if chapter:IsRed() then
|
||
return true
|
||
end
|
||
end
|
||
|
||
return false
|
||
end
|
||
------------------副本入口扩展 start-------------------------
|
||
|
||
-- 获取进度提示
|
||
function XFubenAssignManager:ExGetProgressTip()
|
||
local str = ""
|
||
-- if not self:ExGetIsLocked() then
|
||
-- str = XFubenAssignManager.GetChapterProgressTxt()
|
||
-- end
|
||
local curr = XFubenAssignManager.GetAllChapterOccupyNum()
|
||
local total = #XFubenAssignManager.GetChapterIdList()
|
||
local textKeyName = "AssignOccupyProgress"
|
||
if curr >= total then
|
||
curr = XDataCenter.FubenAwarenessManager.GetAllChapterOccupyNum()
|
||
total = #XDataCenter.FubenAwarenessManager.GetChapterIdList()
|
||
textKeyName = "AwarenessCoverOccupyProgress"
|
||
end
|
||
str = CS.XTextManager.GetText(textKeyName, curr, total)
|
||
return str
|
||
end
|
||
|
||
function XFubenAssignManager:ExCheckIsShowRedPoint()
|
||
return XFubenAssignManager.CheckIsShowRedPoint() or XDataCenter.FubenAwarenessManager.CheckIsShowRedPoint()
|
||
end
|
||
|
||
function XFubenAssignManager.OpenUi()
|
||
if XFunctionManager.DetectionFunction(XFunctionManager.FunctionName.FubenAssign) then
|
||
XLuaUiManager.Open("UiPanelAssignMain")
|
||
end
|
||
end
|
||
|
||
function XFubenAssignManager:ExOpenMainUi()
|
||
if XFunctionManager.DetectionFunction(XFunctionManager.FunctionName.FubenAssign) then
|
||
XLuaUiManager.Open("UiAssignAwarenessSelect")
|
||
end
|
||
end
|
||
|
||
------------------副本入口扩展 end-------------------------
|
||
-------------------------------
|
||
XFubenAssignManager.Init()
|
||
return XFubenAssignManager
|
||
end |