require("Base/BasePanel") XuanYuanMirrorPanel = Inherit(BasePanel) local specialConfig = ConfigManager.GetConfig(ConfigName.SpecialConfig) local this = XuanYuanMirrorPanel local hasFresh = false local orginLayer = 0 local type = { [1] = { bg = "ui_fb_btn_jy", name = "人杰宝境", gameObject = "btnRoot/circle/root/renjiebaojing" , redPointType = RedPointType.People_Mirror }, [2] = { bg = "ui_fb_btn_gh", name = "佛禅宝境", gameObject = "btnRoot/circle/root/fuochanbaojing" , redPointType = RedPointType.People_Mirror }, [3] = { bg = "ui_fb_btn_sl", name = "妖灵宝境", gameObject = "btnRoot/circle/root/yaolingbaojing" , redPointType = RedPointType.People_Mirror }, [4] = { bg = "ui_fb_btn_jq", name = "道玄宝境", gameObject = "btnRoot/circle/root/daoxuanbaojing" , redPointType = RedPointType.People_Mirror }, } local NumConvertWeek = {[1]="一",[2]="二",[3]="三",[4]="四",[5]="五",[6]="六",[7]="日"} --初始化组件(用于子类重写) 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") 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 --绑定事件(用于子类重写) 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:OnClose() end) end --添加事件监听(用于子类重写) function this:AddListener() Game.GlobalEvent:AddEvent(GameEvent.FunctionCtrl.OnXuanYuanFunctionChange, this.UpdateCarbonContent) end --移除事件监听(用于子类重写) function this:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.FunctionCtrl.OnXuanYuanFunctionChange, this.UpdateCarbonContent) end function this:OnOpen() this.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.Main }) end --界面打开时调用(用于子类重写) function this:OnShow(...) this.UpdateCarbonContent() -- 音效 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.. "、周"..NumConvertWeek[tonumber(m)] else str = "周"..NumConvertWeek[tonumber(m)] end end end end end end return str end this.UpdateCarbonContent = function() if not type then return end LogYellow("收到消息,刷新界面") local openFunctions = {} for k,v in pairs(type) do local go = Util.GetGameObject(this.gameObject, v.gameObject) BindRedPointObject(v.redPointType, Util.GetGameObject(go, "redPoint")) go:GetComponent("Image").sprite = Util.LoadSprite(v.bg) Util.GetGameObject(go, "titileBg/Text"):GetComponent("Text").text =v.name local state = XuanYuanMirrorManager.GetMirrorState(k) == 1 if not state then local timeStr = this:GetOpenTime(k) Util.GetGameObject(go, "timeBg/Text"):GetComponent("Text").text = timeStr.."开启" else openFunctions[k] = {} openFunctions[k].timeComp = Util.GetGameObject(go, "timeBg/Text"):GetComponent("Text") end Util.SetGray(go,not state) Util.AddOnceClick(go ,function() if state then UIManager.OpenPanel(UIName.XuanYuanMirrorPanelList,k) else PopupTipPanel.ShowTip(type[k].name.."未开启!") end end) end this:TimeCountDown(openFunctions) this.remainTimes.text = XuanYuanMirrorManager.GetTimeTip() 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() this.isPlayDoorAudio = false self.gameObject:SetActive(false) PlayerManager.carbonType = 2 UIManager.OpenPanel(UIName.CarbonTypePanelV2) end --界面销毁时调用(用于子类重写) function this:OnDestroy() for k,v in pairs(type) do ClearRedPointObject(v.redPointType,Util.GetGameObject(self.gameObject, v.gameObject.."/redPoint")) end SubUIManager.Close(this.UpView) 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() end return XuanYuanMirrorPanel