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