local ItemSources_Controller = {} local private = {} local EventSystem = require('Event/EventSystem') local TeamPVEQuYangId = 17 local TeamPVEXuZhouId = 18 local TeamPVEGuanDuId = 19 local View_BlockItemSourceJump = { Const_UI_Lua.UIEnum.UISyncTeamPVPSelectHeroPanel, } function ItemSources_Controller.OnStartup() private.itemSourceFunction = {} private.InitItemSourceFunction() end function private.IsBlockByView() for i, v in ipairs(View_BlockItemSourceJump) do if UIManager.IsViewOpened(v) then return true end end return false end --获取排序的同一种类不同等级宝石的来源途径的数据list,目前用不到 --function ItemSources_Controller.GetJadeSourceList(jadeType) -- local jadeSourceIdList = MDL.ItemSources.GetJadeSourceIdList(jadeType) -- local temp = {} -- for i, v in ipairs(jadeSourceIdList) do -- table.insert(temp, MDL.ItemSources.GetSourceDataById(v.sourceId)) -- end -- table.sort(temp, private.SortItemSources) -- return temp --end function ItemSources_Controller.GetHeroSourceList(heroId) local heroSourceData = MDL.ItemSources.GetHeroSourceIdList(heroId) table.sort(heroSourceData, private.SortItemSources) return heroSourceData end function private.SortItemSources(a, b) return a.sort < b.sort end function ItemSources_Controller.IsShowItemSource(itemId) local itemData = DataSheetManager.ItemData:GetDataByID(itemId) return itemData.ItemSource and MDL.ItemSources.GetItemSourcesNumById(itemId) > 0 and BattleDataGetter.IsTownLevel() end function private.RegistItemSourceFunction(sourceId, func) private.itemSourceFunction[sourceId] = func end -- 注册道具获取来源函数 function private.InitItemSourceFunction() local sourceType = MDL.ItemSources.SourceType private.RegistItemSourceFunction(sourceType.MainBarrier, function(itemId, param) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UILevelSelectPanel) end) private.RegistItemSourceFunction(sourceType.RingDaily, function(itemId, param) CTL.Task.GoToRingTask(MDL.Task.Enum_RingTaskType.RingDaily) if MDL.Task.GetDailyRingTaskState() == MDL.Task.Enum_RingTaskState.Done then return false end UIManager.RecoverTopView() CTL.HomeMain.CloseOpenView() end) private.RegistItemSourceFunction(sourceType.TeamDungeonQuYang, function(itemId, param) local id = CTL.TeamDungeon.GetUIActivityId() if not id or id ~= TeamPVEQuYangId then CTL.TeamDungeon.OpenMainPanel(TeamPVEQuYangId) end end) private.RegistItemSourceFunction(sourceType.TeamDungeonXuZhou, function(itemId, param) local id = CTL.TeamDungeon.GetUIActivityId() if not id or id ~= TeamPVEXuZhouId then CTL.TeamDungeon.OpenMainPanel(TeamPVEXuZhouId) end end) private.RegistItemSourceFunction(sourceType.TeamDungeonGuanDu, function(itemId, param) local id = CTL.TeamDungeon.GetUIActivityId() if not id or id ~= TeamPVEGuanDuId then CTL.TeamDungeon.OpenMainPanel(TeamPVEGuanDuId) end end) private.RegistItemSourceFunction(sourceType.WorldBoss, function(itemId, param) local context if param then local bossId = param if bossId then context = { [1] = bossId } end end private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIWorldBossMainPanel, context) end) private.RegistItemSourceFunction(sourceType.PersonalBoss, function(itemId, param) CTL.PersonalBoss.OpenPersonalBossPanelByArea() end) private.RegistItemSourceFunction(sourceType.HeroBiography, function(itemId, param) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIHeroBiographyMain) end) private.RegistItemSourceFunction(sourceType.ClimbTower, function(itemId, param) if not UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UIClimbTowerMainPanel) then CTL.ClimbTower.OpenNormalClimbTower() end end) private.RegistItemSourceFunction(sourceType.NationClimbTowerEntry, function(itemId, param) if not MDL.Unlock.IsUnlock(MDL.Unlock.FunctionType.ClimbTower) then return end CTL.ClimbTower.OpenMainPanel() end) private.RegistItemSourceFunction(sourceType.SoloFight, function(itemId, param) if not UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UISoloFightPanel) then CTL.SoloFight.OpenSoloFightView() end end) private.RegistItemSourceFunction(sourceType.FairPlay, function(itemId, param) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIFairPlayMainPanel) end) private.RegistItemSourceFunction(sourceType.Battle3V3, function(itemId, param) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UISyncTeamPVPMainPanel) end) private.RegistItemSourceFunction(sourceType.BossChallenge, function(itemId, param) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIBossChallengeMain) end) private.RegistItemSourceFunction(sourceType.Activation, function(itemId, param) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIActivitiesMain) end) private.RegistItemSourceFunction(sourceType.DrawCard, function(itemId, param) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIGachaMain) end) private.RegistItemSourceFunction(sourceType.ResourcesChapter, function(itemId, param) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIMaterialLevelMainPanel) end) private.RegistItemSourceFunction(sourceType.Store, function(itemId, param) local tabId = MDL.Shop.GetTabIDByItemId(itemId, MDL.ItemSources.SourceType.Store) if tabId then -- 跳转判断页签是否存在 if CTL.PayMall.CanJumpToShop(itemId) then local context = itemId and { itemId = itemId } or nil private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIShopMain, context) else local tabName = MDL.Shop.GetStoreTypeTabName(tabId) local str = UIUtils.GetLocalizedTxt(Const_IDS[tabName]) .. UIUtils.GetLocalizedTxt(Const_IDS["IDS_GuildAllies_NotUlock"]) CTL.Tips.AddTipsMsg(str) end else private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIShopMain) end end) private.RegistItemSourceFunction(sourceType.GuildBoss, function(itemId, param) if not UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UIGuildBossMain) then CTL.GuildBoss.OpenMainView() end end) private.RegistItemSourceFunction(sourceType.RebelStrike, function(itemId, param) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIRebelStrikeMain) end) private.RegistItemSourceFunction(sourceType.RebelStrikeAim, function(itemId, param) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIRebelStrikeAim,{isPushView = true}) end) private.RegistItemSourceFunction(sourceType.ChapterGoal, function(itemId, param) if not UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UIChapterGoal) then UIManager.OpenView(Const_UI_Lua.UIEnum.UIChapterGoal) end end) private.RegistItemSourceFunction(sourceType.Guild, function(itemId, param) CTL.Guild.OpenGuildMain() end) private.RegistItemSourceFunction(sourceType.OfficialPosition, function(itemId, param) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIOfficialPositionBase) end) private.RegistItemSourceFunction(sourceType.HeroSelect, function(itemId, param) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIHeroSelectPanel,{heroID = itemId}) end) private.RegistItemSourceFunction(sourceType.Formation, function(itemId, param) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIHeroFormationPanel, nil) end) private.RegistItemSourceFunction(sourceType.MagicWeapon, function(itemId, param) if not MDL.Unlock.IsUnlock(MDL.Unlock.FunctionType.Weapon) then CTL.Tips.AddTipsMsg(Const_IDS["IDS_Bag_Tips_FunctionUnlock"]); return true end private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIDivineWeapon) end) private.RegistItemSourceFunction(sourceType.WarHorse, function(itemId, param) if not MDL.Unlock.IsUnlock(MDL.Unlock.FunctionType.WarHorse) then CTL.Tips.AddTipsMsg(Const_IDS["IDS_Bag_Tips_FunctionUnlock"]); return true end private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIWarHorse) end) -- 多人副本 local HorseBreakRelationFunc = function(itemId) if not MDL.Unlock.IsUnlock(MDL.Unlock.FunctionType.WarHorse) then CTL.Tips.AddTipsMsg(Const_IDS["IDS_Bag_Tips_FunctionUnlock"]); return true end CTL.WarHorse.OpenHorseUI(nil, itemId) end private.RegistItemSourceFunction(sourceType.HorseBreak, HorseBreakRelationFunc) private.RegistItemSourceFunction(sourceType.HorseRelation, HorseBreakRelationFunc) private.RegistItemSourceFunction(sourceType.HorseAppearance, function(itemId, param) if not MDL.Unlock.IsUnlock(MDL.Unlock.FunctionType.HorseAppearance) then CTL.Tips.AddTipsMsg(Const_IDS["IDS_Bag_Tips_FunctionUnlock"]); return true end CTL.WarHorse.OpenHorseUI(CTL.WarHorse.Horse_TabIndex.Appearance, nil, itemId) end) private.RegistItemSourceFunction(sourceType.Treasure, function(itemId, param) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UITreasureMainPanel) end) private.RegistItemSourceFunction(sourceType.TreasureBreak, function(itemId, param) CTL.Treasure.OpenTreasureUI(itemId) end) private.RegistItemSourceFunction(sourceType.Friend, function(itemId, param) CTL.Friend.OpenFriendPanel(CTL.Friend.MainIndex.Main) end) private.RegistItemSourceFunction(sourceType.DragonArteryMain, function(itemId, param) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIDragonArteryMain) end) private.RegistItemSourceFunction(sourceType.DragonArteryRankResult, function(itemId, param) MDL.DragonArtery.TryOpenDragonArteryCountryRankResult() end) private.RegistItemSourceFunction(sourceType.GuildParty, function(itemId, param) CTL.GuildParty.OpenGuildPartyActivityEntry() end) private.RegistItemSourceFunction(sourceType.MultiplayerDungeon, function(itemId, param) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIMultiplayerDungeonEntrance) end) private.RegistItemSourceFunction(sourceType.SyncSolo, function(itemId, param) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UISyncSoloMainPanel) end) private.RegistItemSourceFunction(sourceType.GuildWar, function(itemId, param) if not UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UIGuildWarMain) then CTL.GuildWar.OpenMainView() end end) private.RegistItemSourceFunction(sourceType.Nobility, function(itemId, param) if not UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UINobilityCommon) then CTL.Nobility.OpenMainView() end end) private.RegistItemSourceFunction(sourceType.GuildDonate, function(itemId, param) CTL.Guild.OpenGuildMain({ selectIndex = 4 }) if not UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UIGuildContribute) then UIManager.OpenView(Const_UI_Lua.UIEnum.UIGuildContribute) end end) private.RegistItemSourceFunction(sourceType.GuildAllies, function(itemId, param) UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UIGuildAlliesMapView) end) private.RegistItemSourceFunction(sourceType.DigTreasure, function(itemId, param) CTL.Tips.AddTipsMsg(Const_IDS.IDS_DigTreasure_ActivityTips) end) private.RegistItemSourceFunction(sourceType.BatchItem, function(itemId, param) CTL.ItemUse.OpenBatchItemFusionById(itemId) end) private.RegistItemSourceFunction(sourceType.GoldenHeroStory, function(itemId, param) -- 金将——秘闻 local levelType = DataSheetManager.GoldHeroActivityModeData:GetDataByHeroType(param.heroType).HeroLevelType if levelType == MDL.GoldenHeroMain.LevelType.Story then private.ExecuteOpenGoldenHeroView(Const_UI_Lua.UIEnum.UIGoldenHeroStory, param) else private.ExecuteOpenGoldenHeroView(Const_UI_Lua.UIEnum.UIGoldenHeroAnecdote, param) end end) private.RegistItemSourceFunction(sourceType.GoldenHeroBoss, function(itemId, param) -- 金将——协同讨伐 private.ExecuteOpenGoldenHeroView(Const_UI_Lua.UIEnum.UIGoldenHeroBossMain, param) end) private.RegistItemSourceFunction(sourceType.GoldenHeroStore, function(itemId, param) -- 金将——商店 private.ExecuteOpenGoldenHeroView(Const_UI_Lua.UIEnum.UIGoldenHeroStore, {activityId = param}) end) private.RegistItemSourceFunction(sourceType.GoldenHeroMain_GY, function(itemId, param) -- 金将——关羽 private.ExecuteGoldenHeroFuncByHeroType(MDL.GoldenHeroMain.HeroType.GY) end) private.RegistItemSourceFunction(sourceType.GoldenHeroMain_SSX, function(itemId, param) -- 金将——孙尚香 private.ExecuteGoldenHeroFuncByHeroType(MDL.GoldenHeroMain.HeroType.SSX) end) private.RegistItemSourceFunction(sourceType.GoldenHeroMain_DC, function(itemId, param) -- 金将——貂蝉 private.ExecuteGoldenHeroFuncByHeroType(MDL.GoldenHeroMain.HeroType.DC) end) private.RegistItemSourceFunction(sourceType.GoldenHeroMain_CC, function(itemId, param) -- 金将——曹操 private.ExecuteGoldenHeroFuncByHeroType(MDL.GoldenHeroMain.HeroType.CC) end) private.RegistItemSourceFunction(sourceType.GoldenHeroMain_SJ, function(itemId, param) -- 金将——孙坚 private.ExecuteGoldenHeroFuncByHeroType(MDL.GoldenHeroMain.HeroType.SJ) end) private.RegistItemSourceFunction(sourceType.GoldenHeroMain_ZL, function(itemId, param) -- 金将——张辽 private.ExecuteGoldenHeroFuncByHeroType(MDL.GoldenHeroMain.HeroType.ZL) end) private.RegistItemSourceFunction(sourceType.GoldenHeroMain_TSC, function(itemId, param) -- 金将——太史慈 private.ExecuteGoldenHeroFuncByHeroType(MDL.GoldenHeroMain.HeroType.TSC) end) private.RegistItemSourceFunction(sourceType.GoldenHeroMain_HYY, function(itemId, param) -- 金将——黄月英 private.ExecuteGoldenHeroFuncByHeroType(MDL.GoldenHeroMain.HeroType.HYY) end) private.RegistItemSourceFunction(sourceType.GoldenHeroMain_ZJ, function(itemId, param) -- 金将——甄姬 private.ExecuteGoldenHeroFuncByHeroType(MDL.GoldenHeroMain.HeroType.ZJ) end) private.RegistItemSourceFunction(sourceType.GoldenHeroMain_GN, function(itemId, param) -- 金将——甘宁 private.ExecuteGoldenHeroFuncByHeroType(MDL.GoldenHeroMain.HeroType.GN) end) private.RegistItemSourceFunction(sourceType.GoldenHeroMain_JX, function(itemId, param) -- 金将——贾诩 private.ExecuteGoldenHeroFuncByHeroType(MDL.GoldenHeroMain.HeroType.JX) end) private.RegistItemSourceFunction(sourceType.GoldenHeroMain_LM, function(itemId, param) -- 金将——吕蒙 private.ExecuteGoldenHeroFuncByHeroType(MDL.GoldenHeroMain.HeroType.LM) end) private.RegistItemSourceFunction(sourceType.SuperGoldStory, function(itemId, param) -- 彩金将——关卡 CTL.SuperGoldStory.OpenStoryMain(param.activityId, param.heroType) end) private.RegistItemSourceFunction(sourceType.SuperGoldBoss, function(itemId, param) -- 彩金将——英雄试炼 UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UISuperGoldBossMain, {heroType = param.heroType, activityId = param.activityId}) end) private.RegistItemSourceFunction(sourceType.SuperGoldLottery, function(itemId, param) -- 彩金将——司仪密藏 UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UISuperGoldLotteryMain, {heroType = param.heroType, activityId = param.activityId}) end) private.RegistItemSourceFunction(sourceType.SuperGoldHonorOrder, function(itemId, param) -- 彩金将——金箱玉匮 local superGoldType = MDL.OperationActivity.ActivityType.SuperGold local superGoldTypeData = MDL.OperationActivity.HotControlInfo:GetDataByActivityType_ActivityID(superGoldType) local superGoldInfoList = MDL.OperationActivity.GetOperationActivityInfo(superGoldType) if superGoldTypeData and superGoldInfoList then for i, v in pairs(superGoldTypeData) do if CTL.OperationActivity.IsOperationActivityUnlock(v) then local heroType = MDL.SuperGoldMain.GetHeroTypeByActivityId(v.ActivityID) UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UISuperGoldHonorOrderMain, {activityId = v.ActivityID, heroType = heroType}) return end end end end) private.RegistItemSourceFunction(sourceType.SuperGoldMain_ZhouYu, function(itemId, param) -- 彩金周瑜 private.ExecuteSuperGoldFuncByHeroType(MDL.SuperGoldMain.HeroType.ZhouYu) end) private.RegistItemSourceFunction(sourceType.SuperGoldMain_ZhuGeLiang, function(itemId, param) -- 彩金——诸葛亮 private.ExecuteSuperGoldFuncByHeroType(MDL.SuperGoldMain.HeroType.ZhuGeLiang) end) private.RegistItemSourceFunction(sourceType.SuperGoldMain_DianWei, function(itemId, param) -- 彩金——典韦 private.ExecuteSuperGoldFuncByHeroType(MDL.SuperGoldMain.HeroType.DianWei) end) private.RegistItemSourceFunction(sourceType.SuperGoldMain_MaChao, function(itemId, param) -- 彩金——马超 private.ExecuteSuperGoldFuncByHeroType(MDL.SuperGoldMain.HeroType.MaChao) end) private.RegistItemSourceFunction(sourceType.SuperGoldMain_ZuoCi, function(itemId, param) -- 彩金——左慈 private.ExecuteSuperGoldFuncByHeroType(MDL.SuperGoldMain.HeroType.ZuoCi) end) private.RegistItemSourceFunction(sourceType.Mansion, function(itemId, param) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIIllustratedMainPanel) end) private.RegistItemSourceFunction(sourceType.MonthCard, function(itemId, param) private.OpenViewInPayMallByType(sourceType.MonthCard) end) -- 月卡 private.RegistItemSourceFunction(sourceType.DailyGift, function(itemId, param) private.OpenViewInPayMallByType(sourceType.DailyGift) end) -- 每日礼包 private.RegistItemSourceFunction(sourceType.LevelFund, function(itemId, param) private.OpenViewInPayMallByType(sourceType.LevelFund) end) -- 等级礼包 private.RegistItemSourceFunction(sourceType.OfficialFund, function(itemId, param) private.OpenViewInPayMallByType(sourceType.OfficialFund) end) -- 官职基金 private.RegistItemSourceFunction(sourceType.DirectGift, function(itemId, param) private.OpenViewInPayMallByType(sourceType.DirectGift) end) -- 直购礼包 private.RegistItemSourceFunction(sourceType.TreasureSoulCrystal, function(itemId, param) private.OpenViewInPayMallByType(sourceType.TreasureSoulCrystal) end) -- 赋灵商店 private.RegistItemSourceFunction(sourceType.Recharge, function(itemId, param) -- 充值 if UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UIPayMallBasePanel) then UIManager.CloseView(Const_UI_Lua.UIEnum.UIPayMallBasePanel) UIManager.RecoverTopView() end private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIPayMallBasePanel, { tabId = CTL.PayMall.ShopTabType.Recharge }) end) private.RegistItemSourceFunction(sourceType.TotalTopUp, function(itemId, param) -- 累充 if UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UIPayMallBasePanel) then UIManager.CloseView(Const_UI_Lua.UIEnum.UIPayMallBasePanel) UIManager.RecoverTopView() end private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIPayMallBasePanel, { tabId = CTL.PayMall.ShopTabType.TotalTopUp }) end) private.RegistItemSourceFunction(sourceType.PayMall, function(itemId, param) -- 商城 if UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UIPayMallBasePanel) then --先用关闭进行处理,后期进行优化,使用dispatch的方式 UIManager.CloseView(Const_UI_Lua.UIEnum.UIPayMallBasePanel) UIManager.RecoverTopView() end --商城页签可能没解锁,加个判断 if CTL.PayMall.IsShowShopTab() == false then CTL.Tips.AddTipsMsg(Const_IDS["IDS_ERRORCODE_3013_InfoCode_FunctionLock"]) return end if itemId then --这里的itemId可缺省,做个判空 local tabIndex = MDL.PayMall.GetTabIndexAndItemIndex(itemId) if tabIndex == -1 then local _, itemData = DataSheetManager.ItemData:TryGetDataByID(itemId) if itemData then CTL.Tips.AddTipsMsg(Const_IDS.IDS_Store_GoodsUnlock, UIUtils.GetLocalizedTxt(Const_IDS[itemData.Name])) end return end end private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIPayMallBasePanel, itemId and {tabId = CTL.PayMall.ShopTabType.Shop , itemId = itemId} or {tabId = CTL.PayMall.ShopTabType.Shop}) end) private.RegistItemSourceFunction(sourceType.FirstCharge, function(itemId, param) -- 首充 if MDL.FirstCharge.HasEntry() then if MDL.FirstCharge.IsNeedShowAlipay() then if not UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UIFirstChargeAlipayPanel) then UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UIFirstChargeAlipayPanel, { isOpenAndPush = true }) end else if GameAppInfo.IsVietnamPackage() then if not UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UIFirstChargePanelVN) then UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UIFirstChargePanelVN, { isOpenAndPush = true }) end elseif GameAppInfo.IsChinesePackage() then if not UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UIFirstChargePanelNew) then UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UIFirstChargePanelNew, { isOpenAndPush = true }) end else if not UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UIFirstChargePanel) then UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UIFirstChargePanel, { isOpenAndPush = true }) end end end else CTL.Tips.AddTipsMsg(Const_IDS["IDS_GMS_ActivityClosed"]) -- 活动暂未开始 end end) private.RegistItemSourceFunction(sourceType.Auction, function(itemId, param) if not UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UIGuildAuctionBase) then if UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UIChannelChatMain) then UIManager.CloseView(Const_UI_Lua.UIEnum.UIChannelChatMain) end UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UIGuildAuctionBase) end end) private.RegistItemSourceFunction(sourceType.PushGift, function(itemId, param) --定向礼包 local giftInfo = MDL.PushGift.GetHighestOrderInfo() if giftInfo then UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.OperationActivity.UIDirectionalGiftBase, {giftInfo = giftInfo}) else CTL.Tips.AddTipsMsg(Const_IDS["IDS_GMS_ActivityClosed"]) -- 活动暂未开始 end end) private.RegistItemSourceFunction(sourceType.HeroBreak, function(itemId, param) MDL.HeroSelect.curSelectHeroID = MDL.Formation.GetSlotHeroIdByIndex(1) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIHeroShowPanel, { subViewName = MDL.HeroSelect.ToggleViewNameList.Break }) end) private.RegistItemSourceFunction(sourceType.HeroAdvanced, function(itemId, param) MDL.HeroSelect.curSelectHeroID = MDL.Formation.GetSlotHeroIdByIndex(1) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIHeroShowPanel, { subViewName = MDL.HeroSelect.ToggleViewNameList.Advanced }) end) private.RegistItemSourceFunction(sourceType.HeroLevelUp, function(itemId, param) MDL.HeroSelect.curSelectHeroID = MDL.Formation.GetSlotHeroIdByIndex(1) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIHeroShowPanel, { subViewName = MDL.HeroSelect.ToggleViewNameList.LevelUp }) end) private.RegistItemSourceFunction(sourceType.HeroRelation, function(itemId, param) MDL.HeroSelect.curSelectHeroID = MDL.Formation.GetSlotHeroIdByIndex(1) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIHeroShowPanel, { subViewName = MDL.HeroSelect.ToggleViewNameList.Relation }) end) private.RegistItemSourceFunction(sourceType.HeroAppearance, function(itemId, param) local heroID if itemId then heroID = DataSheetManager.HeroAppearance:GetDataByID(itemId).HeroID end MDL.HeroSelect.curSelectHeroID = heroID or MDL.Formation.GetSlotHeroIdByIndex(1) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIHeroShowPanel, { subViewName = MDL.HeroSelect.ToggleViewNameList.Appearance, appearanceType = LuaConst.AppearanceType.Fashion, fashionID = itemId}) end) private.RegistItemSourceFunction(sourceType.HeroLightEffect, function(itemId, param) local heroID if itemId then local heroIds = DataSheetManager.LightEffect:GetDataByID(itemId).BelongTo if heroIds then heroID = heroIds[1] end end MDL.HeroSelect.curSelectHeroID = heroID or MDL.Formation.GetSlotHeroIdByIndex(1) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIHeroShowPanel, { subViewName = MDL.HeroSelect.ToggleViewNameList.Appearance, appearanceType = LuaConst.AppearanceType.LightEffect, lightEffectID = itemId}) end) private.RegistItemSourceFunction(sourceType.AssistanceFight, function(itemId, param) CTL.AssistanceFight.OpenAssistancePanel(1) end) private.RegistItemSourceFunction(sourceType.HeroLibrary, function(itemId, param) CTL.HeroLibrary.OpenMainPanel() end) private.RegistItemSourceFunction(sourceType.MagicWeaponBreak, function(itemId, param) if not MDL.Unlock.IsUnlock(MDL.Unlock.FunctionType.Weapon) then CTL.Tips.AddTipsMsg(Const_IDS["IDS_Bag_Tips_FunctionUnlock"]); return true end local data = DataSheetManager.MagicWeaponData:GetDataByMagicWeaponID(MDL.Formation.GetSlotHeroIdByIndex(1)) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIDivineWeaponBasePanel, { data = data }) end) private.RegistItemSourceFunction(sourceType.MagicWeaponFashion, function(itemId, param) local heroID if itemId then heroID = DataSheetManager.WeaponAppearance:GetDataByID(itemId).HeroID end local data = DataSheetManager.MagicWeaponData:GetDataByMagicWeaponID(heroID or MDL.Formation.GetSlotHeroIdByIndex(1)) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIDivineWeaponBasePanel, { data = data, selectIndex = 1,weaponAppearanceId = itemId}) end) private.RegistItemSourceFunction(sourceType.EquipBase, function(itemId, param) CTL.Equipment.OpenDetailByDetailType(MDL.Equipment.DetailType.Base) end) private.RegistItemSourceFunction(sourceType.EquipRefine, function(itemId, param) CTL.Equipment.OpenDetailByDetailType(MDL.Equipment.DetailType.Base) end) private.RegistItemSourceFunction(sourceType.EquipStrength, function(itemId, param) CTL.Equipment.OpenDetailByDetailType(MDL.Equipment.DetailType.Strengthen) end) private.RegistItemSourceFunction(sourceType.EquipGem, function(itemId, param) CTL.Equipment.OpenDetailByDetailType(MDL.Equipment.DetailType.Compose) end) private.RegistItemSourceFunction(sourceType.EquipStar, function(itemId, param) CTL.Equipment.OpenDetailByDetailType(MDL.Equipment.DetailType.Star) end) private.RegistItemSourceFunction(sourceType.Title, function(itemId, param) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UICharacter, { subIndex = 2 }) end) private.RegistItemSourceFunction(sourceType.GuildCultivation, function(itemId, param) CTL.GuildCultivation.OpenGuildCultivation() end) private.RegistItemSourceFunction(sourceType.Resonance, function(itemId, param) UIManager.OpenView(Const_UI_Lua.UIEnum.UIMedal) end) private.RegistItemSourceFunction(sourceType.CampArray, function(itemId, param) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIArray) UIManager.OpenView(Const_UI_Lua.UIEnum.UICommonTipsPanel) end) private.RegistItemSourceFunction(sourceType.FriendApply, function(itemId, param) CTL.Friend.OpenApplyPanel() end) private.RegistItemSourceFunction(sourceType.GuildInvitedIn, function(itemId, param) UIManager.OpenView(Const_UI_Lua.UIEnum.UIGuildInvitedInPanel) end) private.RegistItemSourceFunction(sourceType.FullEnergy, function(itemId, param) UIManager.OpenView(Const_UI_Lua.UIEnum.UIEnergyFullPanel) end) private.RegistItemSourceFunction(sourceType.Mail, function(itemId, param) CTL.Mail.OpenUIMailPanel() end) private.RegistItemSourceFunction(sourceType.FunctionClimbTower, function(itemId, param) CTL.ClimbTower.OpenMainPanel() CTL.ClimbTower.OpenEarningsInfo() end) private.RegistItemSourceFunction(sourceType.TeamApply, function(itemId, param) UIManager.OpenView(Const_UI_Lua.UIEnum.UITeamApplyPanel) end) private.RegistItemSourceFunction(sourceType.TeamInvite, function(itemId, param) UIManager.OpenView(Const_UI_Lua.UIEnum.UITeamInvitedPanel) end) private.RegistItemSourceFunction(sourceType.PresonChat, function(itemId, param) if MDL.Friend.GetUnreadMsgNumByType(MDL.Friend.ListType.Recent) > 0 then CTL.Friend.OpenFriendPanel(CTL.Friend.MainIndex.Main) elseif CTL.SpecialTeam.GetSumGroupChatRedCount() > 0 then CTL.SpecialTeam.OpenMyTeamChat() else CTL.Friend.OpenFriendPanel(CTL.Friend.MainIndex.Main) end end) private.RegistItemSourceFunction(sourceType.HonorOrder, function(itemId, param) -- 战令 if CTL.HonorOrder.GetHonorOrderActive() then CTL.HonorOrder.OpenHonorOrderBasePanel() else CTL.Tips.AddTipsMsg(Const_IDS["IDS_GMS_ActivityClosed"]) -- 活动暂未开始 end end) private.RegistItemSourceFunction(sourceType.DailyActivation, function(itemId, param) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIActivitiesMain) end) private.RegistItemSourceFunction(sourceType.Hegemony, function(itemId, param) -- 霸业之始 local activityType = MDL.OperationActivity.ActivityType.Hegemony if CTL.OperationActivity.IsOperationActivityTypeUnlock(activityType) and CTL.OperationActivity.IsOperationActivityTypeOpen(activityType) then UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.OperationActivity.UIHegemonyActivity) else CTL.Tips.AddTipsMsg(Const_IDS["IDS_GMS_ActivityClosed"]) -- 活动暂未开始 end end) private.RegistItemSourceFunction(sourceType.Achievement, function(itemId, param) -- 成就系统 UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UIAchievementBase) end) private.RegistItemSourceFunction(sourceType.Monopoly, function(itemId, param) -- 大富翁 CTL.Monopoly.HandleItemSourceJump(itemId) end) private.RegistItemSourceFunction(sourceType.ReservedGift, function(itemId, param) -- 预约豪礼 UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UIWelfareBasePanel, {welfareId = CTL.Welfare.WelfareType.ReservedGift}) end) private.RegistItemSourceFunction(sourceType.GoldenHeroStore, function(itemId, param) UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UIGoldenHeroStore, {activityId = param}) end) private.RegistItemSourceFunction(sourceType.MagicWeaponForge, function(itemId, param) if not MDL.Unlock.IsUnlock(MDL.Unlock.FunctionType.DivineWeaponForge) then CTL.Tips.AddTipsMsg(Const_IDS.IDS_Foundry_NotOpen) return end local weaponId = 0 for __, weaponData in ipairs(MDL.DivineWeapon.GetAllData()) do local heroInfo = MDL.HeroSelect.GetHeroInfo(weaponData.MagicWeaponID) if heroInfo and heroInfo.isMagicWeaponActive then weaponId = weaponData.MagicWeaponID break end end if weaponId > 0 then local weaponCfgData = DataSheetManager.MagicWeaponData:GetDataByMagicWeaponID(weaponId); UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UIDivineWeaponBasePanel,{data = weaponCfgData, toggleType = UTL.Toggle.ToggleType.Forge}) else UIManager.OpenView(Const_UI_Lua.UIEnum.UIDivineWeapon) end end) private.RegistItemSourceFunction(sourceType.DrawStrawsMain, function(itemId, param) UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UIWelfareBasePanel, {welfareId = CTL.Welfare.WelfareType.DailyDraw}) end) private.RegistItemSourceFunction(sourceType.DrawStrawsTask, function(itemId, param) UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UIWelfareBasePanel, {welfareId = CTL.Welfare.WelfareType.DailyDraw}) CTL.DrawStraws.HUDJumpFunction() end) private.RegistItemSourceFunction(sourceType.CountryWorldBoss, function(itemId, param) -- 战区世界boss CTL.CountryWorldBoss.OpenCountryWorldBossPanel() end) private.RegistItemSourceFunction(sourceType.CommandTheWorldMain, function(itemId, param) -- 号令天下 主界面 CTL.CommandTheWorld.OpenMainPanel() end) private.RegistItemSourceFunction(sourceType.NewYearExchange, function(itemId, param) -- 新年活动——交换 CTL.NewYear.OpenView(param.activityId, CTL.NewYear.ViewName.UINewYearExchange, {activityId = param.activityId}) end) private.RegistItemSourceFunction(sourceType.NewYearPray, function(itemId, param) -- 新年活动——祈福 CTL.NewYear.OpenView(param.activityId, CTL.NewYear.ViewName.UINewYearPray, {activityId = param.activityId, activityType = param.activityType}) end) private.RegistItemSourceFunction(sourceType.GuildMine, function(itemId, param) CTL.GuildMine.OpenGuildMineMainView() end) private.RegistItemSourceFunction(sourceType.GuildMine_Reward, function(itemId, param) if MDL.Guild.IsHasGuild() and CTL.Activities.IsActivityInOpeningTime(LuaConst.ActivityType.GuildMine) then CTL.GuildMine.OpenGuildMineMainView() else UIManager.OpenView(Const_UI_Lua.UIEnum.UIGuildMineReward) end end) private.RegistItemSourceFunction(sourceType.GuildMine_Help, function(itemId, param) if MDL.Guild.IsHasGuild() and CTL.Activities.IsActivityInOpeningTime(LuaConst.ActivityType.GuildMine) then CTL.GuildMine.OpenGuildMineMainView() end UIManager.OpenView(Const_UI_Lua.UIEnum.UIGuildMineHelpPopUp) end) private.RegistItemSourceFunction(sourceType.DemonGod, function(itemId, param) CTL.DemonGod.OpenDemonGodView() end) private.RegistItemSourceFunction(sourceType.GuildEscortMain, function(itemId, param) CTL.GuildEscort.OpenMainPanel() end) private.RegistItemSourceFunction(sourceType.GuildEscortReport, function(itemId, param) UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UIGuildEscortReport) end) private.RegistItemSourceFunction(sourceType.FightThrone, function(itemId, param) UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UIFightThroneMain) end) private.RegistItemSourceFunction(sourceType.Rank_GuildEscort, function(itemId, param) CTL.Rank.OpenRankPanelByType(MDL.Rank.RankType.GuildEscort) end) private.RegistItemSourceFunction(sourceType.Stratagem, function(itemId, param) UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UIStratagemEquip) end) private.RegistItemSourceFunction(sourceType.StratagemDetail, function(itemId, param) local data = DataSheetManager.StratagemData:GetDataByID(itemId) CTL.Stratagem.OpenInfoView(data) end) private.RegistItemSourceFunction(sourceType.GuildTarget, function(itemId, param) CTL.Guild.OpenGuildMain({ selectIndex = 2 }) end) private.RegistItemSourceFunction(sourceType.OpenRedPacket, function(itemId, param) MDL.RedPacket.ReceiveGuildRedPacketRequest() -- 领取红包 end) private.RegistItemSourceFunction(sourceType.GoldHeroReprint, function(itemId, param) -- 日服金将返场抽卡活动 UIManager.OpenView(Const_UI_Lua.UIEnum.UIGoldHeroReprint) end) private.RegistItemSourceFunction(sourceType.HeroMatch1v1, function(itemId, param) -- 天地群雄 CTL.HeroMatch1v1.OpenHeroMatch1v1MainView() end) private.RegistItemSourceFunction(sourceType.HeroMatch3v3, function(itemId, param) -- 天地群雄3v3 CTL.HeroMatch3v3.OpenHeroMatch3v3MainView() end) private.RegistItemSourceFunction(sourceType.SpecialTeamApply, function(itemId, param) -- 战团申请 CTL.SpecialTeam.OpenTeamApplyPopUp() end) private.RegistItemSourceFunction(sourceType.SpecialTeamInvite, function(itemId, param) -- 战团邀请 CTL.SpecialTeam.OpenTeamInvited() end) private.RegistItemSourceFunction(sourceType.FairSoloTournament, function(itemId, param) -- 天下会武 CTL.FairSoloTournament.OpenMain() end) private.RegistItemSourceFunction(sourceType.FairSoloTournament_GroupRecommend, function(itemId, param) CTL.FairSoloTournament.TryOpenGroupRecommend() end) private.RegistItemSourceFunction(sourceType.FairSoloTournament_GroupRank, function(itemId, param) CTL.FairSoloTournament.TryOpenGroupRank() end) private.RegistItemSourceFunction(sourceType.SceneQuiz, function(itemId, param) -- 一站到底 local info = MDL.OperationActivity.GetOperationActivityInfo(MDL.OperationActivity.ActivityType.NewYear) if info then for activityId, v in pairs(info) do if CTL.OperationActivity.IsOperationActivityOpen(v) then MDL.SceneQuiz.CurActivityID = activityId CTL.SceneQuiz.OpenMainPanel(activityId) return end end end end) private.RegistItemSourceFunction(sourceType.CountryWantedTask, function(itemId, param) -- 国战悬赏任务 CTL.CountryWantedTask.GoToNpc() end) private.RegistItemSourceFunction(sourceType.HeroFund, function(itemId, param) -- 名将之路 private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIPayMallBasePanel, {tabId = CTL.PayMall.ShopTabType.PreferentialOrder, childTabId = CTL.PayMall.ShopChildTabType.HeroFund}) end) private.RegistItemSourceFunction(sourceType.HorseFund, function(itemId, param) -- 玉络金鞍(坐骑之路) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIPayMallBasePanel, {tabId = CTL.PayMall.ShopTabType.PreferentialOrder, childTabId = CTL.PayMall.ShopChildTabType.HorseFund}) end) private.RegistItemSourceFunction(sourceType.TreasureFund, function(itemId, param) -- 物华天宝(宝物之路) private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIPayMallBasePanel, {tabId = CTL.PayMall.ShopTabType.PreferentialOrder, childTabId = CTL.PayMall.ShopChildTabType.TreasureFund}) end) private.RegistItemSourceFunction(sourceType.GoldIngotFund, function(itemId, param) -- 元宝战令 private.OpenAndPushAllView(Const_UI_Lua.UIEnum.UIPayMallBasePanel, {tabId = CTL.PayMall.ShopTabType.PreferentialOrder, childTabId = CTL.PayMall.ShopChildTabType.GoldIngotFund}) end) private.RegistItemSourceFunction(sourceType.Country, function(itemId, param) if CTL.Country.IsUnlockCountry() and MDL.Guild.IsHasGuild() then CTL.Country.ClickCountryBtn() else CTL.Tips.AddTipsMsg(Const_IDS.IDS_Formation_RelationShip_Closed) return false end end) private.RegistItemSourceFunction(sourceType.SetAutoOpenRewardBoxWater, function(itemId, param) MDL.TeamDungeon.CheckAutoOpenRewardBox(LuaConst.BattleSettingEnum.AutoOpenRewardBoxWater) end) private.RegistItemSourceFunction(sourceType.SetAutoOpenRewardBoxDirt, function(itemId, param) MDL.TeamDungeon.CheckAutoOpenRewardBox(LuaConst.BattleSettingEnum.AutoOpenRewardBoxDirt) end) private.RegistItemSourceFunction(sourceType.SetAutoOpenRewardBoxWood, function(itemId, param) MDL.TeamDungeon.CheckAutoOpenRewardBox(LuaConst.BattleSettingEnum.AutoOpenRewardBoxWood) end) private.RegistItemSourceFunction(sourceType.HeroStrenthen, function(itemId, param) if not MDL.Unlock.IsUnlock(MDL.Unlock.FunctionType.HeroStrenthen) then CTL.Tips.AddTipsMsg(Const_IDS["IDS_Bag_Tips_FunctionUnlock"]) return false else CTL.HeroStrenthen.JumpToHeroStrenthen() end end) private.RegistItemSourceFunction(sourceType.CountrySalaryBase, function(itemId, param) if MDL.Country.IsHasCountry() then UIManager.OpenView(Const_UI_Lua.UIEnum.UICountrySalaryBase) else CTL.Tips.AddTipsMsg(Const_IDS.IDS_Country_NotJoinCountry) return false end end) private.RegistItemSourceFunction(sourceType.RecycleFragment, function(itemId, param) CTL.Reborn.OpenRecycleFragmentView() end) private.RegistItemSourceFunction(sourceType.CountryNightBossMain, function(itemId, param) if not UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UICountryNightBossMain) then UIManager.OpenView(Const_UI_Lua.UIEnum.UICountryNightBossMain) end UIManager.CloseView(Const_UI_Lua.UIEnum.UIActivitiesRemind) end) private.RegistItemSourceFunction(sourceType.Storm, function(itemId, param) UIManager.OpenView(Const_UI_Lua.UIEnum.UIStormEntrance) end) private.RegistItemSourceFunction(sourceType.ThreeTeamFightMain, function(itemId, param) CTL.ThreeTeamFight.OpenMain(true) end) private.RegistItemSourceFunction(sourceType.GVGFight, function(itemId, param) local isUnlock, condition = CTL.Activities.IsOpen(LuaConst.ActivityType.GVGFight) if isUnlock then CTL.GVGFight.OpenGVGFightMain() else CTL.Tips.AddTipsMsg(condition) return false end end) private.RegistItemSourceFunction(sourceType.GuildSalary, function(itemId, param) UIManager.OpenView(Const_UI_Lua.UIEnum.UIGuildSalary) end) private.RegistItemSourceFunction(sourceType.HonorSinget, function(itemId, param) UIManager.OpenView(Const_UI_Lua.UIEnum.UIHonorSignetMain) end) private.RegistItemSourceFunction(sourceType.HorseSoul, function(itemId, param) CTL.HorseSoul.GotoHorseSoul() end) private.RegistItemSourceFunction(sourceType.HorseEquip, function(itemId, param) CTL.HorseEquip.GotoHorseEquip() end) private.RegistItemSourceFunction(sourceType.GodBeast, function(itemId, param) UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UIGodBeastBasePanel,{id = itemId}) end) private.RegistItemSourceFunction(sourceType.GodBeastParadise, function(itemId, param) UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UIGodBeastEquip) end) private.RegistItemSourceFunction(sourceType.ChangAnSiege, function(itemId, param) CTL.ChangAnSiege.OpenMainView() end) private.RegistItemSourceFunction(sourceType.PetMain, function(itemId, param) UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UIPetBasePanel) end) private.RegistItemSourceFunction(sourceType.PetBreed, function(itemId, param) CTL.Pet.EnterPetBreedRoom() end) private.RegistItemSourceFunction(sourceType.PetBreedApply, function(itemId, param) CTL.Pet.OpenBreadApply() end) private.RegistItemSourceFunction(sourceType.PetCatch, function(itemId, param) CTL.Pet.GoToPet(itemId) end) private.RegistItemSourceFunction(sourceType.PetChoose, function(itemId, param) CTL.Pet.ChoosePet() end) private.RegistItemSourceFunction(sourceType.PetIllustratedHandbook, function(itemId, param) CTL.Pet.OpenPetIllustratedHandbookUI(itemId) end) private.RegistItemSourceFunction(sourceType.ClassicBattle, function(itemId, param) UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UIActivitiesTeamDungeonEntry) end) private.RegistItemSourceFunction(sourceType.Confrontation, function(itemId, param) UIManager.OpenView(Const_UI_Lua.UIEnum.UIBossMainPanel) end) private.RegistItemSourceFunction(sourceType.PetNormalRelease, function(itemId, param) CTL.Tips.AddTipsMsg(Const_IDS["IDS_Pet_ReturnTips"]) end) private.RegistItemSourceFunction(sourceType.PetVariationRelease, function(itemId, param) CTL.Tips.AddTipsMsg(Const_IDS["IDS_Pet_ReturnTips"]) end) private.RegistItemSourceFunction(sourceType.TurntableMain, function(itemId, param) CTL.Turntable.OpenMainPanel() end) private.RegistItemSourceFunction(sourceType.SlgGvE, function(itemId, param) local mapId = MDL.SlgGvE.GetAttackingCityOrBossInfo().landId if param and mapId then local str = string.FormatByIdsId(Const_IDS.IDS_SlgGve_Main_Hint_14, CTL.SlgGvE.GetGridQualityColorName(mapId)) UTL.MessageBox.ShowOKCancelBox(nil, str, function() CTL.SlgGvE.OpenSlgGvEMain(mapId) end) else CTL.SlgGvE.OpenSlgGvEMain() end end) private.RegistItemSourceFunction(sourceType.ItemTips, function(itemId, param) UTL.ItemTips.ShowCommonTipsById(itemId) end) private.RegistItemSourceFunction(sourceType.TeamFairChampionship, function(itemId, param) CTL.TeamFairChampionship.OpenMainPanel() end) private.RegistItemSourceFunction(sourceType.TeamFairChampionshipRank, function(itemId, param) CTL.TeamFairChampionship.OpenActivityTaskView(0) end) private.RegistItemSourceFunction(sourceType.TeamFairChampionshipGuess, function(itemId, param) CTL.TeamFairChampionship.OpenActivityTaskView(1) end) private.RegistItemSourceFunction(sourceType.soloFightInfoReminder, function(itemId, param) UIManager.OpenView(Const_UI_Lua.UIEnum.UISoloFightDropPopUp) end) private.RegistItemSourceFunction(sourceType.threeTeamFightInfoReminder, function(itemId, param) UIManager.OpenView(Const_UI_Lua.UIEnum.UIThreeTeamDropPopUp) end) private.RegistItemSourceFunction(sourceType.SubjectMonth, function(itemId, param) CTL.SubjectMonth.OpenMainView() end) end ---跳转途径的通用执行方法 ---sourceId为表ItemSource中配置的ID,用来标识跳转到哪个功能页面 ---最开始服务于物品获取途径跳转,也多数用于这个,所以传入物品ID参数,用于标识定位(例如商店) ---由于其他功能的一些跳转也可以复用这些代码,为了方便以及增加功能性,添加参数param用于当做参数使用或传入 function ItemSources_Controller.ExecuteSourceFunctionById(sourceId, itemId, param) if not BattleDataGetter.IsNoBattleLevel() then --判断是否在主城 CTL.Tips.AddTipsMsg(Const_IDS.IDS_Chat_NoTurn) return end if private.IsBlockByView() then --有一些界面打开时也需要屏蔽跳转功能 CTL.Tips.AddTipsMsg(Const_IDS.IDS_Common_CannotJump) return end local sourcesData = DataSheetManager.ItemSource:GetDataByID(sourceId) local unlockId = sourcesData.UnlockID if unlockId > 0 and not MDL.Unlock.IsUnlock(unlockId) then --判断要跳转的功能是否解锁 CTL.Tips.AddTipsMsg(Const_IDS.IDS_Formation_RelationShip_Closed) return end if sourceId == MDL.ItemSources.SourceType.None then CTL.Tips.AddTipsMsg(Const_IDS.IDS_7DayActivity_Hint_5) return end local func = private.itemSourceFunction[sourceId] if func then func(itemId, param) end return true end function private.OpenAndPushAllView(viewName, context, prefabPath) if not UIManager.IsViewOpened(viewName) then UIManager.OpenAndPushAll(viewName, context, prefabPath) end end --商城的界面 function private.OpenViewInPayMallByType(sourceId) if UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UIPayMallBasePanel) then UIManager.CloseView(Const_UI_Lua.UIEnum.UIPayMallBasePanel) UIManager.RecoverTopView() end local payMallId local tabId = CTL.PayMall.ShopTabType.PreferentialOrder if sourceId == MDL.ItemSources.SourceType.MonthCard then payMallId = CTL.PayMall.ShopChildTabType.MonthCard elseif sourceId == MDL.ItemSources.SourceType.DailyGift then payMallId = CTL.PayMall.ShopChildTabType.DailyGift elseif sourceId == MDL.ItemSources.SourceType.LevelFund then payMallId = CTL.GrowthFund.GetCurrentGrowthFundId() elseif sourceId == MDL.ItemSources.SourceType.OfficialFund then payMallId = CTL.PayMall.ShopChildTabType.OfficialPositionFund elseif sourceId == MDL.ItemSources.SourceType.TreasureSoulCrystal then -- 赋灵商店 tabId = CTL.PayMall.ShopTabType.Shop payMallId = CTL.PayMall.ShopChildTabType.TreasureSoulCrystal elseif sourceId == MDL.ItemSources.SourceType.DirectGift then -- 直购礼包 for i = CTL.PayMall.ShopChildTabType.DirectGift1, CTL.PayMall.GetLastDirectGiftTabType() do if CTL.DirectGift.IsShowNormalDirectGiftTab(i) then tabId = CTL.PayMall.ShopTabType.DirectGiftOrder payMallId = i break end end end if not payMallId then logging.error(LTAG.ERROR, "来源途径跳转功能ID:", sourceId, "调用错误,此ID对应界面没有在商城界面中,请程序和策划检查!!!") return end if not UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UIPayMallBasePanel) then UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UIPayMallBasePanel, {tabId = tabId, childTabId = payMallId}) else EventSystem.Dispatch(EventID.UI_PayMall_OpenSpecificView, {tabId = tabId, childTabId = payMallId}) end end function private.ExecuteOpenGoldenHeroView(ui, context) private.ExecuteOAFunc(private.OpenAndPushAllView, MDL.OperationActivity.ActivityType.GoldenHero, MDL.Unlock.FunctionType.GoldHeroActivity, ui, context) end function private.ExecuteGoldenHeroFuncByHeroType(heroType) private.ExecuteOAFunc(CTL.GoldenHeroMain.OpenMainView, MDL.OperationActivity.ActivityType.GoldenHero, MDL.Unlock.FunctionType.GoldHeroActivity, MDL.GoldenHeroMain.GetActivityIDByHeroType(heroType)) end function private.ExecuteOpenSuperGoldHeroView(ui, context) private.ExecuteOAFunc(private.OpenAndPushAllView, MDL.OperationActivity.ActivityType.SuperGold, MDL.Unlock.FunctionType.SuperGoldActivity, ui, context) end function private.ExecuteSuperGoldFuncByHeroType(heroType) private.ExecuteOAFunc(CTL.SuperGoldMain.OpenMainView, MDL.OperationActivity.ActivityType.SuperGold, MDL.Unlock.FunctionType.SuperGoldActivity, MDL.SuperGoldMain.GetActivityIDByHeroType(heroType)) end function private.ExecuteOAFunc(func, activityType, funcId, ...) if CTL.OperationActivity.IsOperationActivityTypeUnlock(activityType) and CTL.OperationActivity.IsOperationActivityTypeOpen(activityType) and (not funcId or MDL.Unlock.IsUnlock(funcId)) then func(...) else CTL.Tips.AddTipsMsg(Const_IDS["IDS_GMS_ActivityClosed"]) -- 活动暂未开始 end end return ItemSources_Controller