miduo_client/Assets/ManagedResources/~Lua/Modules/Popup/SupremeHeroPopup.lua

488 lines
20 KiB
Lua

require("Base/BasePanel")
SupremeHeroPopup = Inherit(BasePanel)
local this=SupremeHeroPopup
local artResConfig = ConfigManager.GetConfig(ConfigName.ArtResourcesConfig)
local heroConfig = ConfigManager.GetConfig(ConfigName.HeroConfig)
local activityConfig = ConfigManager.GetConfig(ConfigName.ActivityRewardConfig)
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
local live2dResName = ""
local heroId = 0
local heroData = {}
local actIsOpen = false
local missionData = {}
local actData = {}
local idList = {
[1] = {
bigId = 0,
[1] = {id = 30, jumpevent = function()
JumpManager.GoJump(26082)
end,btnTip = Language[11530].."<color=#F4D98A>%s</color>",isGet = false},
[2] = {id = 31, jumpevent = function()
PopupTipPanel.ShowTip(Language[11531])
end,btnTip = Language[11530].."<color=#F4D98A>%s</color>",isGet = false},
[3] = {id = 32, jumpevent = function()
JumpManager.GoJump(36005)
end,btnTip = Language[11530].."<color=#F4D98A>%s</color>",isGet = true},
},
[2] = {
bigId = 36,
[1] = {id = 33, jumpevent = function()
JumpManager.GoJump(26082)
end,btnTip = Language[10317],isGet = true},
[2] = {id = 34, jumpevent = function()
JumpManager.GoJump(26082)
end,btnTip = Language[10018],isGet = true},
[3] = {id = 35, jumpevent = function()
JumpManager.GoJump(36012)
end,btnTip = Language[10101],isGet = true},
},
}
local orginLayer = 0
local orginLayer2 = 0
-- 界面是否可以关闭
local canClose = false
local curPage = 0
local isFrist = false
---剑影迷踪
--初始化组件(用于子类重写)
function SupremeHeroPopup:InitComponent()
this.spLoader = SpriteLoader.New()
orginLayer = 0
orginLayer2 = 0
this.panel = Util.GetGameObject(self.gameObject,"Panel")
this.middle = Util.GetGameObject(this.panel,"Middle")
this.doneBtn = Util.GetGameObject(this.middle,"DoneBtn")
this.btnText = Util.GetGameObject(this.doneBtn, "Text"):GetComponent("Text")
--玉帝
this.previewBtn = Util.GetGameObject(this.middle, "PreviewBtn")
this.click = Util.GetGameObject(this.middle, "PreviewBtn/click")
this.clickNameParent = Util.GetGameObject(this.middle, "PreviewBtn/di/Name")
this.clickName = Util.GetGameObject(this.clickNameParent, "Text"):GetComponent("Text")
this.proImage = Util.GetGameObject(this.middle, "PreviewBtn/di/Image"):GetComponent("Image")
this.previewBtn.gameObject:SetActive(false)
this.taskProgress = Util.GetGameObject(this.middle, "di/TaskProgress"):GetComponent("Text")--完成进度
this.tipText = Util.GetGameObject(this.middle, "textTime (1)"):GetComponent("Text")
this.itemList = {}
this.RewardList = {}
for i = 1, 3 do
this.RewardList[i] = {}
this.RewardList[i].go = Util.GetGameObject(this.middle, "Reward/Panel".. i)
this.RewardList[i].title = Util.GetGameObject(this.RewardList[i].go, "Image/Title"):GetComponent("Text")
this.RewardList[i].Btn = Util.GetGameObject(this.RewardList[i].go, "Button")
this.RewardList[i].BtnTip = Util.GetGameObject(this.RewardList[i].Btn, "Text"):GetComponent("Text")
this.RewardList[i].btnGet = Util.GetGameObject(this.RewardList[i].go, "BtnGet")
this.RewardList[i].doneImg = Util.GetGameObject(this.RewardList[i].go, "doneImg")
this.RewardList[i].frame = Util.GetGameObject(this.RewardList[i].go, "frame")
this.RewardList[i].red = Util.GetGameObject(this.RewardList[i].btnGet, "redPot")
end
this.activityTime = Util.GetGameObject(self.gameObject, "Panel/Middle/freshTime"):GetComponent("Text")--活动时间
this.backBtn = Util.GetGameObject(self.gameObject, "Panel/btnBack")
this.effectRoot5 = Util.GetGameObject(self.gameObject, "Fx_mat_UI_SupremeHeroPopup_yunwusankai")
this.effectRoot3 = Util.GetGameObject(self.gameObject, "Fx_mat_UI_SupremeHeroPopup_changzhu")
this.Effect_UI_SupremeHeroPopup_zhuzi = Util.GetGameObject(self.gameObject, "Panel/Effect_UI_SupremeHeroPopup_zhuzi")
this.LoadLive2D()
this.btnLayer = Util.GetGameObject(self.gameObject, "Panel/Middle/btnLayer"):GetComponent("Canvas")
this.tianjingzunzhe = Util.GetGameObject(this.btnLayer.transform, "tianjingzunzhe")
this.tianjingzunzheRed = Util.GetGameObject(this.tianjingzunzhe, "red")
this.lingxiaobaojian = Util.GetGameObject(this.btnLayer.transform, "lingxiaobaojian")
this.lingxiaobaojianRed = Util.GetGameObject(this.lingxiaobaojian, "red")
--1玉帝 2御剑
this.panelist = {}
for i = 1,2 do
if not this.panelist[i] then
this.panelist[i] = {}
end
this.panelist[i].role = Util.GetGameObject(self.gameObject, "Panel/role"..i)
this.panelist[i].role.gameObject:SetActive(false)
this.panelist[i].jian = Util.GetGameObject(self.gameObject, "Panel/jian"..i)
this.panelist[i].jian.gameObject:SetActive(false)
this.panelist[i].wenzi = Util.GetGameObject(self.gameObject, "Panel/wenzi"..i)
this.panelist[i].wenzi.gameObject:SetActive(false)
if i == 1 then
this.panelist[i].jianEffect = Util.GetGameObject(this.panelist[i].jian, "Effect_UI_SupremeHeroPopup_jian")
this.panelist[i].Fx_mat_UI_SupremeHeroPopup_daohen = Util.GetGameObject(self.gameObject, "Fx_mat_UI_SupremeHeroPopup_daohen")
this.panelist[i].Fx_mat_UI_SupremeHeroPopup_renwuchuxian = Util.GetGameObject(self.gameObject, "Fx_mat_UI_SupremeHeroPopup_renwuchuxian")
this.panelist[i].Fx_mat_UI_SupremeHeroPopup_changzhu = Util.GetGameObject(this.panelist[i].Fx_mat_UI_SupremeHeroPopup_renwuchuxian, "Particle System")
this.panelist[i].Fx_mat_UI_SupremeHeroPopup_renwuchuxian.gameObject:SetActive(true)
elseif i == 2 then
this.panelist[i].jianEffect = Util.GetGameObject(this.panelist[i].role, "Image/fx_yujiantongxing_01")
this.panelist[i].Fx_mat_UI_SupremeHeroPopup_daohen = Util.GetGameObject(this.panelist[i].role, "Image1/fx_yujiantongxing_02")
this.panelist[i].Fx_mat_UI_SupremeHeroPopup_renwuchuxian = Util.GetGameObject(this.panelist[i].role, "Image (1)/fx_yujiantongxing_03")
this.panelist[i].Fx_mat_UI_SupremeHeroPopup_changzhu = Util.GetGameObject(this.panelist[i].role, "fx_yujiantongxing_luodi")
this.panelist[i].Fx_mat_UI_SupremeHeroPopup_renwuchuxian.gameObject:SetActive(false)
end
this.panelist[i].jianEffect.gameObject:SetActive(false)
this.panelist[i].Fx_mat_UI_SupremeHeroPopup_daohen.gameObject:SetActive(false)
this.panelist[i].Fx_mat_UI_SupremeHeroPopup_changzhu.gameObject:SetActive(false)
end
end
function this.LoadLive2D()
local liveId = ActivityGiftManager.GetActivityDataById(42).Drawing
heroId = liveId or 10011
heroData = heroConfig[heroId]
liveId = heroConfig[heroId].Live
this.clickName.text = GetLanguageStrById(heroConfig[heroId].ReadingName)
SetTextVerTial(this.clickName,Vector3.New(59,-10,0))
live2dResName = artResConfig[liveId].Name
this.proImage.sprite = this.spLoader:LoadSprite(GetProStrImageByProNum(heroConfig[heroId].PropertyName))
end
function SupremeHeroPopup:OnSortingOrderChange()
local layer = self.sortingOrder
Util.SetParticleSortLayer(this.effectRoot3, layer + 1)
Util.SetParticleSortLayer(this.effectRoot5, layer + 1)
Util.SetParticleSortLayer(this.Effect_UI_SupremeHeroPopup_zhuzi, layer + 1)
for i = 1,#this.panelist do
Util.SetParticleSortLayer(this.panelist[i].jianEffect, layer + 1)
Util.SetParticleSortLayer(this.panelist[i].Fx_mat_UI_SupremeHeroPopup_daohen, layer + 1)
Util.SetParticleSortLayer(this.panelist[i].Fx_mat_UI_SupremeHeroPopup_renwuchuxian, layer + 1)
Util.SetParticleSortLayer(this.panelist[i].Fx_mat_UI_SupremeHeroPopup_changzhu, layer + 1)
end
this.btnLayer.overrideSorting = true
this.btnLayer.sortingOrder = layer + 1
end
--绑定事件(用于子类重写)
function SupremeHeroPopup:BindEvent()
--返回按钮
Util.AddClick(this.backBtn,function()
if not canClose then return end
self:ClosePanel()
end)
--完成按钮
Util.AddClick(this.doneBtn,function()
if actIsOpen then
local finishedNum,isGetBigReward = this.GetBtnState()
if finishedNum >= 3 and not isGetBigReward then
NetManager.GetActivityRewardRequest(idList[curPage].bigId, ActivityTypeDef.SupremeHero, function (drop)
UIManager.OpenPanel(UIName.RewardItemPopup, drop, 1,function()
actData = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.SupremeHero)
this.SetButtonState()
end)
local time=PlayerPrefs.GetString(PlayerManager.uid..PlayerManager.serverInfo.server_id.."supermeMan",0)
if time ~= 666 then
PlayerPrefs.SetString(PlayerManager.uid..PlayerManager.serverInfo.server_id.."supermeMan",GetTimeStamp())
Game.GlobalEvent:DispatchEvent(GameEvent.Player.OnPlayerGetSuperManReward)
end
CheckRedPointStatus(RedPointType.SupremeHero)
this.tianjingzunzheRed.gameObject:SetActive(this.RefreshRedPoint(1))
this.lingxiaobaojianRed.gameObject:SetActive(this.RefreshRedPoint(2))
end)
end
else
PopupTipPanel.ShowTip(Language[10024])
end
end)
--预览按钮
Util.AddClick(this.previewBtn,function()
UIManager.OpenPanel(UIName.RoleGetInfoPopup, false, heroId, heroData.Star)
end)
Util.AddClick(this.click, function()
UIManager.OpenPanel(UIName.RoleGetInfoPopup, false, heroId, heroData.Star)
end)
Util.AddClick(this.tianjingzunzhe, function()
curPage = 1
this.SetMissionData()
end)
Util.AddClick(this.lingxiaobaojian, function()
curPage = 2
this.SetMissionData()
end)
RedpotManager.BindObject(RedPointType.SupremeHero_mission3,this.redPot3)
end
--添加事件监听(用于子类重写)
function SupremeHeroPopup:AddListener()
end
--移除事件监听(用于子类重写)
function SupremeHeroPopup:RemoveListener()
end
--界面打开时调用(用于子类重写)
local fun = nil
function SupremeHeroPopup:OnOpen(_fun)
Timer.New(function ()
SoundManager.PlaySound(SoundConfig.UI_Hd_yhdd)
end,0.5):Start()
fun = _fun
end
function SupremeHeroPopup:OnShow()
isFrist = true
if ActivityGiftManager.CheckSupremeMission(1,true) then
curPage = 2
else
curPage = 1
end
local actData = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.SupremeHero)
if #actData.mission > 3 then
this.lingxiaobaojian.gameObject:SetActive(true)
else
curPage = 1
this.lingxiaobaojian.gameObject:SetActive(false)
end
--curPage = 2
this.InitShowPanel()
this.tianjingzunzheRed.gameObject:SetActive(this.RefreshRedPoint(1))
this.lingxiaobaojianRed.gameObject:SetActive(this.RefreshRedPoint(2))
end
function this.InitShowPanel()
--初始化静态显示数据
this.InitShow()
canClose = false
this.effectTime = nil
this.effectTime = Timer.New(function ()
canClose = true
isFrist = false
end, 5)
this.effectTime:Start()
end
function this.InitShow()
ActivityGiftManager.isFirstForSupremeHero = true
actIsOpen = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.SupremeHero) > 0
actData = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.SupremeHero)
this.SetMissionData()
-- 开始倒计时
local endTime = ActivityGiftManager.GetTaskEndTime(ActivityTypeDef.SupremeHero)
this.activityTime.text = ""
if not this.timer then
this.timer = Timer.New(function ()
local tempTime = endTime - PlayerManager.serverTime
if tempTime > 0 then
if tempTime >= 86400 then
this.activityTime.text = TimeToDH(tempTime)
else
this.activityTime.text = TimeToHMS(tempTime)
end
else
this.activityTime.text = Language[10119]
Util.SetGray(this.doneBtn, true)
this.doneBtn:GetComponent("Button").enabled = false
this.timer:Stop()
end
end, 1, -1, true)
end
this.timer:Start()
end
function this.SetMissionData()
for i = 1,#this.panelist do
for k,v in pairs(this.panelist[i]) do
if i == curPage then
if v.gameObject.name == "Fx_mat_UI_SupremeHeroPopup_renwuchuxian" then
elseif isFrist then
if v.gameObject.name == "Particle System" then
Timer.New(function()
v.gameObject:SetActive(true)
end,3.2):Start()
else
Timer.New(function()
v.gameObject:SetActive(true)
end,3.6):Start()
end
else
v.gameObject:SetActive(true)
end
else
if i == 1 and v.gameObject.name == "Fx_mat_UI_SupremeHeroPopup_renwuchuxian" then
else
v.gameObject:SetActive(false)
end
end
end
end
Timer.New(function()
isFrist = false
end,4):Start()
if curPage == 1 then
this.previewBtn.gameObject:SetActive(true)
else
this.previewBtn.gameObject:SetActive(false)
end
for i = 1,#this.RewardList do
this.RewardList[i].go.gameObject:SetActive(false)
end
for j = 1,3 do
if this.RewardList[j] then
this.RewardList[j].go.gameObject:SetActive(true)
local dataConfig = activityConfig[idList[curPage][j].id]
this.RewardList[j].title.text = GetLanguageStrById(dataConfig.ContentsShow)
--if dataConfig.ExtraParm == 0 then
if dataConfig.ExtraParm and dataConfig.ExtraParm[1] and dataConfig.ExtraParm[1] == 0 then
Log(string.format("ActivityRewardConfig表中ID为%s对应的ExtraParm项数据为空", idList[curPage][j].id))
Log("请检查表或者重新导表!")
return
end
-- local itemId = dataConfig.ExtraParm
-- local itemnum = 1
local itemId = dataConfig.ExtraParm[1]
local itemnum = dataConfig.ExtraParm[2] or 0
if not this.itemList[j] then
this.itemList[j] = SubUIManager.Open(SubUIConfig.ItemView, this.RewardList[j].frame.transform)
end
this.itemList[j]:OnOpen(false, {itemId, itemnum}, 0.92)
this.itemList[j].num.gameObject:SetActive(itemnum > 1)
this.RefreshItemData(j,idList[curPage][j].id)
Util.AddOnceClick(this.RewardList[j].Btn,function()
idList[curPage][j].jumpevent()
Game.GlobalEvent:DispatchEvent(GameEvent.PatFace.PatFaceClear)
this:ClosePanel()
end)
Util.AddOnceClick(this.RewardList[j].btnGet,function()
NetManager.GetActivityRewardRequest(idList[curPage][j].id, actData.activityId,function(drop)
UIManager.OpenPanel(UIName.RewardItemPopup,drop,1,function()
actData = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.SupremeHero)
this.RefreshItemData(j,idList[curPage][j].id)
this.SetButtonState()
this.tianjingzunzheRed.gameObject:SetActive(this.RefreshRedPoint(1))
this.lingxiaobaojianRed.gameObject:SetActive(this.RefreshRedPoint(2))
end)
end)
end)
end
end
if curPage == 1 then
this.tipText.text = string.format(idList[curPage][1].btnTip,GetLanguageStrById(heroConfig[heroId].ReadingName))
else
this.tipText.text = activityConfig[idList[curPage].bigId].ContentsShow
end
this.SetButtonState()
end
function this.RefreshItemData(index,missionId)
for i = 1,#actData.mission do
if actData.mission[i].missionId == missionId then
this.RewardList[index].Btn.gameObject:SetActive(actData.mission[i].state == 0)
this.RewardList[index].btnGet.gameObject:SetActive(actData.mission[i].state == 3)
this.RewardList[index].doneImg.gameObject:SetActive(actData.mission[i].state == 1 or actData.mission[i].state == 2)
end
end
end
function this.SetButtonState()
local finishedNum,isGetBigReward = this.GetBtnState()
local total = 3
local color = finishedNum < total and "#FF0000FF" or "#F4D98AFF"
this.taskProgress.text = string.format(" <color=%s>%s</color>/3", color, finishedNum)
Util.SetGray(this.doneBtn, (finishedNum < total) or isGetBigReward)
this.doneBtn:GetComponent("Button").enabled = (finishedNum >= total) and not isGetBigReward
if finishedNum < total then
this.btnText.text = "未完成"
elseif isGetBigReward then
this.btnText.text = "已领取"
else
this.btnText.text = "领取"
end
end
function this.GetBtnState()
local finishedNum = 0
local isGetBigReward = true
for i = 1,#actData.mission do
if activityConfig[actData.mission[i].missionId].Sort == curPage then
if actData.mission[i].state == 1 or actData.mission[i].state == 2 then
finishedNum = finishedNum + 1
end
if curPage == 1 then
if actData.mission[i].state ~= 2 then
isGetBigReward = false
end
end
end
if curPage == 2 and activityConfig[actData.mission[i].missionId].Sort == 3 then
isGetBigReward = (actData.mission[i].state == 1 or actData.mission[i].state == 2) and true or false
end
end
return finishedNum,isGetBigReward
end
function this.RefreshRedPoint(indexType)
local isShow = true
if indexType ~= 1 then
isShow = false
end
for k,v in ipairs(actData.mission) do
if indexType == 1 then
if activityConfig[v.missionId].Sort == indexType then
if v.state == 3 then
return true
end
if v.state == 2 or v.state == 0 then
isShow = false
end
end
else
if activityConfig[v.missionId].Sort ~= 1 then
if v.state == 3 then
return true
end
end
end
end
return isShow
end
--界面关闭时调用(用于子类重写)
function SupremeHeroPopup:OnClose()
if this.timer then
this.timer:Stop()
this.timer = nil
end
if this.effectTime then
this.effectTime:Stop()
this.effectTime = nil
end
if fun then
fun()
fun = nil
end
curPage = 0
for k,v in pairs(this.itemList) do
SubUIManager.Close(v)
end
this.itemList = {}
for i = 1,#this.panelist do
for k,v in pairs(this.panelist[i]) do
if v.gameObject.name == "Fx_mat_UI_SupremeHeroPopup_renwuchuxian" then
else
v.gameObject:SetActive(false)
end
end
end
end
--界面销毁时调用(用于子类重写)
function SupremeHeroPopup:OnDestroy()
this.spLoader:Destroy()
this.RewardList = {}
this.panelist = {}
end
return SupremeHeroPopup