local uiCtrl = require_ex('UI/Panels/Base/UICtrl') local PANEL_ID = PanelId.WorldEnergyPointSettlement local PHASE_ID = PhaseId.WorldEnergyPointSettlement local SERIALIZED_CATEGORY = "WEP" local WEP_STAMINA_LACK_START_CONFIRM_HINT_KEY = "wep_stamina_lack_start_confirm_hint" local WEP_GEM_CUSTOM_ITEM_LACK_CONFIRM_HINT_KEY = "wep_gem_custom_item_lack_confirm_hint" WorldEnergyPointSettlementCtrl = HL.Class('WorldEnergyPointSettlementCtrl', uiCtrl.UICtrl) WorldEnergyPointSettlementCtrl.m_curLevelGameId = HL.Field(HL.String) << "" WorldEnergyPointSettlementCtrl.m_gameGroupId = HL.Field(HL.String) << "" WorldEnergyPointSettlementCtrl.m_entityLid = HL.Field(HL.Number) << -1 WorldEnergyPointSettlementCtrl.m_rewardInfos = HL.Field(HL.Table) WorldEnergyPointSettlementCtrl.m_genRewardCellFunc = HL.Field(HL.Function) WorldEnergyPointSettlementCtrl.s_messages = HL.StaticField(HL.Table) << { [MessageConst.ON_STAMINA_CHANGED] = 'OnStaminaChanged', [MessageConst.ON_WORLD_ENERGY_POINT_START] = 'OnWorldEnergyPointStart', } WorldEnergyPointSettlementCtrl.OnShowWorldEnergyPointResult = HL.StaticMethod(HL.Table) << function(args) local rewardMultiplier, useStaminaReduce, curLevelGameId, entityLid = unpack(args) PhaseManager:OpenPhase(PHASE_ID, args) if useStaminaReduce then ActivityUtils.showStaminaReduceProgress() end end WorldEnergyPointSettlementCtrl.OnCreate = HL.Override(HL.Any) << function(self, arg) self.m_genRewardCellFunc = UIUtils.genCachedCellFunction(self.view.rewardsScrollList) self.view.rewardsScrollList.onUpdateCell:AddListener(function(go, csIndex) self:_OnUpdateCell(go, csIndex) end) self.view.rewardsScrollList.onGraduallyShowFinish:AddListener(function() self:_OnGraduallyShowFinish() end) self.view.btnRestart.onClick:AddListener(function() self:_OnClickBtnRestart() end) self.view.btnEnd.onClick:AddListener(function() self:_OnClickBtnEnd() end) self:_InitData(arg) self:_InitView() self:_InitController() end WorldEnergyPointSettlementCtrl.OnStaminaChanged = HL.Method() << function(self) self:_RefreshCostStamina() end WorldEnergyPointSettlementCtrl.OnWorldEnergyPointStart = HL.Method() << function(self) self:_OnClickBtnEnd() end WorldEnergyPointSettlementCtrl._OnUpdateCell = HL.Method(GameObject, HL.Number) << function(self, go, csIndex) local rewardInfo = self.m_rewardInfos[LuaIndex(csIndex)] local cell = self.m_genRewardCellFunc(go) cell:InitItem(rewardInfo, true) cell:SetExtraInfo({isSideTips = DeviceInfo.usingController}) go.name = rewardInfo.id end WorldEnergyPointSettlementCtrl._OnGraduallyShowFinish = HL.Method() << function(self) if DeviceInfo.usingController then self.view.controllerHintPlaceholder.gameObject:SetActive(true) self.view.focusItemKeyHint.gameObject:SetActive(true) local firstItemGo = self.view.rewardsScrollList:Get(0) if firstItemGo then self.view.focusItemKeyHint.transform.position = firstItemGo.transform.position local keyHintPos = self.view.focusItemKeyHint.transform.localPosition keyHintPos = keyHintPos + self.view.config.FOCUS_REWARDS_OFFSET self.view.focusItemKeyHint.transform.localPosition = keyHintPos end end end WorldEnergyPointSettlementCtrl._OnClickBtnRestart = HL.Method() << function(self) local curIsFull = GameInstance.player.worldEnergyPointSystem.isFull if curIsFull then local wepGameCfg = Tables.worldEnergyPointTable[self.m_curLevelGameId] local curStamina = GameInstance.player.inventory.curStamina if curStamina >= ActivityUtils.getRealStaminaCost(wepGameCfg.costStamina) then local succ, groupRecord = GameInstance.player.worldEnergyPointSystem:TryGetWorldEnergyPointGroupRecord(self.m_gameGroupId) local groupCfg = Tables.worldEnergyPointGroupTable[self.m_gameGroupId] local hasGemCustomItem = Utils.getItemCount(groupCfg.gemCustomItemId) > 0 local hasSelectTerms = groupRecord.hasSelectTerms if hasSelectTerms and not hasGemCustomItem then local succ, ignoreHint = ClientDataManagerInst:GetBool(WEP_GEM_CUSTOM_ITEM_LACK_CONFIRM_HINT_KEY, false, false, SERIALIZED_CATEGORY) if ignoreHint then GameInstance.player.worldEnergyPointSystem:SendReqStartWorldEnergyPoint(self.m_curLevelGameId, self.m_entityLid) else local closuresIsOn = false Notify(MessageConst.SHOW_POP_UP, { toggle = { onValueChanged = function(isOn) closuresIsOn = isOn end, toggleText = Language.LUA_WEP_NO_HINT_TODAY_HINT, isOn = false, }, content = Language.LUA_WEP_ONCE_AGAIN_BUT_CUSTOM_ON_WITHOUT_CUSTOM_ITEM_HINT, onConfirm = function() ClientDataManagerInst:SetBool(WEP_GEM_CUSTOM_ITEM_LACK_CONFIRM_HINT_KEY, closuresIsOn, false, SERIALIZED_CATEGORY, true, EClientDataTimeValidType.CurrentDay) GameInstance.player.worldEnergyPointSystem:SendReqStartWorldEnergyPoint(self.m_curLevelGameId, self.m_entityLid) end, }) end else GameInstance.player.worldEnergyPointSystem:SendReqStartWorldEnergyPoint(self.m_curLevelGameId, self.m_entityLid) end else local succ, ignoreHint = ClientDataManagerInst:GetBool(WEP_STAMINA_LACK_START_CONFIRM_HINT_KEY, false, false, SERIALIZED_CATEGORY) if ignoreHint then GameInstance.player.worldEnergyPointSystem:SendReqStartWorldEnergyPoint(self.m_curLevelGameId, self.m_entityLid) else local closuresIsOn = false Notify(MessageConst.SHOW_POP_UP, { toggle = { onValueChanged = function(isOn) closuresIsOn = isOn end, toggleText = Language.LUA_WEP_NO_HINT_TODAY_HINT, isOn = false, }, content = Language.LUA_WEP_ONCE_AGAIN_BUT_NOT_ENOUGH_STAMINA_HINT, onConfirm = function() ClientDataManagerInst:SetBool(WEP_STAMINA_LACK_START_CONFIRM_HINT_KEY, closuresIsOn, false, SERIALIZED_CATEGORY, true, EClientDataTimeValidType.CurrentDay) GameInstance.player.worldEnergyPointSystem:SendReqStartWorldEnergyPoint(self.m_curLevelGameId, self.m_entityLid) end, }) end end else Notify(MessageConst.SHOW_POP_UP, { content = Language.LUA_WEP_ONCE_AGAIN_BUT_NOT_FULL_HINT, onConfirm = function() GameInstance.player.worldEnergyPointSystem:SendReqStartWorldEnergyPoint(self.m_curLevelGameId, self.m_entityLid) end, }) end end WorldEnergyPointSettlementCtrl._OnClickBtnEnd = HL.Method() <