ro-webgl/Assets/Lua/UI/UIActivity/UIActivityFirstRechargeView.lua
2021-12-21 09:40:39 +08:00

281 lines
9.7 KiB
Lua

local UIActivityFirstRechargeView = require("UIActivity/UIActivityFirstRechargeView_Generate")
local GiftType = {
First = 1, -- 首充
Hundred = 2, -- 百元
}
function UIActivityFirstRechargeView:OnAwake(data)
self.controller = require("UIActivity/UIActivityFirstRechargeCtr"):new()
self.controller:Init(self)
self.controller:SetData(data)
end
function UIActivityFirstRechargeView:AddEventListener()
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.PAY_TOTAL_RECHARGE_CHANGED, self, self.OnPayTotalRechargeChanged)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Activity_Data_Change, self, self.OnActivityDataChanged)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Activity_FirstRecharge_Change, self, self.OnActivityFirstRechargeChanged)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.UI_CLOSE_COMPELETED, self, self.OnUICloseCompleted)
end
function UIActivityFirstRechargeView: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 UIActivityFirstRechargeView:Init()
self.controller:InitData()
self.firstRechargeItem.rewards.loopGridView:InitGridView(0, function(gridView, itemIndex, row, column)
return self:GetItemByRowColumn(gridView, itemIndex, row, column)
end, nil)
self:RefreshView()
end
function UIActivityFirstRechargeView:RemoveEventListener()
ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
end
function UIActivityFirstRechargeView:AddUIEventListener()
self.uiBase:AddButtonUniqueEventListener(self.AnyBtn.button, self, self.OnClickCloseBtn)
self.uiBase:AddButtonUniqueEventListener(self.backBtn.button, self, self.OnClickCloseBtn)
self.uiBase:AddToggleUniqueEventListener(self.firstToggle.toggle, self, self.OnClickToggle, GiftType.First)
self.uiBase:AddToggleUniqueEventListener(self.hundredToggle.toggle, self, self.OnClickToggle, GiftType.Hundred)
self.uiBase:AddButtonUniqueEventListener(self.btnRecharge.button, self, self.OnClickRechargeBtn)
self.uiBase:AddButtonUniqueEventListener(self.btnReceive.button, self, self.OnClickReceiveBtn)
self.uiBase:AddToggleUniqueEventListener(self.toggle1.toggle, self, self.OnClickDayToggle, 1)
self.uiBase:AddToggleUniqueEventListener(self.toggle2.toggle, self, self.OnClickDayToggle, 2)
self.uiBase:AddToggleUniqueEventListener(self.toggle3.toggle, self, self.OnClickDayToggle, 3)
end
function UIActivityFirstRechargeView:OnHide()
end
function UIActivityFirstRechargeView:OnShow(data)
self.controller:SetData(data)
end
function UIActivityFirstRechargeView:OnClose()
end
function UIActivityFirstRechargeView:OnDispose()
if self.firstRechargeItem and self.firstRechargeItem.rewards and self.firstRechargeItem.rewards.loopGridView then
self.firstRechargeItem.rewards.loopGridView:Dispose()
end
self.controller:OnDispose()
end
function UIActivityFirstRechargeView:OnPayTotalRechargeChanged()
self:RefreshRewardState()
end
function UIActivityFirstRechargeView:OnActivityDataChanged()
local giftType = self.controller:GetGiftType()
if giftType == GiftType.Hundred then
self:RefreshRewards()
self:RefreshRewardState()
end
end
function UIActivityFirstRechargeView:OnActivityFirstRechargeChanged()
local giftType = self.controller:GetGiftType()
if giftType == GiftType.First then
self:RefreshRewards()
self:RefreshRewardState()
end
end
function UIActivityFirstRechargeView:OnUICloseCompleted(owner)
if owner.uiData.id ~= Enum.UIPageName.UIRuneShop then return end
if ManagerContainer.LuaUIMgr:PageInHideStack(self.uiBase) then
ManagerContainer.LuaUIMgr:Show(Enum.UIPageName.UIActivityFirstRecharge)
end
end
function UIActivityFirstRechargeView:OnClickCloseBtn()
ManagerContainer.LuaUIMgr:OpenSourceUI(self)
end
function UIActivityFirstRechargeView:OnClickToggle(tog, params, b)
if not b then return end
local giftType = params[0]
if self.controller:ChangeGiftType(giftType) then
self:RefreshBanner()
self:RefreshRewards()
self:RefreshRewardState()
end
end
function UIActivityFirstRechargeView:OnClickRechargeBtn()
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIRuneShop, {Enum.RuneShopType.Gifts, Enum.RuneShopSubType.Gold})
ManagerContainer.LuaUIMgr:Hide(Enum.UIPageName.UIActivityFirstRecharge)
end
function UIActivityFirstRechargeView:OnClickReceiveBtn()
self.controller:SendGetReward()
end
function UIActivityFirstRechargeView:OnClickDayToggle(tog, params, b)
if not params then return end
local dayIdx = params[0]
if not b then
local lastDayIdx = self.controller:GetDayIdx()
if dayIdx == lastDayIdx then
tog.isOn = true
end
return
end
if self.controller:ChangeDayIdx(dayIdx) then
self:RefreshRewards()
self:RefreshRewardState()
end
end
function UIActivityFirstRechargeView:RefreshView()
self:RefreshToggleGroup()
self:RefreshBanner()
self:RefreshRewards()
self:RefreshRewardState()
end
function UIActivityFirstRechargeView:RefreshToggleGroup()
local giftType = self.controller:GetGiftType()
local toggleGroup = self.toggleGroup.toggleGroup
local oldAllowSwitchOff = toggleGroup.allowSwitchOff
toggleGroup.allowSwitchOff = true
self.firstToggle.toggle.isOn = (giftType == GiftType.First)
self.hundredToggle.toggle.isOn = (giftType == GiftType.Hundred)
toggleGroup.allowSwitchOff = oldAllowSwitchOff
end
function UIActivityFirstRechargeView:RefreshBanner()
local giftType = self.controller:GetGiftType()
self.banner1:SetActive(giftType == GiftType.First)
self.banner2:SetActive(giftType == GiftType.Hundred)
end
function UIActivityFirstRechargeView:RefreshRewards()
local cfgData = self.controller:GetCfgData()
if not cfgData then
self.firstRechargeItem:SetActive(false)
return
end
local idx = self.controller:GetDayIdx()
self.toggle1.toggle.isOn = (idx == 1)
self.toggle2.toggle.isOn = (idx == 2)
self.toggle3.toggle.isOn = (idx == 3)
if not idx then
self.firstRechargeItem:SetActive(false)
return
end
self:RefreshFirstRechargeItem(self.firstRechargeItem, idx, cfgData['Reward' .. tostring(idx)], cfgData['Value' .. tostring(idx)])
end
function UIActivityFirstRechargeView:RefreshRewardState()
local idx = self.controller:GetDayIdx()
local rewardState = nil
if idx then
rewardState = self.controller:GetRewardStateByDay(idx)
else
rewardState = Enum.ActivityRewardState.NotGot
end
local curNum, targetNum = self.controller:GetTargetRechargeInfo()
if targetNum > 0 then
self.dscTxt.text.text = string.formatbykey('DscRecharge02', tostring(curNum), tostring(targetNum))
self.btnRecharge:SetActive(true)
self.btnReceive:SetActive(false)
self.btnWating:SetActive(false)
self.labelReceived:SetActive(false)
else
self.dscTxt.text.text = ''
self.btnRecharge:SetActive(false)
if rewardState == Enum.ActivityRewardState.Got then
self.btnReceive:SetActive(true)
self.btnWating:SetActive(false)
self.labelReceived:SetActive(false)
elseif rewardState == Enum.ActivityRewardState.GotAndHas then
self.btnReceive:SetActive(false)
self.btnWating:SetActive(false)
self.labelReceived:SetActive(true)
else
self.btnReceive:SetActive(false)
self.btnWating:SetActive(true)
self.labelReceived:SetActive(false)
end
end
end
function UIActivityFirstRechargeView:RefreshFirstRechargeItem(itemLua, day, rewards, value)
itemLua.textDays.text.text = string.formatbykey('TitleFirstRechargeRewards', tostring(day))
itemLua.numValue.text.text = tostring(value)
self.firstRechargeItem.rewards.loopGridView:RefreshListByIndex(rewards and #rewards or 0, 0)
local rewardState = self.controller:GetRewardStateByDay(day)
itemLua.mask:SetActive(rewardState == Enum.ActivityRewardState.GotAndHas)
itemLua.received:SetActive(rewardState == Enum.ActivityRewardState.GotAndHas)
itemLua.available:SetActive(rewardState == Enum.ActivityRewardState.Got)
local _, targetNum = self.controller:GetTargetRechargeInfo()
if targetNum > 0 then
itemLua.mask:SetActive(false)
itemLua.received:SetActive(false)
itemLua.available:SetActive(false)
itemLua.wating:SetActive(false)
else
if rewardState == Enum.ActivityRewardState.Got then
itemLua.mask:SetActive(false)
itemLua.received:SetActive(false)
itemLua.available:SetActive(true)
itemLua.wating:SetActive(false)
elseif rewardState == Enum.ActivityRewardState.GotAndHas then
itemLua.mask:SetActive(true)
itemLua.received:SetActive(true)
itemLua.available:SetActive(false)
itemLua.wating:SetActive(false)
else
itemLua.mask:SetActive(false)
itemLua.received:SetActive(false)
itemLua.available:SetActive(false)
itemLua.wating:SetActive(true)
end
end
end
function UIActivityFirstRechargeView:GetItemByRowColumn(gridView, itemIndex, row, column)
local cfgData = self.controller:GetCfgData()
if not cfgData then
return nil
end
local idx = self.controller:GetDayIdx()
if not idx then
return nil
end
local showData = cfgData['Reward' .. tostring(idx)]
local item = nil
if showData then
local itemData = showData[itemIndex + 1]
if itemData then
item = gridView:NewListViewItem('IconSmallItem')
local itemlua = CommonUtil.BindGridViewItem2Lua(self, 'IconItem', item.gameObject)
CommonUtil.UpdateItemPrefab(self, itemlua, {cfgId = itemData[1], num = itemData[2]}, Enum.ItemIEnterType.Bag, self, self.ShowItemTips)
end
end
return item
end
function UIActivityFirstRechargeView:ShowItemTips(button, params)
ManagerContainer.LuaUIMgr:OpenTips(params[0])
end
return UIActivityFirstRechargeView