c1_lua/lua/app/module/summon/summon_manager.lua
2025-10-29 21:21:27 +08:00

312 lines
11 KiB
Lua

local SummonManager = class("SummonManager", BaseModule)
-- function SummonManager:showPopUI(params)
-- UIManager:showUI("app/ui/summon/summon_act_pop", params)
-- end
-- function SummonManager:showSummonFundUI(showPage)
-- UIManager:showUI("app/ui/summon/summon_act_ui",{ showPage = showPage })
-- end
function SummonManager:showSummonMainUI(summonId)
UIManager:showUI("app/ui/summon/summon_main_ui", {summonId = summonId})
end
function SummonManager:showSummonWishUI(summonId)
UIManager:showUI("app/ui/summon/summon_wish_ui", {summonId = summonId})
end
function SummonManager:showSummonRewardUI(params)
UIManager:showUI("app/ui/summon/summon_reward_ui", params)
end
function SummonManager:showSummonOddsUI(summonId)
UIManager:showUI("app/ui/summon/summon_odds_ui", {summonId = summonId})
end
function SummonManager:showSummonUnlockUI(params)
UIManager:showUI("app/ui/summon/summon_unlock_ui", params)
end
function SummonManager:showSummonShopUI(shopType)
UIManager:showUI("app/ui/summon/summon_shop_ui", { shopType = shopType })
end
function SummonManager:showSummonShopBoxUI(shopType, cfg)
UIManager:showUI("app/ui/summon/summon_shop_box_ui", { shopType = shopType, cfg = cfg })
end
--@region 协议
function SummonManager:onForceSummonReq(count, free, summonType)
local args = {}
args.times = count
args.free = free
args.id = summonType
self:sendMessage(ProtoMsgType.FromMsgEnum.SummonReq, args, self.onForceSummonRsp, BIReport.ITEM_GET_TYPE.FORCE_SUMMON)
end
function SummonManager:onForceSummonRsp(result)
if result.status ~= 0 then
EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.FORCE_SUMMON)
return
end
local newHero = {}
local guarantee1 = DataManager.SummonData:getSummonWishGuarantee1(result.reqData.id)
for _, reward in pairs(result.rewards) do
local cfg = ConfigManager:getConfig("item")[reward.item.id]
if cfg.type == GConst.ItemConst.ITEM_TYPE.HERO_FRAGMENT then
local isNew = DataManager.HeroData:getHeroIsNew(reward.item.id)
if isNew then
table.insert(newHero, reward.item.id)
end
if guarantee1 then
if DataManager.HeroData:getHeroQlt(reward.item.id) == 5 then
DataManager.SummonData:setSummonTrigger(result.reqData.id, true)
else
DataManager.SummonData:setSummonTrigger(result.reqData.id, false)
end
end
end
end
DataManager.SummonData:updateSummonCount(result.reqData.id, result.reqData.times, result.reqData.free)
EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.FORCE_SUMMON, result, newHero)
BIReport:postForceSummon(result.reqData.free, result.reqData.times, result.rewards, result.costs)
-- local params = {
-- times = result.reqData.times,
-- rewards = result.rewards,
-- }
-- 累计召唤英雄x次
ModuleManager.TaskManager:addTaskProgress(GConst.TaskConst.TASK_TYPE.X_SUMMON_HERO, result.reqData.times)
-- if result.first then
-- DataManager.GameSettingData:showRateUIByForceSummon()
-- end
end
-- 商店
function SummonManager:reqForceSummonShopExchange(id, count)
self:sendMessage(ProtoMsgType.FromMsgEnum.SummonShopExchangeReq, {id = id, count = count}, self.rspForceSummonShopExchange, BIReport.ITEM_GET_TYPE.FORCE_SUMMON_SHOP_EXCHANGE)
end
function SummonManager:rspForceSummonShopExchange(result)
if result.err_code ~= GConst.ERROR_STR.SUCCESS then
return
end
GFunc.showRewardBox(result.rewards)
DataManager.SummonData:shopSuccess(result.reqData.id, result.reqData.count)
BIReport:postSummonShopExchange(BIReport.SUMMON_OP_TYPE.SUMMON_SHOP, result.reqData.id, result.reqData.count, result.rewards)
end
function SummonManager:reqSummonShopMarkUnlockTip(shopType)
-- local ids = DataManager.SummonData:getUnlockShopId(shopType)
-- self:sendMessage(ProtoMsgType.FromMsgEnum.SummonShopMarkUnlockTipReq, {ids = ids}, self.rspSummonShopMarkUnlockTip, BIReport.ITEM_GET_TYPE.SUMMON_OPEN_EXCHANGED_UI)
end
function SummonManager:rspSummonShopMarkUnlockTip(result)
-- DataManager.SummonData:onSummonShopSoulOpen(result.reqData.ids)
end
--@endregion
function SummonManager:onSummonWishSetReq(summonType, heroId)
self:sendMessage(ProtoMsgType.FromMsgEnum.SummonWishSetReq, {id = summonType, hero = heroId}, self.onSummonWishSetRsp,
BIReport.ITEM_GET_TYPE.FORCE_SUMMON_WISH_HREO_ID)
end
function SummonManager:onSummonWishSetRsp(result)
if result.err_code ~= GConst.ERROR_STR.SUCCESS then
return
end
DataManager.SummonData:updateSummonWishHeroId(result.reqData.id, result.reqData.hero)
EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.FORCE_SUMMON_WISH_HERO_ID)
end
function SummonManager:onSummonWishClaimReq(summonType)
self:sendMessage(ProtoMsgType.FromMsgEnum.SummonWishClaimReq, {id = summonType}, self.onSummonWishClaimRsp,
BIReport.ITEM_GET_TYPE.FORCE_SUMMON_WISH_HREO_ID)
end
function SummonManager:onSummonWishClaimRsp(result)
if result.err_code ~= GConst.ERROR_STR.SUCCESS then
return
end
DataManager.SummonData:summonWishClaim()
GFunc.showRewardBox(result.rewards)
-- local newForce = {}
-- for _, reward in pairs(result.rewards) do
-- local isNew = DataManager.ForceData:getForceIsNew(reward.item.id)
-- if isNew then
-- table.insert(newForce, reward.item.id)
-- DataManager.ForceData:setForceIsNew(reward.item.id, false)
-- end
-- end
-- EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.FORCE_SUMMON_WISH_CLAIM, result,newForce)
end
--region卡池活动
function SummonManager:onBuyBoundyGift(id)
PayManager:purchasePackage(id, PayManager.PURCHARSE_TYPE.ACT_GIFT, true)
end
--1=签到, 2=英雄战令1, 3=英雄战令2
--act_bounty表ID, 0表示一键领取
--grade 领取的档位 0.免费档 1.付费档
function SummonManager:activityHeroBountyClaimedReq(type, lv, grade)
self:sendMessage(ProtoMsgType.FromMsgEnum.ActivityHeroBountyClaimedReq, { type = type, lv = lv, grade = grade }, self.activityHeroBountyClaimedRsp,
GConst.SummonConst.ACT_COMP_GER_REWARD_BI[type])
end
function SummonManager:activityHeroBountyClaimedRsp(result)
if result.err_code ~= GConst.ERROR_STR.SUCCESS then
return
end
GFunc.showRewardBox(result.rewards)
local activityId = DataManager.SummonActData:getActId()
if result.reqData.type == 1 then
local curDay = DataManager.SummonActData.SummonActLoginData:getCurLv()
local maxIndex, minIndex = DataManager.SummonActData.SummonActLoginData:getMinAndMaxUnclaimedRewardId()
DataManager.SummonActData.SummonActLoginData:initActivityInfo(result.info)
BIReport:postActSummonLogin(activityId,minIndex, maxIndex, curDay, result.rewards)
elseif result.reqData.type == 2 then
local heroId = DataManager.SummonActData.SummonActUpgradeData:getHeroId(1)
local heroLv = DataManager.ForceData:getForceLevel(heroId)
local maxIndex, minIndex = DataManager.SummonActData.SummonActUpgradeData:getMinAndMaxUnclaimedRewardId(1)
DataManager.SummonActUpgradeData:initActivityInfo(result.info)
BIReport:postActSummonUpgrade("HeroPage_1", activityId,minIndex, maxIndex, heroId, heroLv,result.rewards)
elseif result.reqData.type == 3 then
local heroId = DataManager.SummonActData.SummonActUpgradeData:getHeroId(2)
local heroLv = DataManager.ForceData:getForceLevel(heroId)
local maxIndex, minIndex = DataManager.SummonActData.SummonActUpgradeData:getMinAndMaxUnclaimedRewardId(2)
DataManager.SummonActData.SummonActUpgradeData:initActivityInfo(result.info)
BIReport:postActSummonUpgrade("HeroPage_2", activityId,minIndex, maxIndex, heroId, heroLv,result.rewards)
end
end
function BIReport:postActSummonLogin(activityId, minId, maxId, cur, rewards)
local args = {
opt_type = "Reward",
act_id = activityId,
max_id = maxId,
min_id = minId,
cur_day = cur,
reward_str = rewards and GFunc.getRewardsStr(rewards) or nil,
}
self:report(BIReport.EVENT_NAME_ACT_SUMMON_LOGIN, args)
end
function BIReport:postActSummonUpgrade(heroPage, activityId, minId, maxId, heroId, HeroLv, rewards)
local args = {
opt_type = "Reward",
act_id = activityId,
max_id = maxId,
min_id = minId,
hero_id = heroId,
hero_level = HeroLv,
hero_page = heroPage,
reward_str = rewards and GFunc.getRewardsStr(rewards) or nil,
}
self:report(BIReport.EVENT_NAME_ACT_SUMMON_UPGRADE, args)
end
function BIReport:postActSummonGem(activityId, minId, maxId, cur, rewards)
local args = {
opt_type = "Reward",
act_id = activityId,
max_id = maxId,
min_id = minId,
cur_day = cur,
reward_str = rewards and GFunc.getRewardsStr(rewards) or nil,
}
self:report(BIReport.EVENT_NAME_ACT_SUMMON_LOGIN, args)
end
function BIReport:postActSummonRecharge(activityId, minId, maxId, cur, rewards)
local args = {
opt_type = "Reward",
act_id = activityId,
max_id = maxId,
min_id = minId,
cur_day = cur,
reward_str = rewards and GFunc.getRewardsStr(rewards) or nil,
}
self:report(BIReport.EVENT_NAME_ACT_SUMMON_LOGIN, args)
end
--endregion
-- region 任务
function SummonManager:reqTaskReward(actId, taskId)
self:sendMessage(ProtoMsgType.FromMsgEnum.ActivityTaskClaimReq, {activity_id = actId, task_id = taskId}, self.rspTaskReward, BIReport.ITEM_GET_TYPE.ACT_TASK_REWARD)
end
function SummonManager:rspTaskReward(result)
if result.err_code ~= GConst.ERROR_STR.SUCCESS then
return
end
GFunc.showRewardBox(result.rewards)
DataManager.ActTaskData:onTaskClaimed(result.reqData.activity_id, result.reqData.task_id)
BIReport:postActTask(result.reqData.activity_id, result.reqData.task_id, result.rewards)
end
function BIReport:postActTask(actId, taskId, rewards)
local args = {
act_id = actId,
task_id = taskId,
reward_str = rewards and GFunc.getRewardsStr(rewards) or nil,
}
self:report(BIReport.EVENT_NAME_ACT_TASK, args)
end
--@endregion
--@region 上报
BIReport.EVENT_NAME_ACT_SUMMON_LOGIN = "client_act_summon_login"
BIReport.EVENT_NAME_ACT_SUMMON_UPGRADE = "client_act_summon_upgrade"
BIReport.EVENT_NAME_ACT_SUMMON_GEM = "client_act_summon_gem"
BIReport.EVENT_NAME_ACT_SUMMON_RECHARGE = "client_act_summon_recharge"
BIReport.EVENT_NAME_ACT_SUMMON = "client_act_summon" -- 念力觉醒
BIReport.EVENT_NAME_FORCE = "client_hero_opt" -- 士兵
BIReport.ITEM_GET_TYPE.FORCE_SUMMON_SHOP_EXCHANGE = "force_summon_shop_exchange"
BIReport.SUMMON_OP_TYPE = {
REWARD_ROUND = "RewardRound",
REWARD_ROUND_TASK = "RewardRoundTask",
REWARD_RECHARGE_TASK = "RewardRechargeTask",
SUMMON_SHOP = "SummonShop",
}
BIReport.FORCE_OPT_TYPE = {
UNLOCK = "Unlock",
LEVELUP = "LevelUp",
STARUP = "StarUp",
FORMATION = "Formation",
SUMMON = "Summon",
}
-- 士兵召唤
function BIReport:postForceSummon(isfree, count, rewards, costs, summonId)
local args = {
opt_type = BIReport.FORCE_OPT_TYPE.SUMMON,
free_summon = isfree,
count = count,
summon_id = summonId,
reward_str = rewards and GFunc.getRewardsStr(rewards) or nil,
cost_str = costs and GFunc.getRewardsStr(costs) or nil,
}
self:report(BIReport.EVENT_NAME_FORCE, args)
end
function BIReport:postSummonShopExchange(optType, id, num, rewards)
local args = {
optType = optType,
shop_id = id,
exchange_num = num,
reward_str = rewards and GFunc.getRewardsStr(rewards) or nil,
}
self:report(BIReport.EVENT_NAME_ACT_SUMMON, args)
end
--@endregion
return SummonManager