c1_lua/lua/app/module/bounty/bounty_manager.lua
2023-08-16 17:35:17 +08:00

116 lines
3.7 KiB
Lua

local BountyManager = class("BountyManager", BaseModule)
function BountyManager:showBountyMainUI()
UIManager:showUI("app/ui/bounty/bounty_main_ui")
end
function BountyManager:showBountyBuyUI()
DataManager.BountyData:markPopBought()
UIManager:showUI("app/ui/bounty/bounty_buy_ui")
end
function BountyManager:claimReward(index, isPro)
local args = {
level = index,
is_pro = isPro,
}
self:sendMessage(ProtoMsgType.FromMsgEnum.BountyRewardReq, args, {}, self.onClaimReward, BIReport.ITEM_GET_TYPE.BOUNTY_REWARD)
end
function BountyManager:onClaimReward(result)
if result.err_code == GConst.ERROR_STR.SUCCESS then
if result.rewards then
-- 读表获取该层奖励 如果是箱子走单独奖励展示接口
local isOneKeyGet = false
local isSpecialBox = false
local index = result.reqData.level
local rewardId
if index == 0 then -- 一键领取
isOneKeyGet = true
else
local isPro = result.reqData.is_pro
local info = DataManager.BountyData:getSeasonInfoByLevel(index)
local rewardType
if info then
local reward = isPro and info.reward_pro or info.reward
rewardType = reward and reward.type
rewardId = reward and reward.id
if rewardType == GConst.REWARD_TYPE.ITEM then
local itemCfgInfo = ConfigManager:getConfig("item")[rewardId]
if itemCfgInfo and itemCfgInfo.type == GConst.ItemConst.ITEM_TYPE.BOX then
isSpecialBox = true
end
end
end
end
if isSpecialBox and not isOneKeyGet then
ModuleManager.ShopManager:showBoxOpenUI({type = GConst.ShopConst.BOX_REWARD_TYPE.BOUNTY, params = rewardId, rewards = result.rewards})
local openType = BIReport.BOX_OPEN_OPEN_TYPE.BOUNTY
BIReport:postBoxOpen(rewardId, BIReport.BOX_OPEN_BOX_TYPE.ACTIVITY, openType, 0, result.rewards)
else
GFunc.showRewardBox(result.rewards)
end
end
if result.reqData.is_pro ~= nil then
local BountyData = DataManager.BountyData
local index = result.reqData.level
if index ~= 0 then
if result.reqData.is_pro then
BountyData:onClaimProReward(result.reqData.level)
else
BountyData:onClaimReward(result.reqData.level)
end
else
BountyData:onOneKeyClaimReward()
end
BIReport:postBountyReward(BountyData:getBountyReportType(), BountyData:getLevel(), BountyData:getExp(), BountyData:getSeason(), result.reqData.level, result.reqData.is_pro)
end
end
end
function BountyManager:buyBountyLevel()
if not DataManager.BountyData:getIfCanBuyLevel() then
return
end
local cost = DataManager.BountyData:getBuyBountyLevelCost()
local costId = GFunc.getRewardId(cost)
local costNum = GFunc.getRewardNum(cost)
if not GFunc.checkCost(costId, costNum, true) then
return
end
local params ={
titleTx = I18N:getGlobalText(I18N.GlobalConst.BOUNTY_BUY_LEVEL_TITLE),
content = I18N:getGlobalText(I18N.GlobalConst.BOUNTY_BUY_LEVEL_COUNTENT),
boxType = GConst.MESSAGE_BOX_TYPE.MB_OK_CANCEL,
showToday = GConst.MESSAGE_BOX_SHOW_TODAY.BOUNTY_BUY_LEVEL,
costId = costId,
costNum = costNum,
okFunc = function()
self:sendMessage(ProtoMsgType.FromMsgEnum.BountyLevelUnlockReq, {}, {}, self.onBoughtBountyLevel, BIReport.ITEM_GET_TYPE.BOUNTY_UNLOCK_LEVEL)
end,
}
GFunc.showMessageBox(params)
end
function BountyManager:onBoughtBountyLevel(result)
if result.err_code == GConst.ERROR_STR.SUCCESS then
DataManager.BountyData:onBoughtLevel()
end
end
function BountyManager:buyBounty(advanced)
if not DataManager.BountyData:getIsOpen() then
return
end
PayManager:purchasePackage(DataManager.BountyData:getGiftId(advanced), PayManager.PURCHARSE_TYPE.ACT_GIFT)
end
function BountyManager:onBoughtBountyFinish(result)
if result.status == 0 then
DataManager.BountyData:setBought(result.season, result.level)
end
end
return BountyManager