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

226 lines
7.3 KiB
Lua
Raw Normal View History

2020-08-06 17:37:07 +08:00
require("Base/BasePanel")
2020-07-16 20:24:28 +08:00
XuanYuanMirrorPanel = Inherit(BasePanel)
2020-08-05 15:00:56 +08:00
local specialConfig = ConfigManager.GetConfig(ConfigName.SpecialConfig)
2020-07-16 20:24:28 +08:00
local this = XuanYuanMirrorPanel
2020-07-15 16:27:58 +08:00
local hasFresh = false
local orginLayer = 0
2020-08-05 15:00:56 +08:00
local type = {
[1] = {
bg = "ui_fb_btn_jy",
2020-08-11 09:48:21 +08:00
name = "人杰宝境",
2020-08-05 15:00:56 +08:00
gameObject = "btnRoot/circle/root/renjiebaojing" ,
},
[2] = {
bg = "ui_fb_btn_gh",
2020-08-11 09:48:21 +08:00
name = "佛禅宝境",
2020-08-05 15:00:56 +08:00
gameObject = "btnRoot/circle/root/fuochanbaojing" ,
},
[3] = {
bg = "ui_fb_btn_sl",
2020-08-11 09:48:21 +08:00
name = "妖灵宝境",
2020-08-05 15:00:56 +08:00
gameObject = "btnRoot/circle/root/yaolingbaojing" ,
},
[4] = {
bg = "ui_fb_btn_jq",
2020-08-11 09:48:21 +08:00
name = "道玄宝境",
2020-08-05 15:00:56 +08:00
gameObject = "btnRoot/circle/root/daoxuanbaojing" ,
},
2020-08-14 17:43:24 +08:00
2020-08-05 15:00:56 +08:00
}
2020-08-11 09:48:21 +08:00
local NumConvertWeek = {[1]="",[2]="",[3]="",[4]="",[5]="",[6]="",[7]=""}
2020-07-15 16:27:58 +08:00
--初始化组件(用于子类重写)
2020-07-16 20:24:28 +08:00
function this:InitComponent()
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.btnClose = Util.GetGameObject(self.gameObject, "btnRoot/btnBack")
this.remainTimes = Util.GetGameObject(self.gameObject, "remainTimes") :GetComponent("Text")
2020-07-15 16:27:58 +08:00
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")
end
local index = 1
--绑定事件(用于子类重写)
2020-07-16 20:24:28 +08:00
function this:BindEvent()
Util.AddClick(this.btnHelp, function()
UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.XuanYuanMirror,this.helpPosition.x,this.helpPosition.y)
2020-07-15 16:27:58 +08:00
end)
2020-07-16 20:24:28 +08:00
Util.AddClick(this.btnRank, function()
2020-08-11 15:11:33 +08:00
UIManager.OpenPanel(UIName.XuanYuanMirrorRankPopup)
2020-07-15 16:27:58 +08:00
end)
2020-07-16 20:24:28 +08:00
Util.AddClick(this.btnReward, function()
2020-08-11 15:11:33 +08:00
UIManager.OpenPanel(UIName.XuanYuanMirrorRewardSortPopup)
2020-07-16 20:24:28 +08:00
end)
Util.AddClick(this.btnClose, function()
this:OnClose()
2020-07-15 16:27:58 +08:00
end)
end
--添加事件监听(用于子类重写)
2020-07-16 20:24:28 +08:00
function this:AddListener()
2020-08-12 19:17:05 +08:00
Game.GlobalEvent:AddEvent(GameEvent.FunctionCtrl.OnXuanYuanFunctionChange, this.UpdateCarbonContent)
2020-07-15 16:27:58 +08:00
end
--移除事件监听(用于子类重写)
2020-07-16 20:24:28 +08:00
function this:RemoveListener()
2020-08-12 19:17:05 +08:00
Game.GlobalEvent:RemoveEvent(GameEvent.FunctionCtrl.OnXuanYuanFunctionChange, this.UpdateCarbonContent)
2020-07-15 16:27:58 +08:00
end
2020-07-16 20:24:28 +08:00
function this:OnOpen()
2020-08-12 21:07:13 +08:00
this.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.Main })
2020-07-15 16:27:58 +08:00
end
--界面打开时调用(用于子类重写)
2020-07-16 20:24:28 +08:00
function this:OnShow(...)
2020-08-11 09:48:21 +08:00
this.UpdateCarbonContent()
2020-07-15 16:27:58 +08:00
-- 音效
SoundManager.PlayMusic(SoundConfig.BGM_Carbon)
-- 播放动画
2020-07-16 20:24:28 +08:00
this:PlayAni()
2020-07-15 16:27:58 +08:00
this.PlayScaleAnim()
end
2020-08-05 15:00:56 +08:00
function this:GetOpenTime(id)
2020-08-05 21:01:20 +08:00
local str = nil
2020-08-11 09:48:21 +08:00
local isFunction = false
2020-08-11 15:11:33 +08:00
local config = ConfigManager.GetConfigData(ConfigName.SpecialConfig,70)
2020-08-11 09:48:21 +08:00
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.. "、周"..NumConvertWeek[tonumber(m)]
else
str = ""..NumConvertWeek[tonumber(m)]
end
end
end
end
end
end
2020-08-05 21:01:20 +08:00
return str
2020-08-05 15:00:56 +08:00
end
2020-08-11 09:48:21 +08:00
this.UpdateCarbonContent = function()
2020-08-05 15:00:56 +08:00
if not type then
return
end
2020-08-12 19:17:05 +08:00
LogYellow("收到消息,刷新界面")
2020-08-11 09:48:21 +08:00
local openFunctions = {}
2020-08-05 15:00:56 +08:00
for k,v in pairs(type) do
2020-08-11 09:48:21 +08:00
local go = Util.GetGameObject(this.gameObject, v.gameObject)
2020-08-05 15:00:56 +08:00
go:GetComponent("Image").sprite = Util.LoadSprite(v.bg)
Util.GetGameObject(go, "titileBg/Text"):GetComponent("Text").text =v.name
2020-08-11 09:48:21 +08:00
local state = XuanYuanMirrorManager.GetMirrorState(k) == 1
if not state then
local timeStr = this:GetOpenTime(k)
2020-08-05 21:01:20 +08:00
Util.GetGameObject(go, "timeBg/Text"):GetComponent("Text").text = timeStr.."开启"
2020-08-13 14:43:44 +08:00
Util.GetGameObject(go, "redPoint").gameObject:SetActive(false)
2020-08-05 21:01:20 +08:00
else
2020-08-11 09:48:21 +08:00
openFunctions[k] = {}
openFunctions[k].timeComp = Util.GetGameObject(go, "timeBg/Text"):GetComponent("Text")
2020-08-13 14:43:44 +08:00
if XuanYuanMirrorManager.CarbonRedCheck() then
Util.GetGameObject(go, "redPoint").gameObject:SetActive(true)
else
Util.GetGameObject(go, "redPoint").gameObject:SetActive(false)
end
2020-08-05 21:01:20 +08:00
end
2020-08-11 09:48:21 +08:00
Util.SetGray(go,not state)
2020-08-05 15:00:56 +08:00
Util.AddOnceClick(go ,function()
2020-08-11 09:48:21 +08:00
if state then
2020-08-12 13:34:07 +08:00
UIManager.OpenPanel(UIName.XuanYuanMirrorPanelList,k)
2020-08-11 09:48:21 +08:00
else
2020-08-12 19:58:09 +08:00
PopupTipPanel.ShowTip(type[k].name.."未开启!")
2020-08-11 09:48:21 +08:00
end
2020-08-05 15:00:56 +08:00
end)
end
2020-08-11 09:48:21 +08:00
this:TimeCountDown(openFunctions)
this.remainTimes.text = XuanYuanMirrorManager.GetTimeTip()
2020-08-05 15:00:56 +08:00
end
2020-07-15 16:27:58 +08:00
function this:OnSortingOrderChange()
Util.AddParticleSortLayer(this.effect, self.sortingOrder - orginLayer)
Util.AddParticleSortLayer(this.wind, self.sortingOrder - orginLayer)
orginLayer = self.sortingOrder
end
2020-07-16 20:24:28 +08:00
function this:PlayAni()
2020-07-15 16:27:58 +08:00
-- 开门音效
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
--界面关闭时调用(用于子类重写)
2020-07-16 20:24:28 +08:00
function this:OnClose()
2020-07-15 16:27:58 +08:00
this.isPlayDoorAudio = false
2020-08-11 09:48:21 +08:00
self.gameObject:SetActive(false)
PlayerManager.carbonType = 2
UIManager.OpenPanel(UIName.CarbonTypePanelV2)
2020-07-15 16:27:58 +08:00
end
--界面销毁时调用(用于子类重写)
2020-07-16 20:24:28 +08:00
function this:OnDestroy()
2020-07-15 16:27:58 +08:00
SubUIManager.Close(this.UpView)
2020-08-11 09:48:21 +08:00
if self.timer then
self.timer:Stop()
self.timer = 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).."后关闭"
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).."后关闭"
else
this:UpdateCarbonContent()
end
end
end, 1, -1, true)
self.timer:Start()
2020-07-15 16:27:58 +08:00
end
2020-07-16 20:24:28 +08:00
return XuanYuanMirrorPanel