459 lines
19 KiB
Lua
459 lines
19 KiB
Lua
require("Base/BasePanel")
|
|
PrayMainPanel = Inherit(BasePanel)
|
|
local this = PrayMainPanel
|
|
local blessingConfig = ConfigManager.GetConfig(ConfigName.BlessingConfig)
|
|
--16个祈福奖励
|
|
local RewardParentGrid = {}
|
|
local RewardItemGrid = {}
|
|
--16个祈福奖励预览
|
|
local yunLanRewardParentGrid = {}
|
|
local yunLanRewardItemGrid = {}
|
|
--当前祈福完成的个数
|
|
local allGetFinishRewardNum = 0
|
|
local allGetRewardNum = 0
|
|
|
|
local blessingConFigData = {}
|
|
local itemId = 0
|
|
local itemNum = 0
|
|
local itemData = {}
|
|
|
|
--累计奖励
|
|
local extraRewardParentGrid = {}
|
|
local extraRewardItemGrid = {}
|
|
--是否在刷新时间范围内
|
|
local isRefresh = true
|
|
|
|
|
|
local orginLayer = 0
|
|
--初始化组件(用于子类重写)
|
|
function PrayMainPanel:InitComponent()
|
|
orginLayer = 0
|
|
self.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform, { showType = UpViewOpenType.ShowLeft })
|
|
self.BtnBack = Util.GetGameObject(self.transform, "btnBack")
|
|
self.bg = Util.GetGameObject(self.transform, "bg")
|
|
screenAdapte(self.bg)
|
|
|
|
self.tishiText = Util.GetGameObject(self.gameObject, "downGo/name/tishiText")
|
|
self.tishiText2 = Util.GetGameObject(self.gameObject, "downGo/name/tishiText2")
|
|
self.tishiText3 = Util.GetGameObject(self.gameObject, "downGo/name/tishiText3")
|
|
self.tishiText2Text = Util.GetGameObject(self.gameObject, "downGo/name/tishiText2/tishiText1"):GetComponent("Text")
|
|
self.tishiText2Image = Util.GetGameObject(self.gameObject, "downGo/name/tishiText2/itemImage"):GetComponent("Image")
|
|
self.refreshBtn = Util.GetGameObject(self.gameObject, "upGo/refreshBtn")
|
|
self.yulanBtn = Util.GetGameObject(self.gameObject, "upGo/yulanBtn")
|
|
self.extraRewardGo = Util.GetGameObject(self.gameObject, "upGo/extraRewardPre")
|
|
self.extraRewardParent = Util.GetGameObject(self.gameObject, "upGo/extraRewardPre/parent")
|
|
self.allPrayNum = Util.GetGameObject(self.gameObject, "upGo/extraRewardPre/getNumText"):GetComponent("Text")
|
|
self.extraRewardExp = Util.GetGameObject(self.transform, "upGo/extraRewardPre/exp"):GetComponent("Slider")
|
|
self.extraRewardExpText = Util.GetGameObject(self.gameObject, "upGo/extraRewardPre/exp/Text"):GetComponent("Text")
|
|
self.extraRewardNameText = Util.GetGameObject(self.gameObject, "upGo/extraRewardPre/nameText"):GetComponent("Text")
|
|
this.RewardGrid = Util.GetGameObject(self.gameObject, "downGo/RewardGrid")
|
|
for i = 1, 16 do
|
|
RewardParentGrid[i] = Util.GetGameObject(self.gameObject, "downGo/RewardGrid/ItemView ("..i..")")
|
|
RewardItemGrid[i] = SubUIManager.Open(SubUIConfig.ItemView, Util.GetGameObject(RewardParentGrid[i].transform, "itemParent").transform)
|
|
yunLanRewardParentGrid[i] = Util.GetGameObject(self.gameObject, "previewRewardLayout/RewardGrid/ItemView ("..i..")")
|
|
yunLanRewardItemGrid[i] = SubUIManager.Open(SubUIConfig.ItemView, Util.GetGameObject(yunLanRewardParentGrid[i].transform, "itemParent").transform)
|
|
end
|
|
|
|
--奖励预览
|
|
self.previewRewardLayout = Util.GetGameObject(self.gameObject, "previewRewardLayout")
|
|
self.previewRewardLayout:SetActive(false)
|
|
self.yulanMaskBtn = Util.GetGameObject(self.gameObject, "previewRewardLayout/maskBtn")
|
|
--累计奖励预览
|
|
self.extraRewardBtn = Util.GetGameObject(self.gameObject, "upGo/extraRewardPre/extraRewardBtn")
|
|
self.extraRewardLayout = Util.GetGameObject(self.gameObject, "extraRewardLayout")
|
|
self.extraRewardLayout:SetActive(false)
|
|
self.extraMaskBtn = Util.GetGameObject(self.gameObject, "extraRewardLayout/maskBtn")
|
|
for i = 1, 6 do
|
|
extraRewardParentGrid[i] = Util.GetGameObject(self.gameObject, "extraRewardLayout/RewardRect/RewardGrid/ItemView ("..i..")")
|
|
extraRewardItemGrid[i] = SubUIManager.Open(SubUIConfig.ItemView, Util.GetGameObject(extraRewardParentGrid[i].transform, "itemParent").transform)
|
|
end
|
|
--时间
|
|
self.activeTimeText = Util.GetGameObject(self.gameObject, "upGo/name/time/timeImage/timeText"):GetComponent("Text")
|
|
self.activeRefreshTimeText = Util.GetGameObject(self.gameObject, "upGo/refreshTimeBg/refreshTimeText")
|
|
self.refreshTimeBg = Util.GetGameObject(self.gameObject, "upGo/refreshTimeBg")
|
|
|
|
self.effect = Util.GetGameObject(self.gameObject, "effect")
|
|
effectAdapte(Util.GetGameObject(self.effect, "Partical/ziti mask (1)"))
|
|
end
|
|
|
|
--绑定事件(用于子类重写)
|
|
function PrayMainPanel:BindEvent()
|
|
|
|
Util.AddClick(self.BtnBack, function()
|
|
self:ClosePanel()
|
|
end)
|
|
Util.AddClick(self.refreshBtn, function()
|
|
self:RefreshBtnClick()
|
|
end)
|
|
Util.AddClick(self.yulanMaskBtn, function()
|
|
self.previewRewardLayout:SetActive(false)
|
|
end)
|
|
Util.AddClick(self.yulanBtn, function()
|
|
for i = 1, #PrayManager.patyPreviewRewardData do
|
|
if allGetRewardNum > 0 then
|
|
local patyPreviewRewardData = PrayManager.patyPreviewRewardData[i]
|
|
this:ShowSingleRewardData(false,yunLanRewardParentGrid[i],yunLanRewardItemGrid[i],patyPreviewRewardData,false)
|
|
end
|
|
end
|
|
self.previewRewardLayout:SetActive(true)
|
|
end)
|
|
Util.AddClick(self.extraMaskBtn, function()
|
|
self.extraRewardLayout:SetActive(false)
|
|
end)
|
|
Util.AddClick(self.extraRewardBtn, function()
|
|
--累计奖励
|
|
for i = 1, 6 do
|
|
if i <= #PrayManager.extraRewardData then
|
|
extraRewardParentGrid[i]:SetActive(true)
|
|
local patyRewardData = PrayManager.extraRewardData[i]
|
|
this:ShowSingleExtraRewardData(false,extraRewardParentGrid[i],extraRewardItemGrid[i],patyRewardData)
|
|
else
|
|
extraRewardParentGrid[i]:SetActive(false)
|
|
end
|
|
end
|
|
self.extraRewardLayout:SetActive(true)
|
|
end)
|
|
end
|
|
|
|
--添加事件监听(用于子类重写)
|
|
function PrayMainPanel:AddListener()
|
|
|
|
end
|
|
|
|
--移除事件监听(用于子类重写)
|
|
function PrayMainPanel:RemoveListener()
|
|
|
|
end
|
|
|
|
--界面打开时调用(用于子类重写)
|
|
function PrayMainPanel:OnOpen(...)
|
|
Util.GetGameObject(self.gameObject, "upGo/name/time/timeImage/Text"):GetComponent("Text").text = Language[11637]..tostring(16)..Language[11638]
|
|
SetTextVerTial(Util.GetGameObject(self.gameObject, "upGo/name/time/timeImage/Text"),Vector3.New(0,-6.4,0),"MiddleLeft")
|
|
end
|
|
|
|
local isPlayAinEnd = true
|
|
--界面打开或者重新打开后,界面刷新时调用(用于子类重写)
|
|
function PrayMainPanel:OnShow()
|
|
|
|
isPlayAinEnd = true
|
|
self.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.LightRing })
|
|
blessingConFigData = blessingConfig[1].Cost
|
|
this.ShowRewardDataList()
|
|
end
|
|
function PrayMainPanel:OnSortingOrderChange()
|
|
-- 设置特效
|
|
Util.AddParticleSortLayer(self.effect, self.sortingOrder - orginLayer)
|
|
orginLayer = self.sortingOrder
|
|
self.previewRewardLayout.transform:GetComponent("Canvas").sortingOrder = self.sortingOrder + 50
|
|
self.extraRewardLayout.transform:GetComponent("Canvas").sortingOrder = self.sortingOrder + 50
|
|
end
|
|
--获取活动时间 和 刷新倒计时显示
|
|
function PrayMainPanel:SetRemainTime()
|
|
local activityInfo = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.Pray)--Pray
|
|
if activityInfo then
|
|
if activityInfo.endTime ~= 0 then
|
|
Log("活动时间: "..activityInfo.startTime.." "..activityInfo.endTime)
|
|
self.activeTimeText.text = Language[10584]..self:TimeStampToDateStr2(activityInfo.startTime).."~"..self:TimeStampToDateStr2(activityInfo.endTime)
|
|
end
|
|
end
|
|
local privilegeId = blessingConfig[1].RefreshCd
|
|
local maxResreshNum = PrivilegeManager.GetPrivilegeNumber(privilegeId)
|
|
-- Log("sssssssssssssssss "..PrayManager.lastRefreshTime.." "..maxResreshNum.." "..GetTimeStamp())
|
|
self:RemainTimeDown(PrayManager.lastRefreshTime+(maxResreshNum) - GetTimeStamp())
|
|
end
|
|
--刷新倒计时显示
|
|
function PrayMainPanel:RemainTimeDown(timeDown)
|
|
if timeDown > 0 then
|
|
self.refreshTimeBg:SetActive(true)
|
|
self.activeRefreshTimeText:GetComponent("Text").text = TimeStampToDateStr3(timeDown)
|
|
isRefresh = false
|
|
Util.SetGray(self.refreshBtn, true)
|
|
if self.timer then
|
|
self.timer:Stop()
|
|
self.timer = nil
|
|
end
|
|
self.timer = Timer.New(function()
|
|
self.activeRefreshTimeText:GetComponent("Text").text = TimeStampToDateStr3(timeDown)
|
|
if timeDown < 0 then
|
|
isRefresh = true
|
|
self.refreshTimeBg:SetActive(false)
|
|
Util.SetGray(self.refreshBtn, false)
|
|
self.timer:Stop()
|
|
self.timer = nil
|
|
end
|
|
timeDown = timeDown - 1
|
|
end, 1, -1, true)
|
|
self.timer:Start()
|
|
else
|
|
isRefresh = true
|
|
Util.SetGray(self.refreshBtn, false)
|
|
self.refreshTimeBg:SetActive(false)
|
|
end
|
|
end
|
|
--展示所有祈福奖励
|
|
function this.ShowRewardDataList()
|
|
this:OnShowExtraRewar()
|
|
this:SetRemainTime()
|
|
for i = 1, #PrayManager.patyRewardData do
|
|
local patyRewardData = PrayManager.patyRewardData[i]
|
|
this:ShowSingleRewardData(false,RewardParentGrid[i],RewardItemGrid[i],patyRewardData,true)
|
|
--if allGetRewardNum > 0 then
|
|
-- local patyPreviewRewardData = PrayManager.patyPreviewRewardData[i]
|
|
-- this:ShowSingleRewardData(false,yunLanRewardParentGrid[i],yunLanRewardItemGrid[i],patyPreviewRewardData,false)
|
|
--end
|
|
end
|
|
--累计奖励
|
|
--for i = 1, #PrayManager.extraRewardData do
|
|
-- local patyRewardData = PrayManager.extraRewardData[i]
|
|
-- this:ShowSingleExtraRewardData(false,extraRewardParentGrid[i],extraRewardItemGrid[i],patyRewardData)
|
|
--end
|
|
end
|
|
--展示单个祈福奖励
|
|
function PrayMainPanel:ShowSingleRewardData(_isGet,_parentGo,_go,patyRewardData,isClick)
|
|
local PreciousShow = 0
|
|
if patyRewardData.rewardId > 0 then
|
|
local BlessingRewardPoolData = ConfigManager.GetConfigData(ConfigName.BlessingRewardPool,patyRewardData.rewardId)
|
|
if BlessingRewardPoolData then
|
|
PreciousShow = BlessingRewardPoolData.PreciousShow
|
|
end
|
|
end
|
|
local _reward = {patyRewardData.itemId,patyRewardData.num,PreciousShow}
|
|
--Log("item 信息 "..patyRewardData.itemId.." "..patyRewardData.num)
|
|
local _state = patyRewardData.state
|
|
local itemParent = Util.GetGameObject(_parentGo.transform, "itemParent")
|
|
local getBtn = Util.GetGameObject(_parentGo.transform, "getBtn")
|
|
local wenhaoBtn
|
|
local addImage
|
|
if isClick then
|
|
wenhaoBtn = Util.GetGameObject(_parentGo.transform, "wenhaoBtn")
|
|
addImage = Util.GetGameObject(_parentGo.transform, "addImage")
|
|
wenhaoBtn:SetActive(false)
|
|
addImage:SetActive(false)
|
|
end
|
|
getBtn:SetActive(false)
|
|
itemParent:SetActive(false)
|
|
if _state == 0 then--0未保存无物品 1 未保存有物品 2 已选择 3 已祈福
|
|
if isClick then
|
|
addImage:SetActive(true)
|
|
end
|
|
elseif _state == 1 then
|
|
itemParent:SetActive(true)
|
|
if isClick then
|
|
_go:OnOpen(_isGet,_reward,1)
|
|
else
|
|
_go:OnOpen(_isGet,_reward,1,true)
|
|
end
|
|
elseif _state == 2 then
|
|
if isClick then
|
|
wenhaoBtn:SetActive(true)
|
|
else
|
|
itemParent:SetActive(true)
|
|
if isClick then
|
|
_go:OnOpen(_isGet,_reward,1)
|
|
else
|
|
_go:OnOpen(_isGet,_reward,1,true)
|
|
end
|
|
end
|
|
elseif _state == 3 then
|
|
itemParent:SetActive(true)
|
|
if isClick then
|
|
_go:OnOpen(_isGet,_reward,1)
|
|
else
|
|
_go:OnOpen(_isGet,_reward,1,true)
|
|
end
|
|
getBtn:SetActive(true)
|
|
end
|
|
Util.AddOnceClick(addImage, function()
|
|
if isPlayAinEnd == false then
|
|
return
|
|
end
|
|
if isClick then
|
|
UIManager.OpenPanel(UIName.PraySelectRewardPanel,this)
|
|
end
|
|
end)
|
|
if isClick then
|
|
Util.AddOnceClick(wenhaoBtn, function()
|
|
if BagManager.GetItemCountById(itemData.Id) < itemNum then
|
|
--PopupTipPanel.ShowTip("材料不足")
|
|
--功能快捷购买
|
|
UIManager.OpenPanel(UIName.QuickPurchasePanel, { type = UpViewRechargeType.LightRing })
|
|
return
|
|
end
|
|
if isPlayAinEnd == false then
|
|
return
|
|
end
|
|
MsgPanel.ShowTwo(Language[11639]..itemNum..Language[10200]..GetLanguageStrById(itemData.Name), nil ,function ()
|
|
NetManager.GetSinglePrayRewardRequest(patyRewardData.id, function (_msg)
|
|
isPlayAinEnd = false
|
|
PrayManager.SetPatySingleRewardData(patyRewardData.id,_msg.chooseRewardId)
|
|
PlayUIAnim(_parentGo)
|
|
Timer.New(function ()
|
|
this.ShowRewardDataList()
|
|
end, 0.2):Start()
|
|
Timer.New(function ()
|
|
UIManager.OpenPanel(UIName.PrayRewardItemPopup,_msg.reward,allGetFinishRewardNum,_msg.chooseRewardId,function()
|
|
-- self:CheckGetMaxReward()
|
|
end)
|
|
isPlayAinEnd = true
|
|
end, 0.4):Start()
|
|
end)
|
|
end)
|
|
end)
|
|
end
|
|
end
|
|
--检测祈福是否满16 满会自动刷新
|
|
-- function PrayMainPanel:CheckGetMaxReward()
|
|
-- local allGetFinishRewardNums = 0
|
|
-- for i = 1, #PrayManager.patyRewardData do
|
|
-- if PrayManager.patyRewardData[i].state >= 3 then
|
|
-- allGetFinishRewardNums = allGetFinishRewardNums + 1
|
|
-- end
|
|
-- end
|
|
-- LogYellow("allGetFinishRewardNums "..allGetFinishRewardNums)
|
|
-- if allGetFinishRewardNums >= 16 then
|
|
-- local isRefreshConFig = blessingConfig[1].IsRefresh
|
|
-- if isRefreshConFig == 1 then
|
|
-- MsgPanel.ShowOne("本轮祈福已全部完成,奖池刷新并重置开启次数。", function ()
|
|
-- NetManager.InitPrayDataRequest(function (_msg)
|
|
-- PrayManager.ResetPatyRewardData(_msg)
|
|
-- this.ShowRewardDataList()
|
|
-- end)
|
|
-- end)
|
|
-- return
|
|
-- end
|
|
-- end
|
|
-- end
|
|
--展示额外奖励
|
|
function PrayMainPanel:OnShowExtraRewar()
|
|
--额外奖励赋值
|
|
allGetFinishRewardNum = PrayManager.GetCount()
|
|
allGetRewardNum = 0
|
|
for i = 1, #PrayManager.patyRewardData do
|
|
-- if PrayManager.patyRewardData[i].state >= 3 then
|
|
-- allGetFinishRewardNum = allGetFinishRewardNum + 1
|
|
-- end
|
|
if PrayManager.patyRewardData[i].state >= 2 then
|
|
allGetRewardNum = allGetRewardNum + 1
|
|
end
|
|
end
|
|
local curGetExtraRewarData = {}
|
|
local upGetExtraRewarData = 0
|
|
for i = 1, #PrayManager.extraRewardData do
|
|
if allGetFinishRewardNum < PrayManager.extraRewardData[i].extraRewardCount then
|
|
curGetExtraRewarData = PrayManager.extraRewardData[i]
|
|
break
|
|
end
|
|
end
|
|
for i = 1, #PrayManager.extraRewardData do
|
|
if allGetFinishRewardNum >= PrayManager.extraRewardData[i].extraRewardCount then
|
|
upGetExtraRewarData = PrayManager.extraRewardData[i].extraRewardCount
|
|
end
|
|
end
|
|
--抽取消耗的材料赋值
|
|
itemId = blessingConFigData[1][1]
|
|
itemNum = CalculateCostCount(allGetFinishRewardNum + 1, blessingConFigData[2])
|
|
itemData = ConfigManager.GetConfigData(ConfigName.ItemConfig,itemId)
|
|
self.tishiText3:SetActive(false)
|
|
self.tishiText:SetActive(false)
|
|
self.tishiText2:SetActive(false)
|
|
--Log("allGetFinishRewardNum "..allGetFinishRewardNum)
|
|
self.allPrayNum.text = Language[11640]..allGetFinishRewardNum
|
|
if allGetRewardNum > 0 then
|
|
self.yulanBtn:SetActive(true)
|
|
self.tishiText:SetActive(false)
|
|
if allGetFinishRewardNum >= 16 then
|
|
self.tishiText3:SetActive(true)
|
|
else
|
|
self.tishiText2:SetActive(true)
|
|
self.tishiText2Text.text = Language[11641]..itemNum..Language[10200]
|
|
self.tishiText2Image.sprite = Util.LoadSprite(GetResourcePath(itemData.ResourceID))
|
|
end
|
|
else
|
|
self.yulanBtn:SetActive(false)
|
|
self.tishiText2:SetActive(false)
|
|
self.tishiText3:SetActive(false)
|
|
self.tishiText:SetActive(true)
|
|
end
|
|
if curGetExtraRewarData and curGetExtraRewarData.itemId then
|
|
self.extraRewardGo:SetActive(true)
|
|
Util.ClearChild(self.extraRewardParent.transform)
|
|
SubUIManager.Open(SubUIConfig.ItemView, self.extraRewardParent.transform,false,{curGetExtraRewarData.itemId,curGetExtraRewarData.num},1,false)
|
|
self.extraRewardNameText.text = GetLanguageStrById(ConfigManager.GetConfigData(ConfigName.ItemConfig,curGetExtraRewarData.itemId).Name)
|
|
self.extraRewardExp.value= (allGetFinishRewardNum)/(curGetExtraRewarData.extraRewardCount)
|
|
self.extraRewardExpText.text =(allGetFinishRewardNum).."/"..(curGetExtraRewarData.extraRewardCount)
|
|
else
|
|
self.extraRewardGo:SetActive(false)
|
|
end
|
|
end
|
|
--展示单个额外奖励
|
|
function PrayMainPanel:ShowSingleExtraRewardData(_isGet,_parentGo,_go,patyRewardData)
|
|
local numText = Util.GetGameObject(_parentGo.transform, "numText/Text"):GetComponent("Text")
|
|
local _reward = {patyRewardData.itemId,patyRewardData.num}
|
|
_go:OnOpen(_isGet,_reward,0.9)
|
|
numText.text = patyRewardData.extraRewardCount
|
|
end
|
|
--刷新按钮事件
|
|
function PrayMainPanel:RefreshBtnClick()
|
|
local allGetFinishRewardNums = 0
|
|
for i = 1, #PrayManager.patyRewardData do
|
|
if PrayManager.patyRewardData[i].state >= 3 then
|
|
allGetFinishRewardNums = allGetFinishRewardNums + 1
|
|
end
|
|
end
|
|
if allGetFinishRewardNums == 16 then
|
|
NetManager.ResetAllPrayRewardRequest(function (_msg)
|
|
PrayManager.ResetPatyRewardData(_msg)
|
|
-- PrivilegeManager.RefreshPrivilegeUsedTimes(privilegeId, 1)
|
|
this.ShowRewardDataList()
|
|
end)
|
|
else
|
|
MsgPanel.ShowTwo(Language[11642], nil ,function ()
|
|
NetManager.ResetAllPrayRewardRequest(function (_msg)
|
|
PrayManager.ResetPatyRewardData(_msg)
|
|
-- PrivilegeManager.RefreshPrivilegeUsedTimes(privilegeId, 1)
|
|
this.ShowRewardDataList()
|
|
end)
|
|
end)
|
|
end
|
|
|
|
-- local isRefreshConFig = blessingConfig[1].IsRefresh
|
|
-- local privilegeId = blessingConfig[1].RefreshCd
|
|
-- if isRefreshConFig == 0 then
|
|
-- PopupTipPanel.ShowTip("活动不可刷新")
|
|
-- return
|
|
-- end
|
|
-- if isRefresh == false then
|
|
-- PopupTipPanel.ShowTip("当前时间不可刷新")
|
|
-- return
|
|
-- end
|
|
|
|
end
|
|
--界面关闭时调用(用于子类重写)
|
|
function PrayMainPanel:OnClose()
|
|
|
|
if self.timer then
|
|
self.timer:Stop()
|
|
self.timer = nil
|
|
end
|
|
end
|
|
|
|
-- 将时间戳转换为用于显示的日期字符串(年月日)
|
|
function PrayMainPanel:TimeStampToDateStr2(timestamp)
|
|
local date = os.date("*t", timestamp)
|
|
--local year = string.sub(date.year,3,4)
|
|
return string.format(Language[11643], date.year, date.month, date.day)
|
|
end
|
|
function this.ShowAnimationAndRefreshData()
|
|
PlayUIAnim(this.RewardGrid)
|
|
Timer.New(function ()
|
|
this.ShowRewardDataList()
|
|
PlayUIAnimBack(this.RewardGrid)
|
|
end, 0.8):Start()
|
|
end
|
|
--界面销毁时调用(用于子类重写)
|
|
function PrayMainPanel:OnDestroy()
|
|
|
|
SubUIManager.Close(self.UpView)
|
|
end
|
|
|
|
return PrayMainPanel |