miduo_client/Assets/ManagedResources/~Lua/Modules/TreasureOfHeaven/EndLessTreasurePanel.lua

271 lines
11 KiB
Lua

require("Base/BasePanel")
local EndLessTreasurePanel = Inherit(BasePanel)
local itemnum = 0
--初始化组件(用于子类重写)
function EndLessTreasurePanel:InitComponent()
--topBar/btnBack
self.btnBack = Util.GetGameObject(self.transform, "bg/btnBack")
self.buyBtn = Util.GetGameObject(self.transform, "bg/topBar/buyBtn")
self.Text1 = Util.GetGameObject(self.buyBtn, "buy"):GetComponent("Text")
self.tips = Util.GetGameObject(self.transform, "bg/topBar/tips"):GetComponent("Text")
self.time = Util.GetGameObject(self.transform, "bg/topBar/time"):GetComponent("Text")
self.quesBtn = Util.GetGameObject(self.transform, "bg/quesBtn")
self.helpPosition = self.quesBtn:GetComponent("RectTransform").localPosition
--Content
self.scoreText = Util.GetGameObject(self.transform, "bg/pageContent/bg/score/number"):GetComponent("Text")
self.treasureList = Util.GetGameObject(self.transform, "bg/pageContent/treasureList")
self.itemPre = Util.GetGameObject(self.transform, "bg/pageContent/itemPro")
self.itemPos = Util.GetGameObject(self.transform, "bg/pageContent/itemPos")
--设置滚动条
self.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, self.treasureList.transform, self.itemPre, nil,
Vector2.New(950, 1000), 1, 1, Vector2.New(100, 25))
self.ScrollView.gameObject:GetComponent("RectTransform").anchoredPosition = Vector2.New(0, 0)
self.ScrollView.gameObject:GetComponent("RectTransform").anchorMin = Vector2.New(0.5, 0.5)
self.ScrollView.gameObject:GetComponent("RectTransform").anchorMax = Vector2.New(0.5, 0.5)
self.ScrollView.gameObject:GetComponent("RectTransform").pivot = Vector2.New(0.5, 0.5)
self.ScrollView.moveTween.MomentumAmount = 1
self.ScrollView.moveTween.Strength = 2
end
--绑定事件(用于子类重写)
function EndLessTreasurePanel:BindEvent()
Util.AddClick(self.btnBack, function()
self:ClosePanel()
end)
Util.AddClick(self.quesBtn, function()
UIManager.OpenPanel(UIName.HelpPopup, 93, self.helpPosition.x, self.helpPosition.y)
end)
end
function EndLessTreasurePanel:OnSortingOrderChange()
end
--添加事件监听(用于子类重写)
function EndLessTreasurePanel:AddListener()
Game.GlobalEvent:AddEvent(GameEvent.EndLess.RechargeQinglongSerectSuccess, self.refresh, self)
Game.GlobalEvent:AddEvent(GameEvent.EndLess.QinglongSerectRefresh, self.OnShow, self)
end
--移除事件监听(用于子类重写)
function EndLessTreasurePanel:RemoveListener()
Game.GlobalEvent:RemoveEvent(GameEvent.EndLess.RechargeQinglongSerectSuccess, self.refresh, self)
Game.GlobalEvent:AddEvent(GameEvent.EndLess.QinglongSerectRefresh, self.OnShow, self)
end
--界面打开时调用(用于子类重写)
function EndLessTreasurePanel:OnOpen(...)
end
-- 打开,重新打开时回调
function EndLessTreasurePanel:OnShow()
self.treasureData = EndLessMapManager.treasureData
self.tips.text = GetLanguageStrById(self.treasureData.tip)
--self.time.gameObject:SetActive(false)
self.time.text = Language[10401] .. TimeToDHMS(self.treasureData.resetTime - GetTimeStamp())
self:ShowTime()
self:topBar()
self:showTaskList(true, true)
end
function EndLessTreasurePanel:refresh(isTop, isAni)
self:topBar()
self:showTaskList(isTop, isAni)
end
--topBar按钮状态
function EndLessTreasurePanel:topBar()
--设置礼包购买按钮状态
self.buyBtn:GetComponent("Button").interactable = self.treasureData.treasureState == 0
self.Text1.text = self.treasureData.treasureState == 0 and Language[11039] or Language[10723]
Util.AddOnceClick(self.buyBtn, function()
UIManager.OpenPanel(UIName.GeneralPopup, GENERAL_POPUP_TYPE.HeavenUnlockExtraRewardPanel, 3)
end)
end
--任务列表
function EndLessTreasurePanel:showTaskList(isTop, isAni)
itemnum = BagManager.GetItemCountById(EndLessMapManager.scoreValueId) or 0
self.scoreText.text = itemnum
if not self.itemsList then
self.itemsList = {}
end
self.ScrollView:SetData(self.treasureData.rewardData, function(index, rewardItem)
self:SingleTask(rewardItem, self.treasureData.rewardData[index])
end, not isTop, not isAni)
--4 未达成 3 可再次领取 2 可领取 1 已领取 -1 完美领取(充钱领取过的)
--定位打开界面时位置
local t = 0
for i = 1, #self.treasureData.rewardData do
if self.treasureData.rewardData[i].state == 2 or self.treasureData.rewardData[i].state == 3 then
t = i
break
end
end
if t == 0 then
for i = 1, #self.treasureData.rewardData do
if self.treasureData.rewardData[i].state == 4 or self.treasureData.rewardData[i].state == 4 then
t = i
break
end
end
end
self.ScrollView:SetIndex(t)
end
--单个任务
function EndLessTreasurePanel:SingleTask(rewardItem, singleData)
local scoreLevel = Util.GetGameObject(rewardItem, "scoreLevel"):GetComponent("Text")
local scroll1 = Util.GetGameObject(rewardItem, "scroll1")
local scroll2 = Util.GetGameObject(rewardItem, "scroll2")
if not self.itemsList[rewardItem] then
self.itemsList[rewardItem] = {}
end
for k, v in pairs(self.itemsList[rewardItem]) do
v.gameObject:SetActive(false)
end
for i = 1, #singleData.Reward do
local parent
if singleData.Reward[i].type == 1 then
parent = scroll1
else
parent = scroll2
end
if not self.itemsList[rewardItem][i] then
self.itemsList[rewardItem][i] = SubUIManager.Open(SubUIConfig.ItemView, parent.transform)
end
self.itemsList[rewardItem][i].transform:SetParent(parent.transform)
self.itemsList[rewardItem][i].transform.localScale = Vector3.one
self.itemsList[rewardItem][i].transform.localPosition = Vector3.zero
self.itemsList[rewardItem][i].gameObject:SetActive(true)
self.itemsList[rewardItem][i]:OnOpen(false, { singleData.Reward[i].id, singleData.Reward[i].num }, 0.8, false)
end
scoreLevel.text = singleData.Level
--初始化按钮状态
self:InitButtonState(rewardItem, singleData)
end
--初始化按钮状态
function EndLessTreasurePanel:InitButtonState(rewardItem, singleData)
local btnDeal = Util.GetGameObject(rewardItem, "btnDeal")
local get = Util.GetGameObject(rewardItem, "btnDeal/get")
local getAgain = Util.GetGameObject(rewardItem, "btnDeal/getAgain")
local unfinished = Util.GetGameObject(rewardItem, "btnDeal/unfinished")
local finished = Util.GetGameObject(rewardItem, "finished")
local redPoint = Util.GetGameObject(rewardItem, "btnDeal/redPoint")
--当前任务领取情况
local state = singleData.state
--4 未达成 3 可再次领取 2 可领取 1 已领取 -1 完美领取(充钱领取过的)
--判断
if state == 4 then
btnDeal.gameObject:SetActive(true)
get.gameObject:SetActive(false)
getAgain.gameObject:SetActive(false)
unfinished.gameObject:SetActive(true)
finished.gameObject:SetActive(false)
redPoint:SetActive(false)
elseif state == 3 then
btnDeal.gameObject:SetActive(true)
get.gameObject:SetActive(false)
getAgain.gameObject:SetActive(true)
unfinished.gameObject:SetActive(false)
finished.gameObject:SetActive(false)
redPoint:SetActive(true)
elseif state == 2 then
btnDeal.gameObject:SetActive(true)
get.gameObject:SetActive(true)
getAgain.gameObject:SetActive(false)
unfinished.gameObject:SetActive(false)
finished.gameObject:SetActive(false)
redPoint:SetActive(true)
elseif state == 1 then
btnDeal.gameObject:SetActive(true)
get.gameObject:SetActive(false)
getAgain.gameObject:SetActive(true)
unfinished.gameObject:SetActive(false)
finished.gameObject:SetActive(false)
redPoint:SetActive(false)
elseif state == -1 then
btnDeal.gameObject:SetActive(false)
get.gameObject:SetActive(false)
getAgain.gameObject:SetActive(false)
unfinished.gameObject:SetActive(false)
finished.gameObject:SetActive(true)
redPoint:SetActive(false)
end
--添加点击事件
Util.AddOnceClick(btnDeal, function()
self:OnBtnDealClicked(rewardItem, singleData)
end)
--红点状态
--redPoint:SetActive(TreasureOfHeavenManger.RedPointState(singleData,self.treasureData.treasureState))
end
--按钮事件
function EndLessTreasurePanel:OnBtnDealClicked(rewardItem, singleData)
local btnDeal = Util.GetGameObject(rewardItem, "btnDeal")
local get = Util.GetGameObject(rewardItem, "btnDeal/get")
local getAgain = Util.GetGameObject(rewardItem, "btnDeal/getAgain")
local unfinished = Util.GetGameObject(rewardItem, "btnDeal/unfinished")
local finished = Util.GetGameObject(rewardItem, "btnDeal/finished")
if singleData.state == 4 then
PopupTipPanel.ShowTip(Language[11040])
elseif singleData.state == 3 or singleData.state == 2 then
NetManager.EndlessTakeTreasureRequest(singleData.Id, function(msg)
UIManager.OpenPanel(UIName.RewardItemPopup, msg.drop, 1, function()
--需要刷新界面
if self.treasureData.treasureState == 0 then --判断是否已经购买了礼包
EndLessMapManager.SetTreasureState(singleData.Id, 1)
else
EndLessMapManager.SetTreasureState(singleData.Id, -1)
end
CheckRedPointStatus(RedPointType.wujinTreasure)
CheckRedPointStatus(RedPointType.EndlessPanel)
self:refresh() --刷新界面
end)
end)
elseif singleData.state == 1 then
UIManager.OpenPanel(UIName.GeneralPopup, GENERAL_POPUP_TYPE.HeavenUnlockExtraRewardPanel, 3)
end
end
function EndLessTreasurePanel:ShowTime()
if self.localTimer then
self.localTimer:Stop()
self.localTimer = nil
end
local time = self.treasureData.resetTime - GetTimeStamp()
if time <= 0 then
return
end
self.localTimer = Timer.New(function()
time = time - 1
if time <= 0 then
self.time.text = Language[10401] .. TimeToDHMS(0)
self.localTimer:Stop()
self.localTimer = nil
return
end
self.time.text = Language[10401] .. TimeToDHMS(time)
end, 1, -1, true)
self.localTimer:Start()
end
--界面关闭时调用(用于子类重写)
function EndLessTreasurePanel:OnClose()
if self.localTimer then
self.localTimer:Stop()
self.localTimer = nil
end
end
--界面销毁时调用(用于子类重写)
function EndLessTreasurePanel:OnDestroy()
rewardData = {}
end
return EndLessTreasurePanel