local CSXTextManagerGetText = CS.XTextManager.GetText XUiPanelMatch = XClass(nil, "XUiPanelMatch") function XUiPanelMatch:Ctor(ui, parent) self.GameObject = ui.gameObject self.Transform = ui.transform XTool.InitUiObject(self) XUiHelper.RegisterClickEvent(self, self.BtnInfo, self.OnBtnInfoClick) XUiHelper.RegisterClickEvent(self, self.BtnCreateRoom, self.OnBtnCreateRoomClick) XUiHelper.RegisterClickEvent(self, self.BtnMatch, self.OnBtnMatchClick) XUiHelper.RegisterClickEvent(self, self.BtnMatching, self.OnBtnMatchingClick) XUiHelper.RegisterClickEvent(self, self.BtnBossInfo, self.OnBtnBossInfoClick) self.ArmsTips = { self.RImgArms1, self.RImgArms2, self.RImgArms3, } self.Parent = parent self.GridList = {} self.GridCommon.gameObject:SetActive(false) self.BtnMatching.interactable = false self.StageDescs = {} self.TxtDes.text = "" end function XUiPanelMatch:OnBtnInfoClick() local itemId = XDataCenter.FubenManager.GetFlopConsumeItemId(self.SectionCfg.StageId) local item = XDataCenter.ItemManager.GetItem(itemId) XLuaUiManager.Open("UiTip", item) end function XUiPanelMatch:Refresh(sectionCfg) self:ResetState() sectionCfg = sectionCfg or self.SectionCfg local stageCfg = XDataCenter.FubenManager.GetStageCfg(sectionCfg.StageId) self.SectionCfg = sectionCfg self.CurStageCfg = stageCfg self.TxtBossName.text = stageCfg.Name self.TxtDesc.text = stageCfg.Description local itemId = XDataCenter.FubenManager.GetFlopConsumeItemId(sectionCfg.StageId) local item = XDataCenter.ItemManager.GetItem(itemId) local count = 0 if item ~= nil and item:GetCount() >= 0 then count = item:GetCount() end if itemId > 0 then self.PanelScavenger.gameObject:SetActive(true) local icon = XDataCenter.ItemManager.GetItemIcon(itemId) self.RImgIcon:SetRawImage(icon) self.TxtCount.text = count self.TxtATNums.text = XDataCenter.FubenManager.GetStageActionPointConsume(sectionCfg.StageId) else self.PanelScavenger.gameObject:SetActive(false) end local leastPlayer = stageCfg.OnlinePlayerLeast <= 0 and 1 or stageCfg.OnlinePlayerLeast self.TxtPeople.text = leastPlayer for i, _ in ipairs(self.StageDescs) do if self.StageDescs[i] then self.StageDescs[i].gameObject:SetActive(false) end end for i, v in ipairs(sectionCfg.Description) do local textTemp if self.StageDescs[i] then textTemp = self.StageDescs[i] else local obj = CS.UnityEngine.Object.Instantiate(self.TxtDes.gameObject) obj.transform:SetParent(self.PanelLineupTips, false) textTemp = obj:GetComponent("Text") self.StageDescs[i] = textTemp end textTemp.text = v textTemp.gameObject:SetActive(true) end self:UpdateArmsTips() self:UpdateRewards() end function XUiPanelMatch:UpdateArmsTips() local stage = self.CurStageCfg for index = 1, 3 do local arms = stage.NeedJobType[index] if arms then self.ArmsTips[index].gameObject:SetActive(true) self.ArmsTips[index]:SetRawImage(XCharacterConfigs.GetNpcTypeIconTranspose(arms)) else self.ArmsTips[index].gameObject:SetActive(false) end end end function XUiPanelMatch:UpdateRewards() local stage = self.CurStageCfg local stageInfo = XDataCenter.FubenManager.GetStageInfo(stage.StageId) -- 是否首通奖励显示 local firstDrop = false if not stageInfo.Passed then local cfg = XDataCenter.FubenManager.GetStageLevelControl(stage.StageId) if cfg and cfg.FirstRewardShow > 0 or stage.FirstRewardShow > 0 then firstDrop = true end end self.TxtFirstDrop.gameObject:SetActive(firstDrop) self.TxtDrop.gameObject:SetActive(not firstDrop) -- 获取显示奖励Id local rewardId = 0 local cfg = XDataCenter.FubenManager.GetStageLevelControl(stage.StageId) if not stageInfo.Passed then rewardId = cfg and cfg.FirstRewardShow or stage.FirstRewardShow end if rewardId == 0 then rewardId = cfg and cfg.FinishRewardShow or stage.FinishRewardShow end if rewardId == 0 then for j = 1, #self.GridList do self.GridList[j].GameObject:SetActive(false) end end local rewards = {} if rewardId > 0 then rewards = XRewardManager.GetRewardList(rewardId) end --显示的奖励 if XDataCenter.FubenManager.CheckCanFlop(stage.StageId) then local showRewards = XRewardManager.GetRewardList(XDataCenter.FubenManager.GetFlopShowId(stage.StageId)) rewards = XTool.MergeArray(showRewards, rewards) end --关卡掉落 for i, item in ipairs(rewards) do local grid if self.GridList[i] then grid = self.GridList[i] else local ui = CS.UnityEngine.Object.Instantiate(self.GridCommon) grid = XUiGridCommon.New(self.Parent, ui) grid.Transform:SetParent(self.PanelDropContent, false) self.GridList[i] = grid end grid:Refresh(item) grid.GameObject:SetActive(true) end for j = 1, #self.GridList do if j > #rewards then self.GridList[j].GameObject:SetActive(false) end end end function XUiPanelMatch:OnBtnBossInfoClick() self.Parent:OnShowBossInfo(self.SectionCfg) self:Refresh(self.SectionCfg) end function XUiPanelMatch:OnBtnMatchingClick() end function XUiPanelMatch:OnBtnCreateRoomClick() if XDataCenter.FubenBossOnlineManager.CheckOnlineBossTimeOut() then XUiManager.TipMsg(CS.XTextManager.GetText("OnlineBossTimeOut")) return end local enterFunc = function() if XDataCenter.FubenManager.CheckCanFlop(self.CurStageCfg.StageId) then XDataCenter.FubenManager.RequestCreateRoom(self.CurStageCfg) else XUiManager.DialogTip(CS.XTextManager.GetText("TipTitle"), CS.XTextManager.GetText("BossOnlineConsumeTips"), XUiManager.DialogType.Normal, nil, function() XDataCenter.FubenManager.RequestCreateRoom(self.CurStageCfg) end) end end local pass, requireAbility = self:CheckLevelControl() if not pass then local title = CSXTextManagerGetText("OnlineBossEnterConfirmTitle") local content = CSXTextManagerGetText("OnlineBossEnterConfirmContent", requireAbility) XUiManager.DialogTip(title, content, XUiManager.DialogType.Normal, nil, enterFunc) else enterFunc() end end function XUiPanelMatch:OnBtnMatchClick() if XDataCenter.FubenBossOnlineManager.CheckOnlineBossTimeOut() then XUiManager.TipMsg(CS.XTextManager.GetText("OnlineBossTimeOut")) return end if XDataCenter.RoomManager.Matching then return end local enterFunc = function() if XDataCenter.FubenManager.CheckCanFlop(self.CurStageCfg.StageId) then self:Match() else XUiManager.DialogTip(CS.XTextManager.GetText("TipTitle"), CS.XTextManager.GetText("BossOnlineConsumeTips"), XUiManager.DialogType.Normal, nil, handler(self, self.Match)) end end local pass, requireAbility = self:CheckLevelControl() if not pass then local title = CSXTextManagerGetText("OnlineBossEnterConfirmTitle") local content = CSXTextManagerGetText("OnlineBossEnterConfirmContent", requireAbility) XUiManager.DialogTip(title, content, XUiManager.DialogType.Normal, nil, enterFunc) else enterFunc() end end function XUiPanelMatch:Match() XDataCenter.FubenManager.RequestMatchRoom(self.CurStageCfg, function()--匹配房间 self:RefreshMatching() self.BtnCreateRoom.interactable = false self.BtnMatch.gameObject:SetActive(false) self.BtnMatching.gameObject:SetActive(true) end) end -- 检测超频-普通难度战力限制 function XUiPanelMatch:CheckLevelControl() if self.Parent.CurDifficult ~= XDataCenter.FubenBossOnlineManager.OnlineBossDifficultLevel.NightMare then return true end local levelControl = XDataCenter.FubenManager.GetStageMultiplayerLevelControl(self.CurStageCfg.StageId, 1) local requireAbility = levelControl and levelControl.RecommendAbility if not requireAbility then return true end local maxAbility = XDataCenter.CharacterManager.GetMaxOwnCharacterAbility() return maxAbility >= requireAbility, requireAbility end function XUiPanelMatch:RefreshMatching() if XDataCenter.RoomManager.Matching then XLuaUiManager.Open("UiOnLineMatching", self.CurStageCfg) end end function XUiPanelMatch:OnCancelMatch() self.BtnCreateRoom.interactable = true self.BtnMatch.gameObject:SetActive(true) self.BtnMatching.gameObject:SetActive(false) end function XUiPanelMatch:ResetState() self.BtnMatch.gameObject:SetActive(true) self.BtnMatching.gameObject:SetActive(false) self.BtnCreateRoom.interactable = true end return XUiPanelMatch