miduo_client/Assets/ManagedResources/~Lua/Modules/Carbon/XuanYuanMirrorPanel.lua

302 lines
10 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.

require("Base/BasePanel")
XuanYuanMirrorPanel = Inherit(BasePanel)
local specialConfig = ConfigManager.GetConfig(ConfigName.SpecialConfig)
local this = XuanYuanMirrorPanel
local hasFresh = false
local orginLayer = 0
local activityType = {
[1] = {
bg = "UI_hz_xy_07",
name = Language[10331],
gameObject = "renjiebaojing" ,
},
[2] = {
bg = "UI_hz_xy_08",
name = Language[10332],
gameObject = "fuochanbaojing" ,
},
[3] = {
bg = "UI_hz_xy_06",
name = Language[10333],
gameObject = "yaolingbaojing" ,
},
[4] = {
bg = "UI_hz_xy_05",
name = Language[10334],
gameObject = "daoxuanbaojing" ,
},
}
local NumConvertWeek = {[1]=Language[10001],[2]=Language[10002],[3]=Language[10003],[4]=Language[10004],[5]=Language[10005],[6]=Language[10006],[7]=Language[10335]}
--初始化组件(用于子类重写)
function this:InitComponent()
this.spLoader = SpriteLoader.New()
this.btnHelp = Util.GetGameObject(self.gameObject, "btnRoot/btnhelp")
this.helpPosition = this.btnHelp:GetComponent("RectTransform").localPosition
this.btnRank = Util.GetGameObject(self.gameObject, "btnRoot/btnRank")
this.btnReward = Util.GetGameObject(self.gameObject, "btnRoot/btnReward")
this.btnRank:SetActive(false)
this.btnReward:SetActive(false)
this.btnClose = Util.GetGameObject(self.gameObject, "btnRoot/btnBack")
this.remainTimes = Util.GetGameObject(self.gameObject, "remainTimes") :GetComponent("Text")
this.effect = Util.GetGameObject(self.gameObject, "CarbonTypePanel_effect")
this.wind = Util.GetGameObject(self.gameObject, "CarbonTypePanel_effect/juneng_chenggong/GameObject")
orginLayer = 0
this.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform)
this.AnimRoot = Util.GetGameObject(self.gameObject, "btnRoot/circle/root")
-- NumConvertWeek = {[1]="一",[2]="二",[3]="三",[4]="四",[5]="五",[6]="六",[7]="日"}
-- activityType = {
-- [1] = {
-- bg = "ui_fb_btn_jy",
-- name = "人杰宝境",
-- gameObject = "renjiebaojing" ,
-- },
-- [2] = {
-- bg = "ui_fb_btn_gh",
-- name = "佛禅宝境",
-- gameObject = "fuochanbaojing" ,
-- },
-- [3] = {
-- bg = "ui_fb_btn_sl",
-- name = "妖灵宝境",
-- gameObject = "yaolingbaojing" ,
-- },
-- [4] = {
-- bg = "ui_fb_btn_jq",
-- name = "道玄宝境",
-- gameObject = "daoxuanbaojing" ,
-- },
-- }
end
local index = 1
--绑定事件(用于子类重写)
function this:BindEvent()
Util.AddClick(this.btnHelp, function()
UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.XuanYuanMirror,this.helpPosition.x,this.helpPosition.y)
end)
Util.AddClick(this.btnRank, function()
UIManager.OpenPanel(UIName.XuanYuanMirrorRankPopup)
end)
Util.AddClick(this.btnReward, function()
UIManager.OpenPanel(UIName.XuanYuanMirrorRewardSortPopup)
end)
Util.AddClick(this.btnClose, function()
this:ClosePanel()
end)
end
--添加事件监听(用于子类重写)
function this:AddListener()
Game.GlobalEvent:AddEvent(GameEvent.FunctionCtrl.OnXuanYuanFunctionChange, this.UpdateCarbonContent,1)
end
--移除事件监听(用于子类重写)
function this:RemoveListener()
Game.GlobalEvent:RemoveEvent(GameEvent.FunctionCtrl.OnXuanYuanFunctionChange, this.UpdateCarbonContent,1)
end
function this:OnOpen()
if not this.UpView then
this.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform)
end
this.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.Main })
end
--界面打开时调用(用于子类重写)
function this:OnShow(...)
this.UpdateCarbonContent(0)
-- 音效
SoundManager.PlayMusic(SoundConfig.BGM_Carbon)
-- 播放动画
this:PlayAni()
this.PlayScaleAnim()
end
function this:GetOpenTime(id)
local str = nil
local isFunction = false
local config = ConfigManager.GetConfigData(ConfigName.SpecialConfig,70)
if config then
for k,v in ipairs(string.split(config.Value,"|")) do
isFunction = false
for n,m in ipairs(string.split(v,"#")) do
if tonumber(n) == 1 and tonumber(m) == id then
isFunction = true
else
if isFunction then
if str then
str =str.. Language[10336]..NumConvertWeek[tonumber(m)]
else
str = Language[10337]..NumConvertWeek[tonumber(m)]
end
end
end
end
end
end
LogBlue(str.." 宝镜开启时间")
return str
end
this.refreshShow = function()
local openFunctions = {}
for k,v in pairs(activityType) do
local go = Util.GetGameObject(this.AnimRoot, v.gameObject)
if go then
go:GetComponent("Image").sprite = this.spLoader:LoadSprite(v.bg)
local textParnet = Util.GetGameObject(go, "titileBg")
local textName = Util.GetGameObject(textParnet, "Text"):GetComponent("Text")
textName.text =v.name
SetTextVerTial(Util.GetGameObject(textParnet, "Text"),Vector3.New(295.93,-10.17,0),"MiddleRight")
if GetCurLanguage() == 2 then
textName.fontSize = 36
end
local state = XuanYuanMirrorManager.GetMirrorState(k) == 1
--LogGreen(k.." 宝镜state:"..XuanYuanMirrorManager.GetMirrorState(k))
if not state or state == 0 then
local timeStr = this:GetOpenTime(k)
Util.GetGameObject(go, "timeBg/Text"):GetComponent("Text").text = timeStr..Language[10310]
Util.GetGameObject(go, "redPoint").gameObject:SetActive(false)
else
openFunctions[k] = {}
openFunctions[k].timeComp = Util.GetGameObject(go, "timeBg/Text"):GetComponent("Text")
if XuanYuanMirrorManager.CarbonRedCheck() then
Util.GetGameObject(go, "redPoint").gameObject:SetActive(true)
else
Util.GetGameObject(go, "redPoint").gameObject:SetActive(false)
end
end
Util.SetGray(go,not state)
Util.AddOnceClick(go ,function()
if state then
LogBlue("宝镜状态:"..activityType[k].name..XuanYuanMirrorManager.GetMirrorState(k))
UIManager.OpenPanel(UIName.XuanYuanMirrorPanelList,k)
else
LogBlue("宝镜未开启提示:"..activityType[k].name.."未开启!")
PopupTipPanel.ShowTip(activityType[k].name..Language[10338])
end
end)
end
end
this:TimeCountDown(openFunctions)
this.remainTimes.text = XuanYuanMirrorManager.GetTime()
end
this.UpdateCarbonContent = function(...)
LogBlue("type长度 "..LengthOfTable(activityType))
if not activityType then
activityType = {
[1] = {
bg = "UI_hz_xy_07",
name = Language[10331],
gameObject = "renjiebaojing" ,
},
[2] = {
bg = "UI_hz_xy_08",
name = Language[10332],
gameObject = "fuochanbaojing" ,
},
[3] = {
bg = "UI_hz_xy_06",
name = Language[10333],
gameObject = "yaolingbaojing" ,
},
[4] = {
bg = "UI_hz_xy_05",
name = Language[10334],
gameObject = "daoxuanbaojing" ,
},
}
end
local temp = {...}
local temp = temp[1]
if index and index >= 0 then
this.refreshShow()
Timer.New(this.refreshShow, index):Start()
end
end
function this:OnSortingOrderChange()
Util.AddParticleSortLayer(this.effect, self.sortingOrder - orginLayer)
Util.AddParticleSortLayer(this.wind, self.sortingOrder - orginLayer)
orginLayer = self.sortingOrder
end
function this:PlayAni()
-- 开门音效
if not this.isPlayDoorAudio then
this.isPlayDoorAudio = true
Timer.New(function ()
if this.isPlayDoorAudio then
SoundManager.PlaySound(SoundConfig.Sound_Door)
end
end, 1.3):Start()
end
end
function this.PlayScaleAnim()
local isOpen = FunctionOpenMananger.GetRootState(PanelTypeView.Carbon)
if isOpen then
PlayUIAnim(this.AnimRoot)
else
PlayUIAnimBack(this.AnimRoot)
end
end
--界面关闭时调用(用于子类重写)
function this:OnClose()
if self.timer then
self.timer:Stop()
self.timer = nil
end
this.isPlayDoorAudio = false
self.gameObject:SetActive(false)
end
--界面销毁时调用(用于子类重写)
function this:OnDestroy()
this.spLoader:Destroy()
if self.timer then
self.timer:Stop()
self.timer = nil
end
if this.UpView then
SubUIManager.Close(this.UpView)
this.UpView = nil
end
end
--刷新时间
function this:TimeCountDown(_openFunctions)
if self.timer then
self.timer:Stop()
self.timer = nil
end
for k,v in pairs(_openFunctions) do
v.remainTime = XuanYuanMirrorManager.GetMirrorEndTime(k) - PlayerManager.serverTime
v.timeComp.text = TimeToHMS(v.remainTime)..Language[10339]
end
self.timer = Timer.New(function()
for k,v in pairs(_openFunctions) do
v.remainTime = v.remainTime - 1
if v.remainTime > 0 then
v.timeComp.text = TimeToHMS(v.remainTime)..Language[10339]
else
this:UpdateCarbonContent(1)
end
end
end, 1, -1, true)
self.timer:Start()
end
return XuanYuanMirrorPanel