miduo_client/Assets/ManagedResources/~Lua/Modules/FightLevel/FightLevelManager.lua

279 lines
13 KiB
Lua
Raw Normal View History

2021-05-07 20:24:41 +08:00
FightLevelManager = {};
local this = FightLevelManager
2021-05-11 15:12:37 +08:00
local HardStageChapter = ConfigManager.GetConfig(ConfigName.HardStageChapter)
local HardStage = ConfigManager.GetConfig(ConfigName.HardStage)
local HardStageReward = ConfigManager.GetConfig(ConfigName.HardStageReward)
2021-05-13 20:30:10 +08:00
local HardStageBuff = ConfigManager.GetConfig(ConfigName.HardStageBuff)
2021-05-11 15:12:37 +08:00
local stateList = {--状态:0-7星级状态8为荣耀三星,0为小节点未通过1为小节点通过
[0] = {0,0,0},--0 为未获得星 1 为 已获得星 二进制
[1] = {0,0,1},
[2] = {0,1,0},
[3] = {0,1,1},
[4] = {1,0,0},
[5] = {1,0,1},
[6] = {1,1,0},
[7] = {1,1,1},
}
local allChapterData = {}--所有章节信息
local curChapterId = 1--当前章节id
local curChapterLevelId = 1--当前章节中小关卡id 打一关前端自己更新一次
2021-05-13 09:56:11 +08:00
local isShowChapterOpenPopup = false--弹出章节开启标志
2021-05-07 20:24:41 +08:00
function this.Initialize()
2021-05-11 15:12:37 +08:00
allChapterData = {}
for index, config in ConfigPairs(HardStageChapter) do
if config then
local singleChapterData = {}
singleChapterData.chapterId = config.Id
singleChapterData.config = config
singleChapterData.state = 0--未开启 1 开启
singleChapterData.stars = 0--章节获得总星数
singleChapterData.HardStageChapter = {}--章节中小关卡信息
local curMaxStarNum = 0
singleChapterData.node = {}
local curChapterAllLevel = ConfigManager.GetAllConfigsDataByKey(ConfigName.HardStage,"Chapter", config.Id)
for j = 1, #curChapterAllLevel do
curMaxStarNum = curMaxStarNum + curChapterAllLevel[j].HighestStar
local HardStageNode = {}
HardStageNode.nodeId = curChapterAllLevel[j].Id
HardStageNode.type = curChapterAllLevel[j].StageType--类型:0.大节点1.小节点
HardStageNode.state = 0--状态:0-7星级状态8为荣耀三星,0为小节点未通过1为小节点通过
HardStageNode.config = curChapterAllLevel[j]--表
2021-05-11 20:20:38 +08:00
singleChapterData.node[HardStageNode.nodeId] = HardStageNode
2021-05-11 15:12:37 +08:00
end
2021-05-13 22:50:34 +08:00
singleChapterData.reward = {}
2021-05-11 15:12:37 +08:00
singleChapterData.curMaxStarNum = curMaxStarNum--章节总星数
allChapterData[config.Id] = singleChapterData
end
end
end
--后端更新章节信息
2021-05-13 09:56:11 +08:00
function this.UpdataChapterData(msg,_isShowChapterOpenPopup)
2021-05-11 15:12:37 +08:00
LogYellow("msg.chapter "..#msg.chapter)
if msg then
for i = 1, #msg.chapter do
local singleHardStageChapter = allChapterData[msg.chapter[i].chapterId]
2021-05-11 20:20:38 +08:00
LogYellow("msg.chapter[i].chapterId "..msg.chapter[i].chapterId.." "..msg.chapter[i].stars.." node num "..#msg.chapter[i].node.." reward num "..#msg.chapter[i].reward)
2021-05-13 20:30:10 +08:00
LogYellow("singleHardStageChapter.stars "..singleHardStageChapter.stars)
2021-05-11 15:12:37 +08:00
singleHardStageChapter.chapterId = msg.chapter[i].chapterId
2021-05-13 09:56:11 +08:00
if singleHardStageChapter.chapterId > this.GetCurChapterId() and _isShowChapterOpenPopup then
this.SetisShowChapterOpenPopup(true)
end
2021-05-11 15:12:37 +08:00
this.SetCurChapterId(singleHardStageChapter.chapterId)
singleHardStageChapter.stars = msg.chapter[i].stars--章节获得总星数
2021-05-11 20:20:38 +08:00
-- singleHardStageChapter.node = {}
2021-05-11 15:12:37 +08:00
for j = 1, #msg.chapter[i].node do
local HardStageNode = {}
HardStageNode.nodeId = msg.chapter[i].node[j].nodeId
HardStageNode.type = msg.chapter[i].node[j].type--类型:0.大节点1.小节点
HardStageNode.state = msg.chapter[i].node[j].state--状态:0-7星级状态8为荣耀三星,0为小节点未通过1为小节点通过
HardStageNode.config = HardStage[msg.chapter[i].node[j].nodeId]--表
this.SetCurChapterLevelId(HardStageNode.nodeId)
2021-05-11 20:20:38 +08:00
singleHardStageChapter.node[HardStageNode.nodeId] = HardStageNode
2021-05-11 15:12:37 +08:00
end
2021-05-13 22:50:34 +08:00
singleHardStageChapter.reward = {}--每章宝箱奖励
2021-05-11 15:12:37 +08:00
for k = 1, #msg.chapter[i].reward do
local HardStageChapterReward = {}
HardStageChapterReward.id = msg.chapter[i].reward[k].id
2021-05-13 22:50:34 +08:00
LogYellow("msg.chapter[i].reward[k].id "..msg.chapter[i].reward[k].id)
LogYellow("msg.chapter[i].reward[k].state "..msg.chapter[i].reward[k].state)
2021-05-11 15:12:37 +08:00
HardStageChapterReward.state = msg.chapter[i].reward[k].state--0.未领取1.已领取
HardStageChapterReward.config = HardStageReward[msg.chapter[i].reward[k].id]--表
table.insert(singleHardStageChapter.reward,HardStageChapterReward)
end
allChapterData[msg.chapter[i].chapterId] = singleHardStageChapter
end
2021-05-13 20:30:10 +08:00
CheckRedPointStatus(RedPointType.FightLevel)
2021-05-11 15:12:37 +08:00
end
end
function this.GetChapterData(allChapterId)
if allChapterId and allChapterId > 0 then
return allChapterData[allChapterId]
else
return allChapterData
end
end
function this.SetCurChapterId(ChapterId)
curChapterId = ChapterId
end
function this.GetCurChapterId()
return curChapterId
end
2021-05-13 09:56:11 +08:00
function this.SetisShowChapterOpenPopup(_isShowChapterOpenPopup)
isShowChapterOpenPopup = _isShowChapterOpenPopup
end
function this.GetisShowChapterOpenPopup()
return isShowChapterOpenPopup
end
2021-05-11 15:12:37 +08:00
function this.SetCurChapterLevelId(ChapterLevelId)
2021-05-13 09:56:11 +08:00
LogYellow("设置最新开启的小关id "..ChapterLevelId)
2021-05-11 15:12:37 +08:00
curChapterLevelId = ChapterLevelId
end
function this.GetCurChapterLevelId()
return curChapterLevelId
end
function this.GetAllChapterStars()
local allStarNum = 0
for i = 1, #allChapterData do
allStarNum = allStarNum + allChapterData[i].stars
end
return allStarNum
end
function this.GetCurLevelStarState(starNum,index)
return stateList[starNum][index] == 1
2021-05-07 20:24:41 +08:00
end
2021-05-11 20:20:38 +08:00
--请求回放
function this.HardStageReportRequset(_fightLevelData, callBack)
2021-05-13 22:50:34 +08:00
LogYellow(" _fightLevelData.nodeId ".. _fightLevelData.nodeId)
NetManager.HardStageReportRequset( _fightLevelData.nodeId,function (msg)--FIGHT_LEVEL _fightLevelData.config.Chapter,
2021-05-11 20:20:38 +08:00
if msg.player and #msg.player > 0 then
UIManager.OpenPanel(UIName.FightLevelSingleLevelInfoPopup,FIGHTLEVEL_POPUP_TYPE.BackBattle,msg.player)
else
PopupTipPanel.ShowTip("尚无符合条件的回放!")
end
end)
end
2021-05-07 20:24:41 +08:00
--开始战斗
2021-05-11 15:12:37 +08:00
local HardStageFightResponseMsg = {}
2021-05-13 20:30:10 +08:00
local curBattlefightLevelData = {}
2021-05-11 15:12:37 +08:00
function this.FightLevelFightBattle(_fightLevelData, callBack)
2021-05-13 09:56:11 +08:00
LogYellow("山河社稷图请求战斗 星级 ".._fightLevelData.nodeId)
2021-05-11 16:58:01 +08:00
NetManager.HardStageFightRequest(_fightLevelData.nodeId, FormationTypeDef.FIGHT_LEVEL,function (msg)--FIGHT_LEVEL
2021-05-13 09:56:11 +08:00
LogYellow("山河社稷图回复战斗 星级 "..msg.stars)
2021-05-13 22:50:34 +08:00
LogYellow("山河社稷图回复战斗 drop "..#msg.drop.itemlist)
2021-05-11 15:12:37 +08:00
HardStageFightResponseMsg = msg
2021-05-13 20:30:10 +08:00
curBattlefightLevelData = _fightLevelData
2021-05-11 16:58:01 +08:00
if _fightLevelData.config.StageType == FIGHTLEVEL_STAGETYPE.MainLevel or _fightLevelData.config.StageType == FIGHTLEVEL_STAGETYPE.AssistantLevel then
local fightData = BattleManager.GetBattleServerData(msg,0)
UIManager.OpenPanel(UIName.BattlePanel, fightData, _fightLevelData.config.StageType == FIGHTLEVEL_STAGETYPE.MainLevel and BATTLE_TYPE.FIGHTLEVEL or BATTLE_TYPE.FIGHT_ASSISTANT_LEVEL, callBack)
elseif _fightLevelData.config.StageType == FIGHTLEVEL_STAGETYPE.AssistantLevelReward then
UIManager.OpenPanel(UIName.RewardItemPopup,msg.drop,1,function()
--刷新数据刷新界面
end)
end
end)
2021-05-11 15:12:37 +08:00
end
2021-05-13 09:56:11 +08:00
--战斗数据
2021-05-11 15:12:37 +08:00
function this.GetHardStageFightResponseMsg()
return HardStageFightResponseMsg
2021-05-07 20:24:41 +08:00
end
2021-05-13 20:30:10 +08:00
--当前战斗关卡数据
function this.GetcurBattlefightLevelData()
return curBattlefightLevelData
end
--入口红点判断
2021-05-13 09:56:11 +08:00
function this.GetChapterRewardBoxRedPoint()
for i = 1, #allChapterData do
2021-05-13 20:30:10 +08:00
this.GetChapterRewardBoxRedPoint(i)
end
LogYellow("山河社稷图入口 redpoint false")
return false
end
--章节入口红点判断
function this.GetChapterRewardBoxRedPoint(chapterId)
if allChapterData[chapterId] and allChapterData[chapterId].stars > 0 then
if allChapterData[chapterId].reward and #allChapterData[chapterId].reward > 0 then
for k = 1, #allChapterData[chapterId].reward do
if allChapterData[chapterId].reward[k].state == 0 and allChapterData[chapterId].stars > allChapterData[chapterId].reward[k].config.Star then
LogYellow("chapterId redpoint true "..chapterId)
return true
2021-05-13 09:56:11 +08:00
end
end
end
end
2021-05-13 20:30:10 +08:00
LogYellow("chapterId redpoint false "..chapterId)
2021-05-13 09:56:11 +08:00
return false
end
2021-05-13 20:30:10 +08:00
--编队数据判断
function this.GetAllHeroDatas(limitLevel,parameter)
local heros = HeroManager.GetAllHeroDatas(limitLevel)
if parameter and parameter.config and parameter.config.StageType == FIGHTLEVEL_STAGETYPE.AssistantLevel and
HardStageBuff[parameter.config.HardStageBuff] and HardStageBuff[parameter.config.HardStageBuff].Type == 101 then
local Vocation = HardStageBuff[parameter.config.HardStageBuff].Vocation
if Vocation and #Vocation > 0 then
local newHeros = {}
for i = 1, #heros do
for j = 1, #Vocation do
if heros[i].property == Vocation[j] then
table.insert(newHeros,heros[i])
end
end
end
return newHeros
else
return heros
end
else
return heros
end
end
function this.GetHeroDataByProperty(_proId, limitLevel,parameter)
local heros = HeroManager.GetHeroDataByProperty(_proId, limitLevel)
if parameter and parameter.config and parameter.config.StageType == FIGHTLEVEL_STAGETYPE.AssistantLevel and
HardStageBuff[parameter.config.HardStageBuff] and HardStageBuff[parameter.config.HardStageBuff].Type == 101 then
local Vocation = HardStageBuff[parameter.config.HardStageBuff].Vocation
if Vocation and #Vocation > 0 then
local isheros = false
for j = 1, #Vocation do
if _proId == Vocation[j] then
isheros = true
end
end
if isheros then
return heros
else
return {}
end
else
return heros
end
else
return heros
end
end
function this.RrefreshFormation(parameter)
-- 死人后重组
local newFormation = {} -- 编队界面的编队数据
local curTeam = FormationManager.GetFormationByID(FormationTypeDef.FIGHT_LEVEL)
-- 编队界面的数据
newFormation.teamHeroInfos = {}
newFormation.teamPokemonInfos = {}
newFormation.teamId = FormationTypeDef.EXPEDITION
newFormation.teamName = curTeam.teamName
newFormation.teamPokemonInfos = curTeam.teamPokemonInfos
-- 成员数据
if parameter and parameter.config and parameter.config.StageType == FIGHTLEVEL_STAGETYPE.AssistantLevel and HardStageBuff[parameter.config.HardStageBuff] then
for i = 1, #curTeam.teamHeroInfos do
local roleData = curTeam.teamHeroInfos[i]
if HardStageBuff[parameter.config.HardStageBuff].Type == 100 then
if #newFormation.teamHeroInfos < 1 then--只能使用1个神将进入战斗后复制为相同的6个神将
-- 编队界面数据重组
table.insert(newFormation.teamHeroInfos, roleData)
end
elseif HardStageBuff[parameter.config.HardStageBuff].Type == 101 then
if roleData.heroId then
local singleHeroData = HeroManager.GetSingleHeroData(roleData.heroId)
local Vocation = HardStageBuff[parameter.config.HardStageBuff].Vocation
for j = 1, #Vocation do
if singleHeroData and singleHeroData.property == Vocation[j] then--只能上阵人系神将和佛系神将
-- 编队界面数据重组
table.insert(newFormation.teamHeroInfos, roleData)
end
end
end
end
end
if HardStageBuff[parameter.config.HardStageBuff].Type == 100 or HardStageBuff[parameter.config.HardStageBuff].Type == 101 then
FormationManager.formationList[FormationTypeDef.FIGHT_LEVEL] = newFormation
end
end
end
function this.GetFormationHeroMaxNum(parameter)
if parameter and parameter.config and parameter.config.StageType == FIGHTLEVEL_STAGETYPE.AssistantLevel and HardStageBuff[parameter.config.HardStageBuff] then
if HardStageBuff[parameter.config.HardStageBuff].Type == 100 then --只能使用1个神将进入战斗后复制为相同的6个神将
return 1
end
end
return ActTimeCtrlManager.MaxArmyNum()
end
2021-05-07 20:24:41 +08:00
return this