miduo_client/Assets/ManagedResources/~Lua/Modules/DynamicActivity/YiJingBaoKu.lua

320 lines
12 KiB
Lua
Raw Normal View History

local YiJingBaoKu = {}
2020-11-04 10:53:02 +08:00
local sortingOrder = 0
local trigger = true
2020-11-05 19:10:20 +08:00
local BlessingConfig = ConfigManager.GetConfig(ConfigName.BlessingRewardPoolNew)
function YiJingBaoKu:New(gameObject)
local b = {}
b.gameObject = gameObject
b.transform = gameObject.transform
setmetatable(b, { __index = YiJingBaoKu })
return b
end
function YiJingBaoKu:InitComponent()
self._itemsList = {}
self._itemsPosList={}
self.itemViewList = {}
-- top
self.name = Util.GetGameObject(self.gameObject, "top/name/Text"):GetComponent("Text")
self.itemFinal = Util.GetGameObject(self.gameObject, "top/reward/icon")
self.addBtn = Util.GetGameObject(self.gameObject, "top/reward/add")
self.refrashBtn = Util.GetGameObject(self.gameObject, "top/reward/refrash")
self.tip = Util.GetGameObject(self.gameObject, "top/reward/tips/Text"):GetComponent("Text")
--leftUp
self.leftTime = Util.GetGameObject(self.gameObject, "leftUp/time"):GetComponent("Text")
--rightUp
self.helpBtn = Util.GetGameObject(self.gameObject, "helpBtn")
self.helpPosition=self.helpBtn:GetComponent("RectTransform").localPosition
self.rewardPre = Util.GetGameObject(self.gameObject, "rightUp/rewardPre")
--mid
self.grid = Util.GetGameObject(self.gameObject, "mid/content/grid")
for i = 1, self.grid.transform.childCount do
self._itemsList[i] = self.grid.transform:GetChild(i - 1)
self._itemsPosList[i] = self._itemsList[i]:GetComponent("RectTransform").localPosition
end
--bottom
self.tip2 = Util.GetGameObject(self.gameObject, "tip"):GetComponent("Text")
2020-11-06 16:06:08 +08:00
--effect
self.effect = Util.GetGameObject(self.gameObject, "UI_Effect_YJBK_Zao")
end
--绑定事件(用于子类重写)
function YiJingBaoKu:BindEvent()
Util.AddClick(self.addBtn,function()
UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.YiJingBaoKu,self.ActData,function()
self:SetFinalReward()
self:FrontToBack()
self.refrashBtn:SetActive(self.ActData.selectId ~= 0)
2020-11-05 19:10:20 +08:00
end)
end)
Util.AddClick(self.refrashBtn,function()
UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.YiJingBaoKu,self.ActData,function()
self:SetFinalReward()
2020-11-05 19:10:20 +08:00
end)
end)
Util.AddClick(self.helpBtn,function()
UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.YiJingBaoKu,self.helpPosition.x,self.helpPosition.y)
end)
Util.AddClick(self.rewardPre,function()
if self.ActData.selectId == 0 then
2021-04-09 12:26:35 +08:00
PopupTipPanel.ShowTip(Language[10522])
return
end
UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.YiJingBaoKuRewardPreview,self.ActData)
end)
end
--添加事件监听(用于子类重写)
function YiJingBaoKu:AddListener()
end
--移除事件监听(用于子类重写)
function YiJingBaoKu:RemoveListener()
end
--界面打开时调用(用于子类重写)
function YiJingBaoKu:OnOpen(_activityConfig,_index,parent)
self.actConfig = _activityConfig
self.pageIndex = _index
self.parent = parent
end
--界面打开或者重新打开后,界面刷新时调用(用于子类重写)
function YiJingBaoKu:OnShow(_sortingOrder)
self.gameObject:SetActive(true)
Util.AddParticleSortLayer(self.effect, _sortingOrder - sortingOrder)
local image = Util.GetGameObject(self.effect, "UI_Effect_YJBK_Zao/GameObject/Image (2)"):GetComponent("Canvas")
2020-11-06 15:31:29 +08:00
image.sortingOrder = _sortingOrder + 1
sortingOrder = _sortingOrder
self:Refresh()
end
2020-11-06 16:06:08 +08:00
function YiJingBaoKu:OnSortingOrderChange(_sortingOrder)
Util.AddParticleSortLayer(self.effect, _sortingOrder - sortingOrder)
local image = Util.GetGameObject(self.effect, "UI_Effect_YJBK_Zao/GameObject/Image (2)"):GetComponent("Canvas")
2020-11-06 15:31:29 +08:00
image.sortingOrder = _sortingOrder + 1
2020-11-06 16:06:08 +08:00
sortingOrder = _sortingOrder
end
2020-11-05 19:10:20 +08:00
--刷新
function YiJingBaoKu:Refresh()
self.ActData = DynamicActivityManager.GetBaoKuData()
if self.ActData.selectId == 0 then--如果没有选择了最终奖励
self:ResetCardToFront()--把卡片全部翻到正面
self:InitSetAllCard()--显示所有奖励
self.tip.text = Language[10523]
else--选择了最终奖励
self:ResetCardToBack()--把卡片全部翻到背面
self:SetFinalReward()--设置最终奖励
self:SetCardData()--把抽取过的卡翻过来
self.tip.text = Language[10524]
end
self:TimeCountDown()--时间
self:AddBackToFrontClick()--增加背面的带点击事件
trigger = true
self.addBtn:GetComponent("Button").enabled = self.ActData.selectId == 0
self.name.text = Language[10262]..NumToSimplenessFont[self.ActData.curLevel]..Language[10269]
self.tip2.text = Language[10525]
2020-11-05 19:10:20 +08:00
local t1 = true
for i = 1, #self.ActData.finalCardDatas do
if self.ActData.selectId == self.ActData.finalCardDatas[i].rewardId then
t1 = false
end
end
self.refrashBtn:SetActive((self.ActData.selectId ~= 0) and t1)
2020-11-05 19:10:20 +08:00
end
function YiJingBaoKu:SetCardData()
for i = 1, #self.ActData.finalCardDatas do
local v = self.ActData.finalCardDatas[i]
2020-11-05 19:10:20 +08:00
if v.rewardId ~= 0 then
local item = self._itemsList[i]
2020-11-05 19:10:20 +08:00
local cFront = Util.GetGameObject(item, "front")
local cBack = Util.GetGameObject(item, "back")
if not self.itemViewList[i] then
self.itemViewList[i] = SubUIManager.Open(SubUIConfig.ItemView,cFront.transform)
2020-11-05 19:10:20 +08:00
end
self.itemViewList[i]:OnOpen(false, v.reward, 1.1, false, false, false, sortingOrder)
self.itemViewList[i].transform.localPosition = Vector2.New(-73.5,78.5)
2020-11-05 19:10:20 +08:00
cFront:GetComponent("RectTransform").rotation = Quaternion.Euler(Vector3.New(0, 0, 0))
cBack:GetComponent("RectTransform").rotation = Quaternion.Euler(Vector3.New(0, 90, 0))
self.itemViewList[i].gameObject:SetActive(true)
2020-11-05 19:10:20 +08:00
end
end
end
2020-11-05 19:10:20 +08:00
function YiJingBaoKu:SetFinalReward()
self.ActData = DynamicActivityManager.GetBaoKuData()
if not self.finalReward then
self.finalReward = SubUIManager.Open(SubUIConfig.ItemView,self.addBtn.transform)
2020-11-05 19:10:20 +08:00
end
self.finalReward:OnOpen(false, BlessingConfig[self.ActData.selectId].Reward, 1.1, false, false, false, sortingOrder)
self.finalReward.transform.localPosition = Vector2.New(-73.5,78.5)
self.finalReward.gameObject:SetActive(true)
end
2020-11-05 19:10:20 +08:00
--初始化给所有坑赋值
function YiJingBaoKu:InitSetAllCard()
for i = 1, #self._itemsList do
if self.ActData.initCardDatas[i].reward then
self:SetSingleCardData(i,self._itemsList[i],self.ActData.initCardDatas[i].reward)
end
end
end
2020-11-05 19:10:20 +08:00
----单个的卡增加点击
function YiJingBaoKu:AddBackToFrontClick()
for index, value in ipairs(self._itemsList) do
local cFront = Util.GetGameObject(value, "front")
local cBack = Util.GetGameObject(value, "back")
local btn = Util.GetGameObject(value, "back/btn")
Util.AddOnceClick(btn,function()
--请求奖励
if BagManager.GetTotalItemNum(1004) <= 0 then
2021-04-09 12:26:35 +08:00
PopupTipPanel.ShowTip(Language[10526])
return
end
if not trigger then
return
end
trigger = false
-- LogYellow("请求的MissionId"..self.ActData.finalCardDatas[index].Id)
NetManager.GetActivityRewardRequest(self.ActData.finalCardDatas[index].Id,self.ActData.activityId,function (drop)
local tempData = self:RebuildDrop(drop)
self:SetSingleCardData(index,value,tempData)
2020-11-05 19:10:20 +08:00
local thread=coroutine.start(function()
self.effect.transform:SetParent(value.transform)
self.effect:GetComponent("RectTransform").localPosition = Vector3.zero
self.effect:SetActive(true)
2020-11-06 16:06:08 +08:00
coroutine.wait(1)
self.effect:SetActive(false)
2020-11-05 19:10:20 +08:00
cBack.transform:DORotate(Vector3.New(0, 90, 0), 0.3)
coroutine.wait(0.3)
cFront.transform:DORotate(Vector3.New(0, 0, 0), 0.3)
coroutine.wait(0.2)
UIManager.OpenPanel(UIName.RewardItemPopup, drop, 1,function ()
trigger = true
if tempData[1] == BlessingConfig[self.ActData.selectId].Reward[1] then
self.finalReward.gameObject:SetActive(false)
if self.itemViewList[18] then
self.itemViewList[18].gameObject:SetActive(false)
else
Util.GetGameObject(self._itemsList[18],"front"):GetComponent("RectTransform").rotation = Quaternion.Euler(Vector3.New(0, 0, 0))
end
2020-11-05 19:10:20 +08:00
YiJingBaoKu:Refresh()
end
end)
end)
end)
end)
end
end
function YiJingBaoKu:RebuildDrop(drop)
local tempTable = BagManager.GetTableByBackDropData(drop)
local reward = {tempTable[1].sId,tempTable[1].num}
return reward
end
2020-11-05 19:10:20 +08:00
--单个翻卡赋值
function YiJingBaoKu:SetSingleCardData(index,item,reward)
local root = Util.GetGameObject(item,"front")
if not self.itemViewList[index] then
self.itemViewList[index] = SubUIManager.Open(SubUIConfig.ItemView,root.transform)
2020-11-05 19:10:20 +08:00
end
self.itemViewList[index]:OnOpen(false, reward, 1.1, false, false, false, sortingOrder)
self.itemViewList[index].transform.localPosition = Vector2.New(-73.5,78.5)
self.itemViewList[index].gameObject:SetActive(true)
2020-11-05 19:10:20 +08:00
end
2020-11-05 19:10:20 +08:00
--所有奖励翻面
function YiJingBaoKu:FrontToBack()
local thread=coroutine.start(function()
for index, value in ipairs(self._itemsList) do
local cFront = Util.GetGameObject(value, "front")
cFront.transform:DORotate(Vector3.New(0, 90, 0), 0.3)
end
coroutine.wait(0.3)
for index, value in ipairs(self._itemsList) do
local cBack = Util.GetGameObject(value, "back")
cBack.transform:DORotate(Vector3.New(0, 0, 0), 0.3)
end
coroutine.wait(0.3)
for index, value in ipairs(self._itemsList) do
value.transform:DOLocalMove(Vector3.New(0,0,0), 0.3)
end
coroutine.wait(0.3)
for index, value in ipairs(self._itemsList) do
value.transform:DOLocalMove(Vector3.New(self._itemsPosList[index].x,self._itemsPosList[index].y,self._itemsPosList[index].z), 0.3)
end
end)
end
2020-11-05 19:10:20 +08:00
--把所有卡置为正面
function YiJingBaoKu:ResetCardToFront()
for index, value in ipairs(self._itemsList) do
local cFront = Util.GetGameObject(value, "front")
cFront:GetComponent("RectTransform").rotation = Quaternion.Euler(Vector3.New(0, 0, 0))
end
for index, value in ipairs(self._itemsList) do
local cBack = Util.GetGameObject(value, "back")
cBack:GetComponent("RectTransform").rotation = Quaternion.Euler(Vector3.New(0, 90, 0))
end
end
2020-11-05 19:10:20 +08:00
--把所有卡置为背面
function YiJingBaoKu:ResetCardToBack()
for index, value in ipairs(self._itemsList) do
local cFront = Util.GetGameObject(value, "front")
cFront:GetComponent("RectTransform").rotation = Quaternion.Euler(Vector3.New(0, 90, 0))
end
for index, value in ipairs(self._itemsList) do
local cBack = Util.GetGameObject(value, "back")
cBack:GetComponent("RectTransform").rotation = Quaternion.Euler(Vector3.New(0, 0, 0))
end
end
2020-11-05 19:10:20 +08:00
--时间
function YiJingBaoKu:TimeCountDown()
local time = self.ActData.endTime - GetTimeStamp()
self.leftTime.text = Language[10023]..TimeToFelaxible(time)
if self.timer1 then
self.timer1:Stop()
self.timer1 = nil
2020-11-05 19:10:20 +08:00
end
self.timer1 = Timer.New(function()
self.leftTime.text = Language[10023]..TimeToFelaxible(time)
2020-11-05 19:10:20 +08:00
if time < 1 then
self.timer1:Stop()
self.timer1 = nil
self:ClosePanel()
2020-11-05 19:10:20 +08:00
end
time = time -1
end, 1, -1, true)
self.timer1:Start()
2020-11-05 19:10:20 +08:00
end
function YiJingBaoKu:OnClose()
self.gameObject:SetActive(false)
if self.timer1 then
self.timer1:Stop()
self.timer1 = nil
end
end
--界面销毁时调用(用于子类重写)
function YiJingBaoKu:OnDestroy()
self._itemsList = {}
self._itemsPosList={}
self.itemViewList = {}
self.finalReward = nil
end
return YiJingBaoKu