miduo_client/Assets/ManagedResources/~Lua/Modules/ContinuePackage/PremiumRebatePanel.lua

254 lines
9.8 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

require("Base/BasePanel")
local PremiumRebatePanel = Inherit(BasePanel)
local this = PremiumRebatePanel
local rechargeConfig = ConfigManager.GetConfig(ConfigName.RechargeCommodityConfig)
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
local artResourcesConfig = ConfigManager.GetConfig(ConfigName.ArtResourcesConfig)
local activityRewardConfig = ConfigManager.GetConfig(ConfigName.ActivityRewardConfig)
local TabBox = require("Modules/Common/TabBox")
local BTNS = {
[1] = {bg1 = "b_baibao_andi",bg2 = "b_baibao_liangdi",text1 = "c_czfl_6yuan",text2 = "c_czfl_6yuan2",showType = 48,actType = ActivityTypeDef.chaozhifanli,goodsType = GoodsTypeDef.chaozhifanli,redpoint= RedPointType.chaozhifanli6,price = 6},
--[2] = {bg1 = "b_baibao_andi",bg2 = "b_baibao_liangdi",text1 = "c_czfl_18yuan",text2 = "c_czfl_18yuan",showType = 49,actType = 111,goodsType = GoodsTypeDef.chaozhifanli,redpoint= RedPointType.chaozhifanli30,price = 12},
--[3] = {bg1 = "b_baibao_andi",bg2 = "b_baibao_liangdi",text1 = "c_czfl_18yuan",text2 = "c_czfl_18yuan",showType = 49,actType = ActivityTypeDef.chaozhifanli30,goodsType = GoodsTypeDef.chaozhifanli,redpoint= RedPointType.chaozhifanli30,price = 30},
}
local curPage = 1
local redList = {}
local gridPar
function PremiumRebatePanel:InitComponent()
this.spLoader = SpriteLoader.New()
this.backBtn = Util.GetGameObject(self.gameObject, "closeBtn")
this.btn_close = Util.GetGameObject(self.gameObject, "Bg/btn_close")
this.itemPre = Util.GetGameObject(self.gameObject, "Bg/ItemPre")
this.scrollItem = Util.GetGameObject(self.gameObject, "Bg/scroll")
this.leftTime = Util.GetGameObject(self.gameObject, "Bg/time/leftTime"):GetComponent("Text")
this.tabbox = Util.GetGameObject(self.gameObject, "Bg/tabbox")
Util.GetGameObject(self.gameObject, "Bg/NameBg/Image"):GetComponent("Text").text="超值连充"
this.jiantou=Util.GetGameObject(self.gameObject, "Bg/jiantou")
local rootHight = this.scrollItem.transform.rect.height
local width = this.scrollItem.transform.rect.width
this.scrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, this.scrollItem.transform,
this.itemPre, nil, Vector2.New(width, rootHight), 1, 1, Vector2.New(0, 15))
this.scrollView.moveTween.MomentumAmount = 1
this.scrollView.moveTween.Strength = 2
this.scrollView.elastic = false
this.itemViewList = {}
grid=Util.GetGameObject(self.gameObject, "Bg/scroll/ScrollCycleView/grid"):GetComponent("RectTransform")
this.sortingOrder = 0
end
--绑定事件(用于子类重写)
function PremiumRebatePanel:BindEvent()
Util.AddOnceClick(this.backBtn, function()
this:ClosePanel()
end)
Util.AddOnceClick(this.btn_close, function()
this:ClosePanel()
end)
-- 初始化Tab管理器
this.PageTabCtrl = TabBox.New()
this.PageTabCtrl:SetTabAdapter(this.PageTabAdapter)
this.PageTabCtrl:SetTabIsLockCheck(this.PageTabIsLockCheck)
this.PageTabCtrl:SetChangeTabCallBack(this.OnPageTabChange)
end
function this.PageTabAdapter(tab, index, status)
local select = Util.GetGameObject(tab, "select")
local title = Util.GetGameObject(tab, "Text"):GetComponent("Text")
local red = Util.GetGameObject(tab, "red")
if status == "select" then
select.gameObject:SetActive(true)
title.text = BTNS[index].price..""
else
select.gameObject:SetActive(false)
title.text = BTNS[index].price..""
end
BindRedPointObject(BTNS[index].redpoint,red)
redList[BTNS[index].redpoint] = red
end
function this.PageTabIsLockCheck()
return false
end
function this.OnPageTabChange(index)
if curPage == index then
return
end
curPage = index
this:Refresh(false,false)
end
--添加事件监听(用于子类重写)
function PremiumRebatePanel:AddListener()
Game.GlobalEvent:AddEvent(GameEvent.Activity.OnActivityProgressStateChange,this.OnShow,self)
end
--移除事件监听(用于子类重写)
function PremiumRebatePanel:RemoveListener()
Game.GlobalEvent:RemoveEvent(GameEvent.Activity.OnActivityProgressStateChange,this.OnShow,self)
end
function PremiumRebatePanel:OnSortingOrderChange()
end
--界面打开时调用(用于子类重写)
function PremiumRebatePanel:OnOpen()
curPage = 1
end
--界面打开或者重新打开后,界面刷新时调用(用于子类重写)
function PremiumRebatePanel:OnShow()
this:Refresh(true,true)
FixedUpdateBeat:Add(this.OnUpdate,self)
this.PageTabCtrl:Init(this.tabbox.gameObject, BTNS,curPage)
end
local sorts={
[1]=0,
[0]=1,
[2]=2,
}
function PremiumRebatePanel:Refresh(isTop,isAni)
--value 累计充值天数 昨天
this.actData = ActivityGiftManager.GetActivityTypeInfo(BTNS[curPage].actType)
table.sort(this.actData.mission,function(a,b)
if a.state==b.state then
return a.missionId < b.missionId
else
return sorts[a.state]<sorts[b.state]
end
end)
LogError("this.actData.activityId=="..this.actData.activityId)
--this.giftData = DynamicActivityManager.GetGiftDataByType({{DataType.Direct,BTNS[curPage].goodsType,BTNS[curPage].showType}})
this.actConfigData = ConfigManager.GetAllConfigsDataByKey(ConfigName.ActivityRewardConfig,"ActivityId",this.actData.activityId)
local missionConfig = ConfigManager.GetConfigDataByDoubleKey(ConfigName.ActivityRewardConfig,"ActivityId",this.actData.activityId,"Sort",this.actData.value + 1)
local missionData = ActivityGiftManager.GetActivityInfo(this.actData.activityId,missionConfig.Id)
this.leftTime.text = "每档位每日限购一次"
this:SetRewardShow(isTop,isAni)
this:SetTime()
end
function this.OnUpdate()
if gridPar~=nil then
if gridPar.localPosition and gridPar.localPosition.y>2140 then
this.jiantou:SetActive(false)
else
this.jiantou:SetActive(true)
end
end
end
function PremiumRebatePanel:SetRewardShow(isTop,isAni)
-- 显示
this.scrollView:SetData(this.actData.mission, function (index, item)
this:ShowSingleHero(item, this.actData.mission[index],index)
end,not isTop,not isAni)
local index = this.actData.value + 1
for i = 1,#this.actData.mission do
if this.actData.mission[i].state == 0 and this.actData.mission[i].progress >= activityRewardConfig[this.actData.mission[i].missionId].Values[1][1] then
index = i
break
end
end
this.scrollView:SetIndex(index)
end
function PremiumRebatePanel:ShowSingleHero(go,_data,index)
local title = Util.GetGameObject(go, "title"):GetComponent("Text")
local grid = Util.GetGameObject(go, "Grid")
local btnGet = Util.GetGameObject(go, "btnGet")
local btnText = Util.GetGameObject(go, "btnGet/Text"):GetComponent("Text")
local btnProgressText = Util.GetGameObject(go, "btnGet/progress"):GetComponent("Text")
local btnImg = Util.GetGameObject(go, "btnGet"):GetComponent("Image")
local red = Util.GetGameObject(btnImg.gameObject, "red")
LogError("_data.missionId===".._data.missionId.." state==".._data.state)
local missionConfigData = activityRewardConfig[_data.missionId]
if missionConfigData then
go.gameObject:SetActive(true)
else
go.gameObject:SetActive(false)
return
end
--btnProgressText.text = string.format("%s/%s",_data.progress,missionConfigData.Values[1][1])
btnProgressText.gameObject:SetActive(false)
if not this.itemViewList[go] then
this.itemViewList[go] = {}
end
for k,v in ipairs(this.itemViewList[go]) do
v.gameObject:SetActive(false)
end
local recharge=ConfigManager.GetConfigData(ConfigName.RechargeCommodityConfig,missionConfigData.Values[1][1])
title.text = recharge.Name
if recharge then
for i = 1, #recharge.BaseReward do
local reward=recharge.BaseReward[i]
if not this.itemViewList[go][i] then
this.itemViewList[go][i] = SubUIManager.Open(SubUIConfig.ItemView,grid.transform)
this.itemViewList[go][i].gameObject:SetActive(false)
end
if tonumber(reward)~=0 and tonumber(reward[1])~=0 then
this.itemViewList[go][i]:OnOpen(false, {reward[1],reward[2],reward[3]}, 0.65,false,false,false,this.sortingOrder)
this.itemViewList[go][i].gameObject:SetActive(true)
end
end
end
btnText.gameObject:SetActive(true)
red.gameObject:SetActive(false)
btnImg.sprite = this.spLoader:LoadSprite("s_slbz_1anniuhuangse")
btnText.text = "前往"--_data.data.price
if _data.state == 0 then --不可购买
Util.SetGray(btnGet,true)
btnText.text = recharge.Price
btnText.text = recharge.Price..""
elseif _data.state == 1 then --可购买
Util.SetGray(btnGet,false)
btnText.text = recharge.Price..""
elseif _data.state==2 then --已购买
-- body
Util.SetGray(btnGet,false)
btnText.text = "已购买"
end
Util.AddOnceClick(btnGet,function ()
if _data.state==0 then
--PopupTipPanel.ShowTip("购买上一档礼包后可购买")
elseif _data.state==1 then
PayManager.Pay(recharge.Id, function(id)
_data.state = 2
self:ShowSingleHero(go,_data,index)
end)
elseif _data.state==2 then
PopupTipPanel.ShowTip("已购买")
end
end)
end
function PremiumRebatePanel:SetTime()
end
function PremiumRebatePanel:OnClose()
--FixedUpdateBeat:Remove(this.OnUpdate,self)
end
--界面销毁时调用(用于子类重写)
function PremiumRebatePanel:OnDestroy()
this.spLoader:Destroy()
FixedUpdateBeat:Remove(this.OnUpdate,self)
this.itemViewList = {}
for k,v in pairs(redList) do
ClearRedPointObject(k,v)
end
redList = {}
end
return PremiumRebatePanel