206 lines
8.5 KiB
Lua
206 lines
8.5 KiB
Lua
local DungeonManager = class("DungeonManager", BaseModule)
|
|
|
|
--region UI
|
|
function DungeonManager:showDungeonDaylyMainUI(page)
|
|
local params = {
|
|
page = page or GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD
|
|
}
|
|
UIManager:showUI("app/ui/dungeon/dungeon_daily_main_ui", params)
|
|
end
|
|
|
|
-- function DungeonManager:showRankUI(showPage, rankList, rankSelf)
|
|
-- local params = {
|
|
-- showPage = showPage,
|
|
-- rankList = rankList,
|
|
-- rankSelf = rankSelf,
|
|
-- }
|
|
-- UIManager:showUI("app/ui/rank/rank_ui", params)
|
|
-- end
|
|
|
|
-- function DungeonManager:showRankRewardUI(showModule)
|
|
-- local params = {
|
|
-- showModule = showModule,
|
|
-- }
|
|
-- UIManager:showUI("app/ui/rank/rank_reward_ui", params)
|
|
-- end
|
|
--endregion
|
|
|
|
-- 外部接口--------------------------------------------------------------------------
|
|
|
|
-- 扫荡
|
|
function DungeonManager:reqSweep(module, id)
|
|
self:reqSweepGold(id)
|
|
-- if module == ModuleManager.MODULE_KEY.DUNGEON_GOLD then
|
|
-- self:reqSweepGold(id)
|
|
-- elseif module == ModuleManager.MODULE_KEY.DUNGEON_RES then
|
|
-- self:reqSweepShards(id)
|
|
-- end
|
|
end
|
|
|
|
-- 内部接口--------------------------------------------------------------------------
|
|
|
|
function DungeonManager:checkDayChange()
|
|
if EDITOR_MODE then
|
|
Logger.logHighlight("检查跨天:".. tostring(DataManager.DungeonData:getIfCanReset()))
|
|
end
|
|
if not DataManager.DungeonData:getIfCanReset() then
|
|
return
|
|
end
|
|
|
|
-- 跨天重置数据
|
|
DataManager.DungeonData:onDayChange()
|
|
end
|
|
|
|
-- 请求挑战金币副本
|
|
function DungeonManager:onDungeonStartReq(id)
|
|
local params = {
|
|
id = id,
|
|
}
|
|
local dungeonDailyType = DataManager.DungeonDailyData:getDungeonDailyTypeByChapterId(id)
|
|
local ticketCount = 0
|
|
if dungeonDailyType == GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD then
|
|
local remainTimes = DataManager.DungeonDailyData.GoldData:getTodayRemainTimes()
|
|
ticketCount = DataManager.BagData.ItemData:getItemNumById(GConst.ItemConst.ITEM_ID_DUNGEON_TICKET_1)
|
|
if remainTimes <= 0 and ticketCount <= 0 then
|
|
GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.DAILY_CHALLENGE_DESC_1))
|
|
return
|
|
end
|
|
elseif dungeonDailyType == GConst.DungeonConst.DUNGEON_DAILY_TYPE.MATERIAL then
|
|
local remainTimes = DataManager.DungeonDailyData.MaterialData:getTodayRemainTimes()
|
|
ticketCount = DataManager.BagData.ItemData:getItemNumById(GConst.ItemConst.ITEM_ID_DUNGEON_TICKET_2)
|
|
if remainTimes <= 0 and ticketCount <= 0 then
|
|
GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.DAILY_CHALLENGE_DESC_1))
|
|
return
|
|
end
|
|
else
|
|
return
|
|
end
|
|
local itemGetType = dungeonDailyType == GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD and BIReport.ITEM_GET_TYPE.ENTER_DUNGEON_DAILY_GOLD_BATTLE or BIReport.ITEM_GET_TYPE.ENTER_DUNGEON_DAILY_MATERIAL_BATTLE
|
|
self:sendMessage(ProtoMsgType.FromMsgEnum.DungeonStartReq, params, self.onDungeonStartRsp, itemGetType)
|
|
end
|
|
|
|
-- 响应挑战金币副本
|
|
function DungeonManager:onDungeonStartRsp(result)
|
|
if result.err_code ~= GConst.ERROR_STR.SUCCESS then
|
|
return
|
|
end
|
|
DataManager.DungeonDailyData:setCurrChallengeChapterId(result.reqData.id)
|
|
local dungeonDailyType = DataManager.DungeonDailyData:getDungeonDailyTypeByChapterId(result.reqData.id)
|
|
ModuleManager.BattleManager:playBattle(GConst.BattleConst.BATTLE_TYPE.DUNGEON_GOLD, nil, function()
|
|
UIManager:closeAllUI()
|
|
ModuleManager.MaincityManager:showMainCityUI(GConst.MainCityConst.BOTTOM_PAGE.DUNGEON)
|
|
ModuleManager.DungeonManager:showDungeonDaylyMainUI(dungeonDailyType)
|
|
end)
|
|
-- end, nil, {dungeonType = dungeonDailyType})
|
|
end
|
|
|
|
-- 请求结算金币副本
|
|
function DungeonManager:reqEndChallengeGold(chapterId, combatReport, taskProgress, totalDamage, remainingHp)
|
|
-- local parmas = {
|
|
-- win = combatReport.victory,
|
|
-- total_damage = totalDamage,
|
|
-- remaining_hp = remainingHp,
|
|
-- chapter_gold_id = id,
|
|
-- task_stat = taskProgress,
|
|
-- combatReport = combatReport,
|
|
-- }
|
|
-- self:sendMessage(ProtoMsgType.FromMsgEnum.ChapterGoldChallengeSettlementReq, parmas, self.respEndChallengeGold, BIReport.ITEM_GET_TYPE.DUNGEON_GOLD_END)
|
|
|
|
local params = {
|
|
id = chapterId,
|
|
win = combatReport.victory,
|
|
cheat = false,
|
|
task_stat = taskProgress,
|
|
combatReport = combatReport,
|
|
}
|
|
local dungeonDailyType = DataManager.DungeonDailyData:getDungeonDailyTypeByChapterId(chapterId)
|
|
local itemGetType = dungeonDailyType == GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD and BIReport.ITEM_GET_TYPE.FINISH_DUNGEON_DAILY_GOLD_BATTLE or BIReport.ITEM_GET_TYPE.FINISH_DUNGEON_DAILY_MATERIAL_BATTLE
|
|
self:sendMessage(ProtoMsgType.FromMsgEnum.DungeonSettlementReq, params, self.respEndChallengeGold, itemGetType)
|
|
end
|
|
|
|
-- 响应结算金币副本
|
|
function DungeonManager:respEndChallengeGold(result)
|
|
if result.err_code == GConst.ERROR_STR.BATTLE_CHEATER then
|
|
ModuleManager.BattleManager:exitBattle()
|
|
local params = {
|
|
content = I18N:getGlobalText(I18N.GlobalConst.CHEAT_1),
|
|
boxType = GConst.MESSAGE_BOX_TYPE.MB_OK,
|
|
okText = I18N:getGlobalText(I18N.GlobalConst.BTN_TEXT_OK),
|
|
}
|
|
GFunc.showMessageBox(params)
|
|
return
|
|
elseif result.err_code ~= GConst.ERROR_STR.SUCCESS then
|
|
return
|
|
end
|
|
local chapterId = result.reqData.id
|
|
local victory = result.reqData.win
|
|
DataManager.DungeonDailyData:onFightDungeonDailyFinish(chapterId, victory)
|
|
ModuleManager.BattleManager:showBattleResultUI(GConst.BattleConst.BATTLE_TYPE.DUNGEON_GOLD, result.rewards, result.reqData.combatReport)
|
|
|
|
-- if passId ~= DataManager.DungeonData:getPassedMaxId(ModuleManager.MODULE_KEY.DUNGEON_GOLD) then
|
|
-- local data = {}
|
|
-- data.dungeon_progress = DataManager.DungeonData:getDungeonBIStr()
|
|
-- CS.ThinkingAnalytics.ThinkingAnalyticsAPI.UserSet(data)
|
|
-- end
|
|
|
|
if result.reqData then
|
|
local taskStat = result.reqData.task_stat
|
|
if taskStat then
|
|
taskStat[GConst.BattleConst.BATTLE_TASK_FIELD.KILL_BOSS] = 0 -- boss不算
|
|
taskStat[GConst.BattleConst.BATTLE_TASK_FIELD.KILL_NORMAL_MONSTER] = 0 -- 击杀小怪数量不算
|
|
taskStat[GConst.BattleConst.BATTLE_TASK_FIELD.PASS_WAVE] = 0 -- 通关波数不算
|
|
ModuleManager.TaskManager:addFightTaskProgress(taskStat)
|
|
end
|
|
end
|
|
end
|
|
|
|
-- 请求扫荡金币副本
|
|
function DungeonManager:sweepDungeonDaily(id)
|
|
local params = {
|
|
id = id,
|
|
}
|
|
local dungeonDailyType = DataManager.DungeonDailyData:getDungeonDailyTypeByChapterId(id)
|
|
if dungeonDailyType == GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD then
|
|
local remainTimes = DataManager.DungeonDailyData.GoldData:getTodayRemainTimes()
|
|
local ticketCount = DataManager.BagData.ItemData:getItemNumById(GConst.ItemConst.DUNGEON_TICKET_1)
|
|
if remainTimes <= 0 and ticketCount <= 0 then
|
|
GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.DAILY_CHALLENGE_DESC_1))
|
|
return
|
|
end
|
|
elseif dungeonDailyType == GConst.DungeonConst.DUNGEON_DAILY_TYPE.MATERIAL then
|
|
local remainTimes = DataManager.DungeonDailyData.MaterialData:getTodayRemainTimes()
|
|
local ticketCount = DataManager.BagData.ItemData:getItemNumById(GConst.ItemConst.DUNGEON_TICKET_2)
|
|
if remainTimes <= 0 and ticketCount <= 0 then
|
|
GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.DAILY_CHALLENGE_DESC_1))
|
|
return
|
|
end
|
|
else
|
|
return
|
|
end
|
|
local itemGetType = dungeonDailyType == GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD and BIReport.ITEM_GET_TYPE.SWEEP_DUNGEON_DAILY_GOLD_BATTLE or BIReport.ITEM_GET_TYPE.SWEEP_DUNGEON_DAILY_MATERIAL_BATTLE
|
|
self:sendMessage(ProtoMsgType.FromMsgEnum.DungeonSweepReq, params, self.onSweepDungeonDailyFinish, itemGetType)
|
|
end
|
|
|
|
-- 响应扫荡金币副本
|
|
function DungeonManager:onSweepDungeonDailyFinish(result)
|
|
if result.err_code ~= GConst.ERROR_STR.SUCCESS then
|
|
return
|
|
end
|
|
if result.rewards then
|
|
GFunc.showRewardBox(result.rewards)
|
|
end
|
|
DataManager.DungeonDailyData:onSweepDungeonDailyFinish(result.reqData.id)
|
|
ModuleManager.TaskManager:addTaskProgress(GConst.TaskConst.TASK_TYPE.CHALLENGE_DAILY_NUM_SINGLE, 1)
|
|
end
|
|
|
|
--region 上报
|
|
-- 日常副本
|
|
BIReport.ITEM_GET_TYPE.ENTER_DUNGEON_DAILY_GOLD_BATTLE = "enter_dungeon_daily_gold_battle" -- 进入金币副本
|
|
BIReport.ITEM_GET_TYPE.FINISH_DUNGEON_DAILY_GOLD_BATTLE = "finish_dungeon_daily_gold_battle" -- 结算金币副本
|
|
BIReport.ITEM_GET_TYPE.SWEEP_DUNGEON_DAILY_GOLD_BATTLE = "sweep_dungeon_daily_gold_battle" -- 扫荡金币副本
|
|
BIReport.ITEM_GET_TYPE.ENTER_DUNGEON_DAILY_MATERIAL_BATTLE = "enter_dungeon_daily_material_battle" -- 进入材料副本
|
|
BIReport.ITEM_GET_TYPE.FINISH_DUNGEON_DAILY_MATERIAL_BATTLE = "finish_dungeon_daily_material_battle" -- 结算材料副本
|
|
BIReport.ITEM_GET_TYPE.SWEEP_DUNGEON_DAILY_MATERIAL_BATTLE = "sweep_dungeon_daily_material_battle" -- 扫荡材料副本
|
|
--endregion
|
|
|
|
return DungeonManager |