miduo_client/Assets/ManagedResources/~Lua/Modules/FifteenDayGift/FifteenDayGiftPanel.lua

210 lines
7.1 KiB
Lua
Raw Normal View History

2021-03-31 15:02:04 +08:00
require("Base/BasePanel")
local FifteenDayGift = Inherit(BasePanel)
local this = FifteenDayGift
local sortingOrder = 0
2021-04-01 16:04:13 +08:00
local Data
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
local itemList = {}
2021-04-01 17:44:44 +08:00
local ItemViewList = {}
local frontList = {}
local backList = {}
2021-04-01 16:04:13 +08:00
local angle = {
[1] = Quaternion.Euler(Vector3.New(0, 0, 0)),
[2] = Quaternion.Euler(Vector3.New(0, 90, 0)),
}
2021-03-31 15:02:04 +08:00
--初始化组件(用于子类重写)
function FifteenDayGift:InitComponent()
2021-04-01 16:04:13 +08:00
self.backBtn1 = Util.GetGameObject(self.gameObject,"Content/btnBack1")
self.backBtn2 = Util.GetGameObject(self.gameObject,"Content/btnBack2")
self.backBtn3 = Util.GetGameObject(self.gameObject,"Content/btnBack3")
self.btnGet = Util.GetGameObject(self.gameObject,"Content/btnGet")
2021-04-02 11:53:07 +08:00
self.redPoint = Util.GetGameObject(self.btnGet,"redPoint")
2021-04-01 16:04:13 +08:00
self.rewardGrid = Util.GetGameObject(self.gameObject,"Content/RewardGrid")
self.effect1 = Util.GetGameObject(self.gameObject,"Content/UI_Effect_MianBan_15Day_DengLu")
self.effect2 = Util.GetGameObject(self.gameObject,"Content/UI_Effect_MianBan_BaiZe_01")
self.effect2:SetActive(false)
2021-04-01 16:04:13 +08:00
for i = 1, self.rewardGrid.transform.childCount do
table.insert(itemList, self.rewardGrid.transform:GetChild(i - 1))
end
2021-03-31 15:02:04 +08:00
end
--绑定事件(用于子类重写)
function FifteenDayGift:BindEvent()
2021-04-01 16:04:13 +08:00
Util.AddClick(self.backBtn1,function ()
2021-03-31 15:02:04 +08:00
self:ClosePanel()
end)
2021-03-31 17:00:35 +08:00
Util.AddClick(self.backBtn2,function ()
self:ClosePanel()
end)
2021-04-01 16:04:13 +08:00
Util.AddClick(self.backBtn3,function ()
2021-04-02 19:06:08 +08:00
self:ClosePanel()
2021-04-01 16:04:13 +08:00
end)
Util.AddClick(self.btnGet,function ()
2021-04-01 17:44:44 +08:00
if #frontList == 0 then
PopupTipPanel.ShowTip("暂无可领取的奖励~")
return
end
NetManager.GetActivityRewardRequest(-1,Data.activityId,function (drop)
for i = 1, #frontList do
local thread=coroutine.start(function()
frontList[i].transform:DORotate(Vector3.New(0, 90, 0), 0.3)
coroutine.wait(0.3)
frontList[i]:SetActive(false)
backList[i].transform:DORotate(Vector3.New(0, 0, 0), 0.3)
2021-04-02 19:06:08 +08:00
coroutine.wait(1)
2021-04-01 17:44:44 +08:00
end)
end
2021-04-02 19:06:08 +08:00
--奖励界面
local func = function (drop)
UIManager.OpenPanel(UIName.RewardItemPopup, drop, 1,function()
FifteenDayGift:Refresh()
CheckRedPointStatus(RedPointType.FifteenDayGift_1)
end)
2021-04-02 19:06:08 +08:00
end
Timer.New(function ()
--检测奖励是否为灵兽
if drop.pokemon and #drop.pokemon >= 1 then
local thread=coroutine.start(function()
self.effect2:SetActive(true)
2021-04-08 11:26:05 +08:00
coroutine.wait(3)
2021-04-02 19:06:08 +08:00
UIManager.OpenPanel(UIName.PokemonSingleResultPanel,nil,drop,nil,nil,function ()
self.effect2:SetActive(false)
func(drop)
end)
end)
else
func(drop)
end
end,0.5):Start()
2021-04-01 17:44:44 +08:00
end)
2021-04-01 16:04:13 +08:00
end)
2021-04-02 11:53:07 +08:00
BindRedPointObject(RedPointType.FifteenDayGift_1,self.redPoint)
2021-03-31 15:02:04 +08:00
end
--添加事件监听(用于子类重写)
function FifteenDayGift:AddListener()
end
--移除事件监听(用于子类重写)
function FifteenDayGift:RemoveListener()
end
function FifteenDayGift:OnSortingOrderChange()
Util.AddParticleSortLayer(self.effect1, self.sortingOrder - sortingOrder)
Util.AddParticleSortLayer(self.effect2, self.sortingOrder - sortingOrder)
2021-04-01 16:04:13 +08:00
sortingOrder = self.sortingOrder
2021-03-31 15:02:04 +08:00
end
--界面打开时调用(用于子类重写)
function FifteenDayGift:OnOpen()
end
-- 打开,重新打开时回调
function FifteenDayGift:OnShow()
2021-04-01 16:04:13 +08:00
FifteenDayGift:Refresh()
end
function FifteenDayGift:Refresh()
Data = FifteenDayGiftManager.GetData()
2021-04-02 11:53:07 +08:00
CheckRedPointStatus(RedPointType.FifteenDayGift_1)
2021-04-01 17:44:44 +08:00
if self.timer then
self.timer:Stop()
self.timer = nil
end
frontList = {}
backList = {}
2021-04-01 16:04:13 +08:00
FifteenDayGift:SetReward()
end
function FifteenDayGift:SetReward()
if Data and #Data.rewards > 0 then
for i = 1, #itemList do
FifteenDayGift:SetSingleReward(Data.rewards[i],itemList[i],i)
end
end
end
function FifteenDayGift:SetSingleReward(sData,go,index)
local front = Util.GetGameObject(go,"front")
local name = Util.GetGameObject(front,"name"):GetComponent("Text")
local icon = Util.GetGameObject(front,"icon"):GetComponent("Image")
local num = Util.GetGameObject(front,"num"):GetComponent("Text")
2021-04-01 16:04:13 +08:00
local back = Util.GetGameObject(go,"back")
local red = Util.GetGameObject(front,"red")
red:SetActive(false)
2021-04-01 16:04:13 +08:00
local curTime = GetTimeStamp()
2021-04-01 17:44:44 +08:00
--弄一个ItemView提供点击方法
if not ItemViewList[index] then
local view = SubUIManager.Open(SubUIConfig.ItemView,icon.transform)
ItemViewList[index] = view
end
ItemViewList[index]:OnOpen(false,sData.Reward,0,false)
ItemViewList[index].gameObject:SetActive(false)
2021-04-01 16:04:13 +08:00
--设置图片初始角度
2021-04-01 17:44:44 +08:00
front:GetComponent("RectTransform").rotation = sData.State == 0 and angle[1] or angle[2]
back:GetComponent("RectTransform").rotation = sData.State == 1 and angle[1] or angle[2]
2021-04-01 16:04:13 +08:00
--判断哪些可领取,插入表
2021-04-08 11:26:05 +08:00
LogPurple("sData.Progress:"..tostring(sData.Progress).." sData.State:"..tostring(sData.State))
2021-04-01 17:44:44 +08:00
if sData.Progress <= curTime and sData.State == 0 then
2021-04-08 11:26:05 +08:00
LogPink("index:"..tostring(index))
2021-04-01 17:44:44 +08:00
table.insert(frontList,front)
table.insert(backList,back)
red:SetActive(true)
2021-04-01 16:04:13 +08:00
end
--如果已领取、可领取、不可领取显示第几天;下一领取显示时间
if sData.Progress > curTime and sData.Progress - 86400 <= curTime then
2021-04-01 17:44:44 +08:00
local time = sData.Progress - GetTimeStamp()
2021-04-01 16:04:13 +08:00
name.text = TimeToFelaxible(time)
if self.timer then
self.timer:Stop()
self.timer = nil
end
self.timer = Timer.New(function()
time = time - 1
if time <= 0 then
self.timer:Stop()
self.timer = nil
FifteenDayGift:Refresh()
end
name.text = TimeToFelaxible(time)
end, 1, -1, true)
self.timer:Start()
else
2021-04-02 11:53:07 +08:00
name.text = string.format("第%s天",NumToSimplenessFont[index])
2021-04-01 16:04:13 +08:00
end
--设置icon 和数量
icon.sprite = SetIcon(sData.Reward[1])
2021-04-02 19:06:08 +08:00
num.text = string.format("× %s",sData.Reward[2])
2021-04-01 16:04:13 +08:00
Util.AddOnceClick(icon.gameObject,function ()
2021-04-01 17:44:44 +08:00
ItemViewList[index]:OnBtnCkickEvent(sData.Reward[1])
2021-04-01 16:04:13 +08:00
end)
2021-03-31 15:02:04 +08:00
end
--界面关闭时调用(用于子类重写)
function FifteenDayGift:OnClose()
2021-04-01 16:04:13 +08:00
if self.timer then
self.timer:Stop()
self.timer = nil
end
2021-03-31 15:02:04 +08:00
end
--界面销毁时调用(用于子类重写)
function FifteenDayGift:OnDestroy()
2021-04-01 16:04:13 +08:00
if self.timer then
self.timer:Stop()
self.timer = nil
end
itemList = {}
2021-04-01 17:44:44 +08:00
ItemViewList = {}
frontList = {}
backList = {}
2021-04-02 11:53:07 +08:00
ClearRedPointObject(RedPointType.FifteenDayGift_1,self.redPoint)
2021-03-31 15:02:04 +08:00
end
return FifteenDayGift