local WorldClassUpgradeCtrl = class("WorldClassUpgradeCtrl", BaseCtrl) WorldClassUpgradeCtrl._mapNodeConfig = { imgBlurredBg = {}, btnMaskClose = { sComponentName = "UIButton", callback = "OnBtnClick_Close" }, goRoot = { sNodeName = "----SafeAreaRoot----" }, animRoot = { sNodeName = "----SafeAreaRoot----", sComponentName = "Animator" }, txtRankNum = {sComponentName = "TMP_Text"}, goLevelUp = {}, imgLevelUp = {sComponentName = "Image"}, goLevelUpEffect = {}, imgSvBg = {}, imgSingleBg = {}, goEffect = {nCount = 3}, imgLine = {}, txtEffect1 = { sComponentName = "TMP_Text", sLanguageId = "World_Class_Upgrade_1" }, txtEffect2 = { sComponentName = "TMP_Text", sLanguageId = "World_Class_Upgrade_2" }, txtEffect3 = {sComponentName = "TMP_Text"}, txtEffectValue = {nCount = 3, sComponentName = "TMP_Text"}, txtRankText = { sComponentName = "TMP_Text", sLanguageId = "WorldClass_Name" }, goAdvance = {}, imgAdvance = {sComponentName = "Image"}, txtAdvanceCn = { sComponentName = "TMP_Text", sLanguageId = "WorldClass_Upgrade_Advance" }, txtLevel = {sComponentName = "TMP_Text"}, btnRewardItem = { nCount = 6, sComponentName = "UIButton", callback = "OnBtnClick_RewardItem" }, goRewardItem = { nCount = 6, sNodeName = "btnRewardItem", sCtrlName = "Game.UI.TemplateEx.TemplateItemCtrl" } } WorldClassUpgradeCtrl._mapEventConfig = {} function WorldClassUpgradeCtrl:SetOldWorldClass() self.nOldWorldClass = PlayerData.Base:GetOldWorldClass() local nOldWorldExp = PlayerData.Base:GetOldWorldExp() local mapOldCfg = ConfigTable.GetData("WorldClass", self.nOldWorldClass + 1, true) local nOldFullExp = 0 if mapOldCfg then nOldFullExp = mapOldCfg.Exp end NovaAPI.SetTMPText(self._mapNode.txtRankNum, self.nOldWorldClass) local nWorldClass = PlayerData.Base:GetWorldClass() local nCurExp = PlayerData.Base:GetWorldExp() local mapCfg = ConfigTable.GetData("WorldClass", nWorldClass + 1, true) local nFullExp = 0 if mapCfg then nFullExp = mapCfg.Exp end NovaAPI.SetTMPText(self._mapNode.txtLevel, self.nOldWorldClass) self._mapNode.goLevelUpEffect.gameObject:SetActive(false) self:AddTimer(1, 0.8, function() self:Refresh() end, true, true, true) end function WorldClassUpgradeCtrl:Refresh() local nWorldClass = PlayerData.Base:GetWorldClass() local mapCurCfg = ConfigTable.GetData("WorldClass", nWorldClass) local mapOldCfg = ConfigTable.GetData("WorldClass", self.nOldWorldClass) self._mapNode.goLevelUpEffect.gameObject:SetActive(true) NovaAPI.SetTMPText(self._mapNode.txtRankNum, nWorldClass) local bOpenFunc, bRewardLimitChange = false local nChangeCount = 0 if mapCurCfg.FuncChangeText1 ~= "" then bOpenFunc = true nChangeCount = nChangeCount + 1 end if mapCurCfg.RewardLimit ~= mapOldCfg.RewardLimit and 0 < mapCurCfg.RewardLimit then bRewardLimitChange = true nChangeCount = nChangeCount + 1 end self._mapNode.imgSvBg.gameObject:SetActive(nChangeCount == 2) self._mapNode.imgSingleBg.gameObject:SetActive(nChangeCount == 1) if nChangeCount == 1 then if bOpenFunc then NovaAPI.SetTMPText(self._mapNode.txtEffect3, mapCurCfg.FuncChangeText1) self._mapNode.txtEffectValue[3].gameObject:SetActive(false) elseif bRewardLimitChange then NovaAPI.SetTMPText(self._mapNode.txtEffect3, ConfigTable.GetUIText("World_Class_Upgrade_2")) NovaAPI.SetTMPText(self._mapNode.txtEffectValue[3], mapCurCfg.RewardLimit) end elseif nChangeCount == 2 then NovaAPI.SetTMPText(self._mapNode.txtEffectValue[1], "+" .. mapCurCfg.DoubleCount) NovaAPI.SetTMPText(self._mapNode.txtEffect2, mapCurCfg.FuncChangeText1) self._mapNode.txtEffectValue[2].gameObject:SetActive(false) end end function WorldClassUpgradeCtrl:RefreshAdvance() local tbWorldClass = CacheTable.Get("_DemonAdvance") local bMax = self.nDemonId == tbWorldClass[#tbWorldClass].Id local mapDemonAdvanceCfg = ConfigTable.GetData("DemonAdvance", self.nDemonId) if mapDemonAdvanceCfg ~= nil then if not bMax then local mapNextCfg = ConfigTable.GetData("DemonAdvance", self.nDemonId + 1) if mapNextCfg ~= nil then NovaAPI.SetTMPText(self._mapNode.txtLevel, orderedFormat(ConfigTable.GetUIText("WorldClass_Upgrade_Level_Limit"), mapNextCfg.LevelRange[2])) end end self._mapNode.txtLevel.gameObject:SetActive(not bMax) NovaAPI.SetTMPText(self._mapNode.txtRankNum, mapDemonAdvanceCfg.LevelRange[2]) self.tbReward = {} for _, v in ipairs(self._mapNode.btnRewardItem) do v.gameObject:SetActive(false) end for i = 1, 4 do if mapDemonAdvanceCfg["Item" .. i] ~= 0 then local nId = mapDemonAdvanceCfg["Item" .. i] local nCount = mapDemonAdvanceCfg["Qty" .. i] self._mapNode.btnRewardItem[i].gameObject:SetActive(true) self._mapNode.goRewardItem[i]:SetItem(nId, nil, nCount, nil, nil, nil, nil, true) table.insert(self.tbReward, {nId = nId, nCount = nCount}) end end end end function WorldClassUpgradeCtrl:FadeIn() end function WorldClassUpgradeCtrl:Awake() end function WorldClassUpgradeCtrl:OnEnable() local tbParam = self:GetPanelParam() self.nDemonId = 0 if nil ~= tbParam then if tbParam[1] ~= nil then self.nDemonId = tbParam[1].nDemonId or 0 self.callback = tbParam[1].callback end self.cbClose = tbParam[2] end self._mapNode.imgBlurredBg.gameObject:SetActive(true) self._mapNode.goRoot.gameObject:SetActive(false) local wait = function() coroutine.yield(CS.UnityEngine.WaitForEndOfFrame()) self._mapNode.goRoot.gameObject:SetActive(true) self._mapNode.goLevelUp.gameObject:SetActive(self.nDemonId == 0) self._mapNode.goAdvance.gameObject:SetActive(self.nDemonId ~= 0) NovaAPI.SetImageNativeSize(self._mapNode.imgLevelUp) NovaAPI.SetImageNativeSize(self._mapNode.imgAdvance) if self.nDemonId ~= 0 then self._mapNode.animRoot:Play("WorldClassBreak", 0, 0) self:RefreshAdvance() else self._mapNode.animRoot:Play("WorldClassUp", 0, 0) self:SetOldWorldClass() end end cs_coroutine.start(wait) EventManager.Hit(EventId.TemporaryBlockInput, 0.5) end function WorldClassUpgradeCtrl:OnDisable() end function WorldClassUpgradeCtrl:OnDestroy() if nil ~= self.callback then self.callback() end if nil ~= self.cbClose then self.cbClose() end end function WorldClassUpgradeCtrl:OnBtnClick_Close() local closePanel = function() PlayerData.Base:SetWorldClassChange(false) EventManager.Hit(EventId.ClosePanel, PanelId.WorldClassUpgrade) end if self.nDemonId ~= 0 then local mapDemonAdvanceCfg = ConfigTable.GetData("DemonAdvance", self.nDemonId) if mapDemonAdvanceCfg ~= nil then if PlayerData.Base:GetWorldClass() > mapDemonAdvanceCfg.LevelRange[2] then self.nDemonId = 0 self._mapNode.animRoot:Play("WorldClassUp", 0, 0) self._mapNode.goLevelUp.gameObject:SetActive(self.nDemonId == 0) self._mapNode.goAdvance.gameObject:SetActive(self.nDemonId ~= 0) self:SetOldWorldClass() else closePanel() end end else closePanel() end end function WorldClassUpgradeCtrl:OnBtnClick_RewardItem(btn, nIndex) local nTid = self.tbReward[nIndex].nId UTILS.ClickItemGridWithTips(nTid, btn.gameObject.transform, false, true, false) end return WorldClassUpgradeCtrl