471 lines
18 KiB
Lua
471 lines
18 KiB
Lua
--[[
|
|
* @ClassName FirstRechargePanel
|
|
* @Description 首充
|
|
* @Date 2019/6/3 11:45
|
|
* @Author MagicianJoker, fengliudianshao@outlook.com
|
|
* @Copyright Copyright (c) 2019, MagicianJoker
|
|
--]]
|
|
local DayRewardItem = require("Modules/FirstRecharge/DayRewardItem")
|
|
local rechargeConfig=ConfigManager.GetConfig(ConfigName.RechargeCommodityConfig)
|
|
---@class FirstRechargePanel
|
|
local FirstRechargePanel = quick_class("FirstRechargePanel", BasePanel)
|
|
local rechargeId=0
|
|
local kMaxTab, kMaxDay = 2, 3
|
|
local isPay=false
|
|
local TextColorDef = {
|
|
[1] = Color.New(48 / 255, 31 / 255, 33 / 255, 1),
|
|
[2] = Color.New(246 / 255, 235 / 255, 179 / 255, 1)
|
|
}
|
|
local orginLayer
|
|
local activityRewardConfig = ConfigManager.GetConfig(ConfigName.ActivityRewardConfig)
|
|
|
|
local TipConfig = {
|
|
[MoneyType.RMB] = {
|
|
[1] = "s_shouchong_anniuzi6_zh",
|
|
[2] = "s_shouchong_anniuzi100_zh",
|
|
[3] = "s_shouchong_anniuzi200_zh",
|
|
[4] = "s_shouchong_anniuzi500_zh",
|
|
},
|
|
[MoneyType.USD] = {
|
|
[1] = "s_shouchong_$1_zh",
|
|
[2] = "s_shouchong_15_zh"
|
|
},
|
|
[MoneyType.RMB] = {
|
|
[1] = "s_shouchong_anniuzi6_zh",
|
|
[2] = "s_shouchong_anniuzi100_zh",
|
|
[3] = "s_shouchong_anniuzi200_zh",
|
|
[4] = "s_shouchong_anniuzi500_zh",
|
|
},
|
|
}
|
|
|
|
local heroImage={
|
|
[1]="UI_hz_zhonghe40",
|
|
[2]="UI_hz_zhonghe40",
|
|
[3]="UI_hz_zhonghe40",
|
|
[4]="UI_hz_zhonghe40",
|
|
}
|
|
--
|
|
local _MoneyDataNum = {}
|
|
|
|
|
|
function FirstRechargePanel:InitComponent()
|
|
self.spLoader = SpriteLoader.New()
|
|
orginLayer = 0
|
|
self.frame = Util.GetGameObject(self.transform, "frame")
|
|
self.closeBtn = Util.GetGameObject(self.transform, "closeBtn")
|
|
self.heroPreviewBtn = Util.GetGameObject(self.transform, "yulan/heroPreviewBtn")
|
|
self.tenProBtn = Util.GetGameObject(self.transform, "frame/tenProBtn")
|
|
self.btn_close = Util.GetGameObject(self.transform, "frame/btn_close")
|
|
self.stageImage6 = Util.GetGameObject(self.transform, "frame/stageImage/Image1"):GetComponent("Image")
|
|
self.stageImage30 = Util.GetGameObject(self.transform, "frame/stageImage/Image2"):GetComponent("Image")
|
|
self.stageImage100 = Util.GetGameObject(self.transform, "frame/stageImage/Image3"):GetComponent("Image")
|
|
self.stageImage200 = Util.GetGameObject(self.transform, "frame/stageImage/Image4"):GetComponent("Image")
|
|
self.hero = Util.GetGameObject(self.transform, "frame/bg_live1/Image"):GetComponent("Image")
|
|
self.stageImage6.sprite = self.spLoader:LoadSprite(TipConfig[MoneyUtil.MT][1])
|
|
self.stageImage30.sprite = self.spLoader:LoadSprite(TipConfig[MoneyUtil.MT][2])
|
|
self.stageImage100.sprite = self.spLoader:LoadSprite(TipConfig[MoneyUtil.MT][3])
|
|
self.stageImage200.sprite = self.spLoader:LoadSprite(TipConfig[MoneyUtil.MT][4])
|
|
self.stageImage6:SetNativeSize()
|
|
self.stageImage30:SetNativeSize()
|
|
self.stageImage100:SetNativeSize()
|
|
self.stageImage200:SetNativeSize()
|
|
--topPart
|
|
-- self.itemPos = Util.GetGameObject(self.transform, "frame/itemPos")
|
|
-- self.itemInfo = SubUIManager.Open(SubUIConfig.ItemView, self.itemPos.transform)
|
|
-- self.nameIcon = Util.GetGameObject(self.transform, "frame/bg/topPart/nameIcon"):GetComponent("Image")
|
|
-- self.rewardValue = Util.GetGameObject(self.transform, "frame/bg/topPart/tipsBg/value"):GetComponent("Text")
|
|
--midPart
|
|
self.tabs = {}
|
|
self.selectTabs = {}
|
|
self.tabTitles = {}
|
|
self.tabRedPoint = {}
|
|
for i = 1, kMaxTab do
|
|
self.tabs[i] = Util.GetGameObject(self.transform, "frame/tabsContent/tabs_" .. i)
|
|
self.selectTabs[i] = Util.GetGameObject(self.tabs[i], "selected")
|
|
self.tabTitles[i] = Util.GetGameObject(self.tabs[i], "title"):GetComponent("Text")
|
|
self.tabRedPoint[i] = Util.GetGameObject(self.tabs[i], "redPoint")
|
|
-- self.tabs[i]:GetComponent(Text)
|
|
end
|
|
self.selectTabIndex = -1
|
|
|
|
self.rewardDay = Util.GetGameObject(self.transform, "frame/rewardBg/rewardDay")
|
|
self.rewardGrid = Util.GetGameObject(self.transform, "frame/rewardBg/rewardBg")
|
|
self.rewardGridPos = self.rewardGrid.transform.localPosition
|
|
self.itemWidth = self.rewardGrid:GetComponent("HorizontalLayoutGroup").spacing
|
|
self.preList={}
|
|
self.dayRewardList = {}
|
|
for i = 1, 4 do
|
|
table.insert(self.preList,Util.GetGameObject(self.transform, "frame/tabsContent/tabs_"..i))
|
|
end
|
|
|
|
--bottomPart
|
|
self.reChargeBtn = Util.GetGameObject(self.transform, "frame/rechargeBtn1")
|
|
self.reChargeTxt = Util.GetGameObject(self.transform, "frame/rechargeBtn1/Text"):GetComponent("Text")
|
|
self.reChargeTips = Util.GetGameObject(self.transform, "frame/tips"):GetComponent("Text")
|
|
self.reChargeTips.gameObject:SetActive(false)
|
|
self.effect = Util.GetGameObject(self.transform, "frame/effect")
|
|
self.ani = self.transform:GetComponent("Animator")
|
|
-- effectAdapte(Util.GetGameObject(self.effect, "Partical/ziti mask (1)"))
|
|
|
|
BindLightFlash(Util.GetGameObject(self.effect, "saoguang"), Util.GetGameObject(self.frame, "bg_piaodai/Image (3)"))
|
|
BindLightFlash(Util.GetGameObject(self.effect, "saoguang (1)"), self.reChargeBtn)
|
|
|
|
end
|
|
|
|
function FirstRechargePanel:BindEvent()
|
|
Util.AddClick(self.closeBtn, function()
|
|
--self:ClosePanel()
|
|
end)
|
|
Util.AddClick(self.btn_close, function()
|
|
self:ClosePanel()
|
|
end)
|
|
Util.AddClick(self.reChargeBtn, function()
|
|
self:OnRechargeBtnClicked()
|
|
end)
|
|
for i = 1, kMaxTab do
|
|
Util.AddClick(self.tabs[i], function()
|
|
self:OnTabClicked(i)
|
|
end)
|
|
end
|
|
Util.AddClick(self.heroPreviewBtn, function()
|
|
local fakeId = tonumber(1008)
|
|
local fdata, fseed = BattleManager.GetFakeBattleData(fakeId)
|
|
local testFightData = {
|
|
fightData = fdata,
|
|
fightSeed = fseed,
|
|
fightType = 0,
|
|
maxRound = 20
|
|
}
|
|
UIManager.OpenPanel(UIName.BattlePanel, testFightData, BATTLE_TYPE.Test)
|
|
end)
|
|
Util.AddClick(self.tenProBtn, function()
|
|
local heroId = 0
|
|
for _, rewardInfo in ConfigPairs(activityRewardConfig) do
|
|
if rewardInfo.ActivityId == ActivityTypeDef.FirstRecharge then--ActivityTypeDef.AccumulativeRecharge then
|
|
heroId = rewardInfo.Reward[1][1]
|
|
break
|
|
end
|
|
end
|
|
UIManager.OpenPanel(UIName.RoleGetInfoPopup, false, heroId,10)
|
|
end)
|
|
end
|
|
|
|
function FirstRechargePanel:OnSortingOrderChange()
|
|
Util.AddParticleSortLayer(self.effect, self.sortingOrder - orginLayer)
|
|
orginLayer = self.sortingOrder
|
|
--特效穿透特殊处理
|
|
-- if self.itemInfo then
|
|
-- self.itemInfo:SetEffectLayer( self.sortingOrder)
|
|
-- end
|
|
-- for i = 1, #self.dayRewardList do
|
|
-- self.dayRewardList[i]:OnSortingOrderChange(self.sortingOrder)
|
|
-- end
|
|
end
|
|
local fun = nil
|
|
function FirstRechargePanel:OnOpen(context,_fun)
|
|
self.isPlayAnim = true
|
|
context = context and context or {}
|
|
self.selectTabIndex = context.tabIndex and context.tabIndex or 1
|
|
-- self:SetOncePart()
|
|
fun = _fun
|
|
local qyTime = 0
|
|
if not FirstRechargeManager.GetAnimFlag("FirstRechargeAnim") then
|
|
--SoundManager.PlaySound(SoundConfig.UI_Hd_swk)
|
|
--qyTime = 1.5
|
|
FirstRechargeManager.SetAnimFlag("FirstRechargeAnim")
|
|
end
|
|
self.frame:SetActive(false)
|
|
self.effect:SetActive(false)
|
|
self.ani.enabled = false
|
|
self.closeBtn:GetComponent("Button").enabled = false
|
|
-- self.tabs[1]:SetActive(false)
|
|
Timer.New(function ()
|
|
self.frame:SetActive(true)
|
|
self.effect:SetActive(true)
|
|
self.ani.enabled = true
|
|
end, qyTime):Start()
|
|
Timer.New(function ()
|
|
--self.tabs[1]:SetActive(true)
|
|
self.closeBtn:GetComponent("Button").enabled = true
|
|
end, qyTime + 1):Start()
|
|
end
|
|
|
|
function FirstRechargePanel:OnShow()
|
|
--self.reChargeTips.text = string.format("已充值 %s 元", FirstRechargeManager.GetAccumRechargeValue())
|
|
self.activityInfo = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.FirstRecharge)
|
|
local AccumRecharge = 0
|
|
if not self.activityInfo then
|
|
self:ClosePanel()
|
|
return
|
|
end
|
|
_MoneyDataNum = {}
|
|
for _, missInfo in ipairs(self.activityInfo.mission) do
|
|
if missInfo and missInfo.progress then
|
|
-- 获取充值额度
|
|
AccumRecharge = missInfo.progress
|
|
--LogError("missInfo.missionId=="..missInfo.missionId)
|
|
-- 构建数据
|
|
local money = activityRewardConfig[missInfo.missionId].Values[1][1]
|
|
--LogError("money===="..money)
|
|
--local index = FirstRechargeManager.GetFirstRechargeIndexByMoney(money)
|
|
local index=0
|
|
if money==10000 then
|
|
index=1
|
|
else
|
|
index=2
|
|
end
|
|
if _MoneyDataNum[index]==nil then
|
|
_MoneyDataNum[index] = {}
|
|
end
|
|
table.insert(_MoneyDataNum[index], missInfo)
|
|
end
|
|
end
|
|
|
|
-- 判断数据
|
|
local minIndex=1
|
|
for index, dataList in pairs(_MoneyDataNum) do
|
|
if dataList and #dataList > 0 then
|
|
-- 排序
|
|
table.sort(dataList,function(a,b)
|
|
return a.missionId < b.missionId
|
|
end)
|
|
local isAll=true
|
|
for key, value in pairs(dataList) do
|
|
if value.state~=1 then
|
|
isAll=false
|
|
end
|
|
end
|
|
if isAll then
|
|
-- table.remove(_MoneyDataNum,index)
|
|
self.preList[index]:SetActive(false)
|
|
else
|
|
-- 找到最小的
|
|
if not minIndex or index < minIndex then
|
|
minIndex = index
|
|
end
|
|
end
|
|
|
|
|
|
end
|
|
end
|
|
|
|
-- 如果想看的不存在就显示最小的
|
|
-- if not _MoneyDataNum[self.selectTabIndex] or #_MoneyDataNum[self.selectTabIndex] <= 0 then
|
|
if self.selectTabIndex==1 then
|
|
self.selectTabIndex = minIndex
|
|
end
|
|
|
|
--end
|
|
|
|
self.reChargeTips.text = Language[10664]..string.format(MoneyUtil.GetMoneyUnitName(),AccumRecharge)--string.format(Language[10665], AccumRecharge)
|
|
self:OnTabChanged(self.selectTabIndex)
|
|
for i = 1, kMaxTab do
|
|
self:SetTabRedPointStatus(i)
|
|
end
|
|
|
|
-- 判断页签切换是否显示
|
|
Util.GetGameObject(self.transform, "frame/tabsContent"):SetActive(table.nums(_MoneyDataNum)>1)
|
|
end
|
|
|
|
function FirstRechargePanel:OnTabClicked(index)
|
|
if self.selectTabIndex == index then
|
|
return
|
|
end
|
|
self:OnTabChanged(index)
|
|
end
|
|
|
|
function FirstRechargePanel:OnTabChanged(index)
|
|
LogError("index==================="..index)
|
|
self.hero.sprite=self.spLoader:LoadSprite(heroImage[index])
|
|
for i, select in ipairs(self.selectTabs) do
|
|
select:SetActive(i == index)
|
|
end
|
|
if index==4 then
|
|
self.heroPreviewBtn:SetActive(false)
|
|
else
|
|
self.heroPreviewBtn:SetActive(true)
|
|
end
|
|
local money=0
|
|
for i, title in ipairs(self.tabTitles) do
|
|
title.color = i == index and TextColorDef[2] or TextColorDef[1]
|
|
--local money = FirstRechargeManager.GetFirstRechargeMoneyByIndex(i)
|
|
if i==1 then
|
|
title.text ="超值首充"
|
|
elseif i==2 then
|
|
title.text ="豪华首充"
|
|
end
|
|
end
|
|
if index==1 then
|
|
money=10000
|
|
elseif index==2 then
|
|
money=20000
|
|
end
|
|
self.stageImage6.gameObject:SetActive(index == 5)
|
|
self.stageImage30.gameObject:SetActive(index == 5)
|
|
self.stageImage100.gameObject:SetActive(index == 5)
|
|
self.stageImage200.gameObject:SetActive(index == 5)
|
|
self:ShowContent(index)
|
|
self.selectTabIndex = index
|
|
local AccumRecharge = 0
|
|
self.offsetIndex = 0
|
|
|
|
--local money = FirstRechargeManager.GetFirstRechargeMoneyByIndex(index)
|
|
rechargeId=money
|
|
|
|
|
|
local tempData = _MoneyDataNum[index]
|
|
isPay=false
|
|
for _, missInfo in ipairs(tempData) do
|
|
if missInfo and missInfo.progress and activityRewardConfig[missInfo.missionId].Values[1][1] == money then
|
|
AccumRecharge = missInfo.progress
|
|
LogError("missionInfo.state=="..missInfo.state)
|
|
-- if AccumRecharge >= activityRewardConfig[missInfo.missionId].Values[1][1] then
|
|
-- local day = GetTimePass(FirstRechargeManager.GetRechargeTime())--FirstRechargeManager.GetRechargeTime()
|
|
-- if missInfo.state ~= 1 and activityRewardConfig[missInfo.missionId].Values[1][2] <= day then
|
|
-- self.offsetIndex = _
|
|
-- break
|
|
-- end
|
|
-- end
|
|
if missInfo.state>0 then
|
|
isPay=true
|
|
end
|
|
end
|
|
end
|
|
if isPay then
|
|
self.reChargeTxt.text=Language[10514]
|
|
else
|
|
self.reChargeTxt.text=rechargeConfig[money].Price..Language[11358]
|
|
end
|
|
if self.offsetIndex == 0 then
|
|
self.offsetIndex = 1
|
|
end
|
|
if self.isPlayAnim then
|
|
self.isPlayAnim = false
|
|
local vec = self.rewardGrid.transform.localPosition
|
|
vec.x = self.rewardGridPos.x - #tempData * self.itemWidth
|
|
self.rewardGrid.transform.localPosition = vec
|
|
local x = self.rewardGridPos.x - (self.offsetIndex - 1) * self.itemWidth
|
|
local vec2 = Vector3.New(x,self.rewardGridPos.y,self.rewardGridPos.z)
|
|
-- --self.tween = self.rewardGrid.gameObject.transform:DOLocalMove(vec2, 0.5):OnStart(function() end):OnUpdate(function() --TODO:测试速度
|
|
-- end):OnComplete(function ()
|
|
-- --self.rewardGrid.transform.localPosition = vec2
|
|
-- end)
|
|
else
|
|
local x = self.rewardGridPos.x - (self.offsetIndex - 1) * self.itemWidth
|
|
local vec2 = Vector3.New(x,self.rewardGridPos.y,self.rewardGridPos.z)
|
|
--self.rewardGrid.transform.localPosition = vec2
|
|
end
|
|
end
|
|
|
|
function FirstRechargePanel:ShowContent(index)
|
|
local tempData = {}
|
|
for _, missionInfo in ipairs(_MoneyDataNum[index]) do
|
|
table.insert(tempData, activityRewardConfig[missionInfo.missionId])
|
|
end
|
|
|
|
-- self.rewardValue.text = tempData[1].TotalValues
|
|
for i, dayRewardItem in ipairs(self.dayRewardList) do
|
|
dayRewardItem.gameObject:SetActive(false)
|
|
end
|
|
|
|
for i = 1,math.max(#self.dayRewardList,#tempData) do
|
|
if not tempData[i] then
|
|
self.dayRewardList[i].gameObject:SetActive(false)
|
|
else
|
|
if not self.dayRewardList[i] then
|
|
--local go = newObjToParent(self.rewardDay,self.rewardGrid)
|
|
local go=self.rewardGrid.transform:GetChild(i-1).gameObject
|
|
self.dayRewardList[i] = DayRewardItem.new(self,go)
|
|
end
|
|
self.dayRewardList[i].gameObject:SetActive(true)
|
|
self.dayRewardList[i]:SetValue(tempData[i],self.sortingOrder)
|
|
end
|
|
end
|
|
end
|
|
|
|
-- function FirstRechargePanel:SetOncePart()
|
|
-- for _, rewardInfo in ConfigPairs(activityRewardConfig) do
|
|
-- if rewardInfo.ActivityId == ActivityTypeDef.FirstRecharge then
|
|
-- self.itemInfo:OnOpen(false, rewardInfo.Reward[1], 1,false,false,false,self.sortingOrder)
|
|
-- break
|
|
-- end
|
|
-- end
|
|
-- end
|
|
|
|
function FirstRechargePanel:OnRechargeBtnClicked()
|
|
if isPay then
|
|
return
|
|
end
|
|
PayManager.Pay(rechargeId,function()
|
|
--self:OnShow()
|
|
self.activityInfo = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.FirstRecharge)
|
|
_MoneyDataNum = {}
|
|
for _, missInfo in ipairs(self.activityInfo.mission) do
|
|
if missInfo and missInfo.progress then
|
|
-- 获取充值额度
|
|
AccumRecharge = missInfo.progress
|
|
--LogError("missInfo.missionId=="..missInfo.missionId)
|
|
-- 构建数据
|
|
local money = activityRewardConfig[missInfo.missionId].Values[1][1]
|
|
--LogError("money===="..money)
|
|
--local index = FirstRechargeManager.GetFirstRechargeIndexByMoney(money)
|
|
local index=0
|
|
if money==10000 then
|
|
index=1
|
|
else
|
|
index=2
|
|
end
|
|
if _MoneyDataNum[index]==nil then
|
|
_MoneyDataNum[index] = {}
|
|
end
|
|
table.insert(_MoneyDataNum[index], missInfo)
|
|
end
|
|
end
|
|
self.reChargeTips.text = Language[10664]..string.format(MoneyUtil.GetMoneyUnitName(),AccumRecharge)--string.format(Language[10665], AccumRecharge)
|
|
self:OnTabChanged(self.selectTabIndex)
|
|
for i = 1, kMaxTab do
|
|
self:SetTabRedPointStatus(i)
|
|
end
|
|
-- 判断页签切换是否显示
|
|
Util.GetGameObject(self.transform, "frame/tabsContent"):SetActive(table.nums(_MoneyDataNum)>1)
|
|
end)
|
|
--JumpManager.GoJump(36004)
|
|
-- if not ShopManager.IsActive(SHOP_TYPE.SOUL_STONE_SHOP) then
|
|
-- PopupTipPanel.ShowTip(Language[10422])
|
|
-- return
|
|
-- end
|
|
-- self:ClosePanel()
|
|
-- if SERVER_VERSION == 1 then
|
|
-- JumpManager.GoJump(36010)
|
|
-- else
|
|
-- if ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.XinRenShop) then
|
|
-- JumpManager.GoJump(36012)
|
|
-- else
|
|
-- JumpManager.GoJump(36008)
|
|
-- end
|
|
-- end
|
|
|
|
end
|
|
|
|
function FirstRechargePanel:SetTabRedPointStatus(tabIndex)
|
|
--LogError("tabIndex=="..tabIndex)
|
|
local redPointStatus = FirstRechargeManager.GetRedPointStatus(tabIndex)
|
|
self.tabRedPoint[tabIndex]:SetActive(redPointStatus)
|
|
end
|
|
--界面关闭时调用(用于子类重写)
|
|
function FirstRechargePanel:OnClose()
|
|
if fun then
|
|
fun()
|
|
fun = nil
|
|
end
|
|
self.rewardGrid.transform.localPosition = self.rewardGridPos
|
|
end
|
|
|
|
function FirstRechargePanel:OnDestroy()
|
|
self.spLoader:Destroy()
|
|
for i = 1, kMaxDay do
|
|
self.dayRewardList[i]:Dispose()
|
|
end
|
|
self.dayRewardList = {}
|
|
end
|
|
return FirstRechargePanel |