miduo_client/Assets/ManagedResources/~Lua/Modules/DailyRecharge/DailyRechargePanel.lua

386 lines
16 KiB
Lua

local DailyRechargePanel = quick_class("DailyRechargePanel", BasePanel)
local actRewardConfig = ConfigManager.GetConfig(ConfigName.ActivityRewardConfig)
local kMaxReward = 4
local index = 0
local cursortingOrder
local isFirstOpen = false
local missionIndex = {
[18] = { selectIma = "r_mrcz_18_zh", selectImaRMB = "r_mrcz_18_zh", defaultIma = "r_mrcz_1801_zh", defaultImaRMB = "r_mrcz_1801_zh" },
[30] = { selectIma = "r_mrcz_30_zh", selectImaRMB = "r_mrcz_30_zh", defaultIma = "r_mrcz_3001_zh", defaultImaRMB = "r_mrcz_3001_zh" },
[68] = { selectIma = "r_mrcz_68_zh", selectImaRMB = "r_mrcz_68_zh", defaultIma = "r_mrcz_6801_zh", defaultImaRMB = "r_mrcz_6801_zh" },
[98] = { selectIma = "r_mrcz_98_zh", selectImaRMB = "r_mrcz_98_zh", defaultIma = "r_mrcz_9801_zh", defaultImaRMB = "r_mrcz_9801_zh" },
[128] = { selectIma = "r_mrcz_128_zh", selectImaRMB = "r_mrcz_128_zh", defaultIma = "r_mrcz_12801_zh", defaultImaRMB = "r_mrcz_12801_zh" },
[198] = { selectIma = "r_mrcz_198_zh", selectImaRMB = "r_mrcz_198_zh", defaultIma = "r_mrcz_19801_zh", defaultImaRMB = "r_mrcz_19801_zh" },
[328] = { selectIma = "r_mrcz_328_zh", selectImaRMB = "r_mrcz_328_zh", defaultIma = "r_mrcz_32801_zh", defaultImaRMB = "r_mrcz_32801_zh" },
[648] = { selectIma = "r_mrcz_648_zh", selectImaRMB = "r_mrcz_648_zh", defaultIma = "r_mrcz_64801_zh", defaultImaRMB = "r_mrcz_64801_zh" },
[50] = { selectIma = "r_mrcz_50_zh", selectImaRMB = "r_mrcz_50_zh", defaultIma = "r_mrcz_5001_zh", defaultImaRMB = "r_mrcz_5001_zh" },
[100] = { selectIma = "r_mrcz_100_zh", selectImaRMB = "r_mrcz_100_zh", defaultIma = "r_mrcz_10001_zh", defaultImaRMB = "r_mrcz_10001_zh" },
}
function DailyRechargePanel:InitComponent()
self.spLoader = SpriteLoader.New()
cursortingOrder = 0
self.backBtnNew = Util.GetGameObject(self.transform, "BG")
self.backBtn = Util.GetGameObject(self.transform, "frame")
self.title = Util.GetGameObject(self.backBtn, "bg/title"):GetComponent("Image")
self.select = Util.GetGameObject(self.backBtn, "bg/select")
--self.selectIma = Util.GetGameObject(self.select, "Text"):GetComponent("Image")
self.selectIma = Util.GetGameObject(self.select, "Text"):GetComponent("Text")
self.grid = Util.GetGameObject(self.backBtn, "bg/grid")
self.items = {}
for i = 1, self.grid.transform.childCount do
self.items[i] = {}
self.items[i].go = Util.GetGameObject(self.grid, "item" .. i)
--self.items[i].priceText = Util.GetGameObject(self.items[i].go,"Text"):GetComponent("Image")
self.items[i].priceText = Util.GetGameObject(self.items[i].go, "Text"):GetComponent("Text")
self.items[i].redpot = Util.GetGameObject(self.items[i].go, "red")
end
--提示框
self.titleParent = Util.GetGameObject(self.backBtn, "bg/Image")
self.titleParent.gameObject:SetActive(true)
self.titleIcon = Util.GetGameObject(self.titleParent, "icon"):GetComponent("Image")
self.titleText = Util.GetGameObject(self.titleParent, "Text"):GetComponent("Text")
self.extra = Util.GetGameObject(self.backBtn, "bg/descbg")
self.extraIcon = Util.GetGameObject(self.extra, "extraIcon"):GetComponent("Image")
local extraTip1 = Util.GetGameObject(self.extra, "tip1"):GetComponent("Text")
local extraTip2 = Util.GetGameObject(self.extra, "tip"):GetComponent("Text")
extraTip1.gameObject:SetActive(false)
extraTip2.gameObject:SetActive(false)
if ServerConfigManager.IsSettingActive(ServerConfigManager.SettingConfig.CURVED_TEXT_CODE) then
self.extraTip = extraTip2
else
self.extraTip = extraTip1
end
self.extraTip.gameObject:SetActive(true)
self.rewardContent = {}
self.rewardContentEffect = {}
self.rewardContentbg = {}
self.rewardList = {}
for i = 1, kMaxReward do
self.rewardContent[i] = Util.GetGameObject(self.backBtn, "bg/rewardContent/itemPos_" .. i)
self.rewardContentEffect[i] = Util.GetGameObject(self.rewardContent[i], "Kuang")
self.rewardContentbg[i] = Util.GetGameObject(self.rewardContent[i], "Image")
effectAdapte(self.rewardContentEffect[i])
self.rewardList[i] = SubUIManager.Open(SubUIConfig.ItemView, self.rewardContent[i].transform)
end
self.dealBtn = Util.GetGameObject(self.backBtn, "bg/dealBtn")
self.dealText = Util.GetGameObject(self.dealBtn, "Text"):GetComponent("Text")
self.dealTipText = Util.GetGameObject(self.dealBtn, "tip"):GetComponent("Text")
self.UI_effect_DailyRechargePanel_particle = Util.GetGameObject(self.transform,
"frame/UI_effect_DailyRechargePanel_particle")
if self.moneyNum then
SubUIManager.Close(self.moneyNum)
self.moneyNum = nil
end
if not self.moneyNum then
self.moneyNum = SubUIManager.Open(SubUIConfig.MoneyNumView, self.extra.transform,
0, MoneyNumViewType.Image_Horizontal, "LevelFont", 42, 0.85, Vector2.New(60, 100), Vector2.New(20, -7.44),
MoneyNumViewImageType.Big_1)
end
self.moneyNum.transform:SetSiblingIndex(2)
end
function DailyRechargePanel:BindEvent()
Util.AddClick(self.backBtnNew, function()
if not isFirstOpen then
self:ClosePanel()
end
end)
Util.AddClick(self.dealBtn, function()
if not isFirstOpen then
self:OnDealBtnClicked()
end
end)
for i = 1, #self.items do
Util.AddClick(self.items[i].go, function()
if i ~= index then
index = i
self:RefreshPanel()
end
end)
end
end
function DailyRechargePanel:OnOpen(actType)
self.actType = actType
LogGreen("self.actType:" .. self.actType)
self.data = {}
if self.actType == ActivityTypeDef.DailyRecharge then
self.data.title = "r_mrcz_biaoti_zh"
self.data.tip = Language[10499]
self.data.tip2 = Language[10499]
else
self.data.title = "r_yunmenghaoli"
self.data.tip = Language[10500]
self.data.tip2 = Language[10501]
end
isFirstOpen = true
Timer.New(function()
isFirstOpen = false
end, 1.5):Start()
end
function DailyRechargePanel:AddListener()
end
function DailyRechargePanel:RemoveListener()
end
function DailyRechargePanel:OnSortingOrderChange()
Util.AddParticleSortLayer(self.UI_effect_DailyRechargePanel_particle, self.sortingOrder - cursortingOrder)
for i = 1, #self.rewardContentEffect do
Util.AddParticleSortLayer(self.rewardContentEffect[i], self.sortingOrder - cursortingOrder)
end
cursortingOrder = self.sortingOrder
end
function DailyRechargePanel:OnShow()
self.actInfo = ActivityGiftManager.GetActivityTypeInfo(self.actType)
self.title.sprite = self.spLoader:LoadSprite(self.data.title)
self.title:SetNativeSize()
self.titleText.text = GetLanguageStrById(self.data.tip)
if self.actType == 93 then
local freshTime = self.actInfo.endTime - GetTimeStamp()
local update = function()
self.dealTipText.text = Language[10026] .. TimeToFelaxible(freshTime)
end
update()
self.localTimer = Timer.New(function()
freshTime = freshTime - 1
update()
if freshTime <= 0 then
self:ClosePanel()
end
end, 1, -1, true)
self.localTimer:Start()
-- self.dealTipText.text = self.data.tip2
else
self.dealTipText.gameObject:SetActive(false)
end
if not self.actInfo then
self:ClosePanel()
return
end
self.activityId = self.actInfo.activityId
--
if self.actType == ActivityTypeDef.yunmenghaoli then
PlayerPrefs.SetInt(PlayerManager.uid .. "_YunMeng_Check" .. self.activityId, 1)
CheckRedPointStatus(RedPointType.yunmenghaoli)
end
--
if #self.actInfo.mission > 1 then
self.grid.gameObject:SetActive(true)
else
self.grid.gameObject:SetActive(false)
end
self:SetGrid()
self:RefreshPanel()
end
function DailyRechargePanel:SetGrid()
LogGreen("#self.actInfo.mission:" .. #self.actInfo.mission)
for i = 1, math.max(#self.actInfo.mission, #self.items) do
if not self.items[i] then
return
end
if not self.actInfo.mission[i] then
self.items[i].go.gameObject:SetActive(false)
else
self.items[i].go.gameObject:SetActive(true)
local config = actRewardConfig[self.actInfo.mission[i].missionId]
if config and config.ActivityId == self.activityId then
-- if MoneyUtil.MT == MoneyType.RMB then
-- self.items[i].priceText.sprite = self.spLoader:LoadSprite(missionIndex[config.Values[1][1]].defaultImaRMB)
-- else
-- self.items[i].priceText.sprite = self.spLoader:LoadSprite(missionIndex[config.Values[1][1]].defaultIma)
-- end
self.items[i].priceText.text = MoneyUtil.GetMoneyUnitNameWithMoney(config.Values[1][1])
self.items[i].priceText:SetNativeSize()
else
self.items[i].go.gameObject:SetActive(false)
end
end
end
index = 0
for i = 1, #self.actInfo.mission do
if self.actInfo.mission[i].state == 2 then
index = i
break
end
end
if index == 0 then
for i = 1, #self.actInfo.mission do
if self.actInfo.mission[i].state == 0 then
index = i
break
end
end
end
if index == 0 then
index = #self.actInfo.mission
end
end
function DailyRechargePanel:OnClose()
index = 0
end
function DailyRechargePanel:OnDestroy()
self.spLoader:Destroy()
if self.moneyNum then
SubUIManager.Close(self.moneyNum)
self.moneyNum = nil
end
index = 0
end
local icon = {
[0] = "r_mrcz_zi_111_zh",
[1] = "r_mrcz_zi_33_zh",
[2] = "r_mrcz_danbichognzhi",
}
function DailyRechargePanel:SetSelectBtn()
self.select.gameObject:SetActive(true)
self.select.transform:SetParent(self.items[index].go.transform)
self.select.transform:SetSiblingIndex(1)
self.select.transform.localPosition = Vector3.zero
self.selectIma.text = MoneyUtil.GetMoneyUnitNameWithMoney(actRewardConfig[self.actInfo.mission[index].missionId]
.Values[1][1])
-- if MoneyUtil.MT == MoneyType.RMB then
-- self.selectIma.sprite = self.spLoader:LoadSprite(missionIndex[actRewardConfig[self.actInfo.mission[index].missionId].Values[1][1]].selectImaRMB)
-- else
-- self.selectIma.sprite = self.spLoader:LoadSprite(missionIndex[actRewardConfig[self.actInfo.mission[index].missionId].Values[1][1]].selectIma)
-- end
--self.selectIma:SetNativeSize()
end
function DailyRechargePanel:RefreshPanel()
self:SetSelectBtn()
self.missionInfo = self.actInfo.mission[index]
local actRewardConfig1 = actRewardConfig[self.missionInfo.missionId]
if self.actType == ActivityTypeDef.DailyRecharge then
self.titleIcon.gameObject:SetActive(true)
self.moneyNum:SetOffsetPosition(Vector2.New(480, -90))
self.moneyNum:SetOffsetRotation(Vector3.New(0, 0, -10))
if self.missionInfo.state == 0 then
self.dealTipText.gameObject:SetActive(true)
if DailyRechargeManager.ReceivedEnabled(self.missionInfo.missionId) then
self.extraIcon.sprite = self.spLoader:LoadSprite(icon[1])
self.extraTip.gameObject:SetActive(false)
self.dealText.text = Language[10018]
self.moneyNum.gameObject:SetActive(false)
else
self.extraIcon.sprite = self.spLoader:LoadSprite(icon[0])
self.extraTip.gameObject:SetActive(true)
self.extraTip.text = GetLanguageStrById(actRewardConfig1.ContentsShow)
self.dealText.text = Language[10502]
self.moneyNum.gameObject:SetActive(true)
local dailyActInfo = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.DailyRecharge)
self.moneyNum:SetNumShow(1, (actRewardConfig1.Values[1][1] - dailyActInfo.value))
end
else
self.extraIcon.sprite = self.spLoader:LoadSprite(icon[1])
self.extraTip.gameObject:SetActive(false)
self.dealText.text = Language[10025]
self.moneyNum.gameObject:SetActive(false)
self.dealTipText.gameObject:SetActive(false)
end
else
self.moneyNum:SetOffsetPosition(Vector2.New(436.4, -99.24))
self.moneyNum:SetOffsetRotation(Vector3.New(0, 0, 0))
self.titleIcon.gameObject:SetActive(false)
self.extraTip.gameObject:SetActive(true)
self.extraIcon.sprite = self.spLoader:LoadSprite(icon[2])
self.moneyNum.gameObject:SetActive(true)
self.moneyNum:SetNumShow(1, actRewardConfig1.Values[1][1])
self.moneyNum:SetRateEnabled(false)
self.extraTip.text = GetLanguageStrById(actRewardConfig1.ContentsShow)
self.dealTipText.gameObject:SetActive(true)
if self.missionInfo.state == 0 then
self.dealText.text = Language[10502]
elseif self.missionInfo.state == 2 then
self.dealText.text = Language[10018]
else
self.dealTipText.gameObject:SetActive(false)
self.dealText.text = Language[10025]
end
end
self.extraIcon:SetNativeSize()
table.walk(self.rewardList, function(rewardPosItem)
rewardPosItem.gameObject:SetActive(false)
end)
table.walk(self.rewardContent, function(rewardPosItem)
rewardPosItem.gameObject:SetActive(false)
end)
table.walk(self.rewardContentbg, function(rewardPosItem)
rewardPosItem.gameObject:SetActive(false)
end)
for i, rewardInfo in ipairs(actRewardConfig1.Reward) do
self.rewardContent[i].gameObject:SetActive(true)
end
self.thread = coroutine.start(function()
coroutine.wait(0.2)
for i, rewardInfo in ipairs(actRewardConfig1.Reward) do
self.rewardList[i]:OnOpen(false, rewardInfo, 1.1)
self.rewardList[i].gameObject:SetActive(true)
self.rewardContentbg[i].gameObject:SetActive(true)
end
end)
SetTextVerTial(self.titleText, Vector3.New(102.07, 18.2, 0))
-- 刷新红点显示
self:RefreshRedShow()
end
function DailyRechargePanel:OnDealBtnClicked()
if self.missionInfo.state == 1 then
PopupTipPanel.ShowTip(Language[10503])
else
if DailyRechargeManager.ReceivedEnabled(self.missionInfo.missionId) or self.missionInfo.state == 2 then
NetManager.GetActivityRewardRequest(self.missionInfo.missionId, self.activityId, function(_drop)
UIManager.OpenPanel(UIName.RewardItemPopup, _drop, 1)
self:RefreshPanel()
Game.GlobalEvent:DispatchEvent(GameEvent.Activity.OnActivityOpenOrClose, { type = self.actType })
CheckRedPointStatus(RedPointType.DailyRecharge)
CheckRedPointStatus(RedPointType.yunmenghaoli)
end)
else
JumpManager.GoJump(actRewardConfig[self.missionInfo.missionId].Jump[1], function(isJump)
if isJump then
self:ClosePanel()
end
end)
end
end
end
-- 刷新界面红点显示
function DailyRechargePanel:RefreshRedShow()
for i = 1, #self.actInfo.mission do
if self.items[i] and self.items[i].redpot then
if (self.actInfo.mission[i].state == 0 and DailyRechargeManager.ReceivedEnabled(self.actInfo.mission[i].missionId))
or self.actInfo.mission[i].state == 2 then
self.items[i].redpot:SetActive(true)
else
self.items[i].redpot:SetActive(false)
end
end
end
end
return DailyRechargePanel