local UIPrivilegeCardTipsView = require("UIRuneShop/UIPrivilegeCardTipsView_Generate") local ConditionJudge = require("Common/ConditionJudge") function UIPrivilegeCardTipsView:OnAwake(data) self.controller = require("UIRuneShop/UIPrivilegeCardTipsCtr"):new() self.controller:Init(self) self.controller:SetData(data) end function UIPrivilegeCardTipsView:AddEventListener() ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.RUNE_SHOP_DATA_CHANGED, self, self.OnRuneShopDataChanged) end function UIPrivilegeCardTipsView:FillContent(data, uiBase) self.uiBase = uiBase local gameObject = self.uiBase:GetRoot() if gameObject ~= nil then self.gameObject = gameObject self.transform = gameObject.transform end self:InitGenerate(self.transform, data) self:Init() end function UIPrivilegeCardTipsView:Init() self.controller:InitData() self.privilegeCardItem.privilegeScrollView.loopListView:InitListView(0, function (loopListView, itemIdx) return self:GetItemByIndexPrivilege(loopListView, itemIdx) end, nil, nil) self.privilegeCardItem.rewardScrollView.loopGridView:InitGridView(0, function (loopGridView, itemIdx, row, column) return self:GetItemByRowColumnPrivilege(loopGridView, itemIdx, row, column) end, nil, nil) self.privilegeCardItem.privilegeScrollView.loopListView.ScrollRect.enabled = false self.privilegeCardItem.rewardScrollView.loopGridView.ScrollRect.enabled = false local id = self.controller:GetCfgId() local cfgData = ManagerContainer.CfgMgr:GetPrivilegeCardCfgByLv(id) if not cfgData then self.privilegeCardItem:SetActive(false) return end local privilegeCardItem = self.privilegeCardItem privilegeCardItem.privilegeLv1:SetActive(id == 1) privilegeCardItem.privilegeLv2:SetActive(id == 2) local buyRewards = cfgData.BuyReward if buyRewards then local buyReward = buyRewards[1] if buyReward then self:RefreshCurrenyItem(privilegeCardItem.buyReward1, buyReward[1], buyReward[2], true) else self:RefreshCurrenyItem(privilegeCardItem.buyReward1) end buyReward = buyRewards[2] if buyReward then self:RefreshCurrenyItem(privilegeCardItem.buyReward2, buyReward[1], buyReward[2], true) else self:RefreshCurrenyItem(privilegeCardItem.buyReward2) end else self:RefreshCurrenyItem(privilegeCardItem.buyReward1) self:RefreshCurrenyItem(privilegeCardItem.buyReward2) end privilegeCardItem.presentPrice.number.text.text = tostring(cfgData.RMB) privilegeCardItem.privilegeScrollView.loopListView:SetListItemCount(0, true) self.privilegeUnlockDess = cfgData.UnlockDes if self.privilegeUnlockDess then privilegeCardItem.privilegeScrollView.loopListView:SetListItemCount(#self.privilegeUnlockDess, true) end privilegeCardItem.rewardScrollView.loopGridView:SetListItemCount(0, true) self.privilegeRewards = nil if cfgData.Reward then self.privilegeRewards = {} for i = 1, #cfgData.Reward do local reward = cfgData.Reward[i] self.privilegeRewards[#self.privilegeRewards+1] = {cfgId = reward[1], num = reward[2]} end end if self.privilegeRewards then privilegeCardItem.rewardScrollView.loopGridView:SetListItemCount(#self.privilegeRewards, true) end self.uiBase:AddButtonUniqueEventListener(privilegeCardItem.presentPrice.button, self, self.OnClickPresentPriceBtn) if cfgData.UnlockCond then local result, _, content = ConditionJudge:ConditionPassResult1(cfgData.UnlockCond) if not result then privilegeCardItem.privilegeCardLock:SetActive(true) privilegeCardItem.privilegeCardLock.textDsc.text.text = tostring(content) return end end privilegeCardItem.privilegeCardLock:SetActive(false) end function UIPrivilegeCardTipsView:RemoveEventListener() ManagerContainer.LuaEventMgr:Unregister(self.uiData.name) end function UIPrivilegeCardTipsView:AddUIEventListener() self.uiBase:AddButtonUniqueEventListener(self.btnClose.button, self, self.OnClickCloseBtn) end function UIPrivilegeCardTipsView:OnHide() end function UIPrivilegeCardTipsView:OnShow(data) self.controller:SetData(data) end function UIPrivilegeCardTipsView:OnClose() end function UIPrivilegeCardTipsView:OnDispose() self.privilegeUnlockDess = nil self.privilegeRewards = nil self.privilegeCardItem.privilegeScrollView.loopListView:Dispose() self.privilegeCardItem.rewardScrollView.loopGridView:Dispose() self.controller:OnDispose() end function UIPrivilegeCardTipsView:OnPageInEnd() self.super:OnPageInEnd() self.privilegeCardItem.privilegeScrollView.loopListView.ScrollRect.enabled = true self.privilegeCardItem.rewardScrollView.loopGridView.ScrollRect.enabled = true end function UIPrivilegeCardTipsView:OnClickCloseBtn() self:UIClose() end function UIPrivilegeCardTipsView:OnClickPresentPriceBtn() local id = self.controller:GetCfgId() local cfgData = ManagerContainer.CfgMgr:GetPrivilegeCardCfgByLv(id) if not cfgData then ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('PayError_ValidPay') self:UIClose() return end if cfgData.UnlockCond then local result, _, content = ConditionJudge:ConditionPassResult1(cfgData.UnlockCond) if not result then ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(content) self:UIClose() return end end local errorCodeKey = self.controller:SendPay(id) if not errorCodeKey then ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCodeKey) end self:UIClose() end function UIPrivilegeCardTipsView:OnRuneShopDataChanged(runeShopType, runeShopSubType) if runeShopType ~= Enum.RuneShopType.Gifts then return end if runeShopSubType ~= Enum.RuneShopSubType.ROCoin then return end if self.controller:IsValidData() then return end self:UIClose() end function UIPrivilegeCardTipsView:GetItemByIndexPrivilege(loopListView, itemIdx) local unlockDess = self.privilegeUnlockDess if not unlockDess then return nil end local unlockDes = unlockDess[itemIdx + 1] if not unlockDes then return nil end local item = loopListView:NewListViewItem('EntryUnlockDscItem') local itemLua = CommonUtil.BindGridViewItem2Lua(self, 'EntryUnlockDscItem', item.gameObject) if itemLua then local idx = unlockDes[1] or 0 itemLua.icon.uIImageSwitchSprite:ChangeSprite(idx) local params = {} local langKey = unlockDes[2] for i = 3, #unlockDes do params[#params + 1] = tostring(unlockDes[i]) end itemLua.desTxt.text.text = string.formatbykey(langKey, unpack(params)) end ManagerContainer.LuaUIMgr:ForceRebuildLayoutImmediate(item.CachedRectTransform) return item end function UIPrivilegeCardTipsView:GetItemByRowColumnPrivilege(loopGridView, itemIdx, row, column) if not self.privilegeRewards then return nil end local reward = self.privilegeRewards[itemIdx + 1] if not reward then return nil end local item = loopGridView:NewListViewItem('Item') local iconItem = item.transform:Find('IconItem') local itemLua = CommonUtil.BindGridViewItem2Lua(self, 'IconItem', iconItem.gameObject) CommonUtil.UpdateItemPrefab(self, itemLua, reward, nil, self, self.ShowItemTips, reward) return item end function UIPrivilegeCardTipsView:RefreshCurrenyItem(itemLua, itemCfgId, itemNum, ignoreIcon) if not itemCfgId or not itemNum then itemLua:SetActive(false) return end itemLua.number.text.text = CommonUtil.FormatNumber(itemNum) itemLua:SetActive(true) if ignoreIcon then return end itemLua.icon.image.sprite = nil itemLua.icon.image.enabled = false local itemCfgData = ManagerContainer.CfgMgr:GetItemById(itemCfgId) if itemCfgData then CommonUtil.LoadIcon(self, itemCfgData.MiniIcon, function(sprite) if sprite then itemLua.icon.image.sprite = sprite itemLua.icon.image.enabled = true end end) end end return UIPrivilegeCardTipsView