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

396 lines
16 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

local YiJingBaoKu = {}
local sortingOrder = 0
local trigger = true
local BlessingConfig = ConfigManager.GetConfig(ConfigName.BlessingRewardPoolNew)
local ItemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
local gridList={}
function YiJingBaoKu:New(gameObject)
local b = {}
b.gameObject = gameObject
b.transform = gameObject.transform
setmetatable(b, { __index = YiJingBaoKu })
return b
end
function YiJingBaoKu:InitComponent()
self.spLoader = SpriteLoader.New()
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.onekeyBtn=Util.GetGameObject(self.gameObject, "btn_oneKey")
self.helpPosition=self.helpBtn:GetComponent("RectTransform").localPosition
self.rewardPre = Util.GetGameObject(self.gameObject, "rightUp/rewardPre")
self.zhenqibaogeBtn = Util.GetGameObject(self.gameObject,"rightUp/zqbg")
self.zqbgEffect = Util.GetGameObject(self.zhenqibaogeBtn,"Fx_Circle 1")
--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")
--effect
self.effect = Util.GetGameObject(self.gameObject, "UI_Effect_YJBK_Zao")
end
--绑定事件(用于子类重写)
function YiJingBaoKu:BindEvent()
Util.AddOnceClick(self.onekeyBtn, function()
if self.ActData.selectId == 0 then
PopupTipPanel.ShowTip(Language[10522])
return
end
NetManager.GetActivityRewardRequest(-1,self.ActData.activityId,function (drop)
local tempData = self:RebuildAllDrop(drop)
--self:SetSingleCardData(index,value,tempData)
local thread=coroutine.start(function()
coroutine.wait(0.5)
UIManager.OpenPanel(UIName.RewardItemPopup, drop, 1,function ()
trigger = true
local len=#tempData
for key, value in pairs(tempData) do
if value.sId==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
end
end
self:Refresh()
end)
end)
end)
end)
Util.AddOnceClick(self.zhenqibaogeBtn, function()
JumpManager.GoJump(40050,nil,self.actId)
end)
Util.AddOnceClick(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)
end)
end)
Util.AddOnceClick(self.refrashBtn,function()
UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.YiJingBaoKu,self.ActData,function()
self:SetFinalReward()
end)
end)
Util.AddOnceClick(self.helpBtn,function()
UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.YiJingBaoKu,self.helpPosition.x,self.helpPosition.y)
end)
Util.AddOnceClick(self.rewardPre,function()
if self.ActData.selectId == 0 then
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:OnSortingOrderChange()
end
--界面打开或者重新打开后,界面刷新时调用(用于子类重写)
function YiJingBaoKu:OnShow(_sortingOrder)
self.gameObject:SetActive(true)
sortingOrder = _sortingOrder
Util.AddParticleSortLayer(self.effect, sortingOrder + 1)
Util.SetParticleSortLayer(self.zqbgEffect, sortingOrder + 1)
Util.SetParticleSortLayer(self.onekeyBtn, sortingOrder + 1)
self.actId = self.actConfig.ActId
self.actType = self.actConfig.ActiveType > 0 and self.actConfig.ActiveType or self.actConfig.FunType
if self.actConfig.IfBack == 1 then
if self.actConfig.ActiveType > 0 then
local id = ActivityGiftManager.IsActivityTypeOpen(self.actConfig.ActiveType)
if id and id > 0 then
self.actId = id
local config = ConfigManager.TryGetConfigDataByThreeKey(ConfigName.ActivityGroups,"PageType",self.actConfig.PageType,"ActiveType",self.actConfig.ActiveType,"ActId",id)
if config then
self.actConfig = config
end
end
end
end
local image = Util.GetGameObject(self.effect, "UI_Effect_YJBK_Zao/GameObject/Image (2)"):GetComponent("Canvas")
image.sortingOrder = _sortingOrder + 1
sortingOrder = _sortingOrder
self:Refresh()
end
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")
image.sortingOrder = _sortingOrder + 1
sortingOrder = _sortingOrder
end
--刷新
function YiJingBaoKu:Refresh()
self.ActData = DynamicActivityManager.GetBaoKuData()
CommonActPageManager.ShowIcon(self.zhenqibaogeBtn,self.ActData.activityId)
if self.ActData.selectId == 0 then--如果没有选择了最终奖励
self:ResetCardToFront()--把卡片全部翻到正面
self:InitSetAllCard()--显示所有奖励
self.tip.text = Language[10523]
else--选择了最终奖励
self:ResetCardToBack()--把卡片全部翻到背面
self:SetFinalReward()--设置最终奖励
gridList={}
self:SetCardData()--把抽取过的卡翻过来
end
self:TimeCountDown()--时间
self:AddBackToFrontClick()--增加背面的带点击事件
trigger = true
--self.addBtn:GetComponent("Button").enabled = self.ActData.selectId == 0
LogError("self.ActData.curLevel=="..self.ActData.curLevel)
self.name.text = Language[10262]..self.ActData.curLevel..Language[10269]
self.tip2.text = Language[10525]
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)
end
function YiJingBaoKu:SetCardData()
LogError("#self.ActData.finalCardDatas=="..#self.ActData.finalCardDatas)
LogError("#self._itemsList[i]=="..#self._itemsList)
for i = 1, #self.ActData.finalCardDatas do
local v = self.ActData.finalCardDatas[i]
--LogError("v.Id=="..v.Id)
if v.rewardId ~= 0 then
if self._itemsList[i] then
local item = self._itemsList[i]
local cFront = Util.GetGameObject(item, "front")
cFront:SetActive(true)
local cBack = Util.GetGameObject(item, "back")
if not self.itemViewList[i] then
self.itemViewList[i] = SubUIManager.Open(SubUIConfig.ItemView,cFront.transform)
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)
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)
end
else
table.insert(gridList,v.Id)
end
end
end
function YiJingBaoKu:SetFinalReward()
self.ActData = DynamicActivityManager.GetBaoKuData()
if not self.finalReward then
self.finalReward = SubUIManager.Open(SubUIConfig.ItemView,self.addBtn.transform)
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)
self.tip.text = ItemConfig[BlessingConfig[self.ActData.selectId].Reward[1]].Name
end
--初始化给所有坑赋值
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
----单个的卡增加点击
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
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)
local thread=coroutine.start(function()
self.effect.transform:SetParent(value.transform)
self.effect:GetComponent("RectTransform").localPosition = Vector3.zero
self.effect:SetActive(true)
coroutine.wait(1)
self.effect:SetActive(false)
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
self: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
function YiJingBaoKu:RebuildAllDrop(drop)
local tempTable = BagManager.GetTableByBackDropData(drop)
return tempTable
end
--单个翻卡赋值
function YiJingBaoKu:SetSingleCardData(index,item,reward)
local root = Util.GetGameObject(item,"front")
root:SetActive(true)
if not self.itemViewList[index] then
self.itemViewList[index] = SubUIManager.Open(SubUIConfig.ItemView,root.transform)
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)
end
--所有奖励翻面
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
Util.GetGameObject(value,"front"):SetActive(false)
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
--把所有卡置为正面
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
--把所有卡置为背面
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
--时间
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
end
self.timer1 = Timer.New(function()
self.leftTime.text = Language[10023]..TimeToFelaxible(time)
if time < 1 then
self.timer1:Stop()
self.timer1 = nil
self:ClosePanel()
end
time = time -1
end, 1, -1, true)
self.timer1:Start()
end
function YiJingBaoKu:OnClose()
self.gameObject:SetActive(false)
if self.timer1 then
self.timer1:Stop()
self.timer1 = nil
end
end
--界面销毁时调用(用于子类重写)
function YiJingBaoKu:OnDestroy()
self.spLoader:Destroy()
self._itemsList = {}
self._itemsPosList={}
self.itemViewList = {}
self.finalReward = nil
end
return YiJingBaoKu