require("Base/BasePanel") local YuJianXingPanel = Inherit(BasePanel) local configData = ConfigManager.GetConfigData(ConfigName.RidingSwardConfig, 1) --初始化组件(用于子类重写) function YuJianXingPanel:InitComponent() self.spLoader = SpriteLoader.New() --Btns self.backBtn = Util.GetGameObject(self.gameObject, "backBtn") self.helpBtn = Util.GetGameObject(self.gameObject, "helpBtn") self.helpPosition = self.helpBtn:GetComponent("RectTransform").localPosition self.btnBet = Util.GetGameObject(self.gameObject, "Bgs/Down/btns/btnBet") self.redPointBet = Util.GetGameObject(self.btnBet, "redPoint") self.btnRecord = Util.GetGameObject(self.gameObject, "Bgs/Down/btns/btnRecord") self.redPoint = Util.GetGameObject(self.btnRecord, "redPoint") self.btnRank = Util.GetGameObject(self.gameObject, "Bgs/Down/btns/btnRank") self.btnStore = Util.GetGameObject(self.gameObject, "Bgs/Down/btns/btnStore") self.btnGift = Util.GetGameObject(self.gameObject, "Bgs/Down/btns/btnGift") self.btnGiftEffect = Util.GetGameObject(self.btnGift, "Fx_Circle 1") --Text self.curActTime = Util.GetGameObject(self.gameObject, "Bgs/Up/Board/time1"):GetComponent("Text") self.nextRoundTime = Util.GetGameObject(self.gameObject, "Bgs/Up/Board/time2"):GetComponent("Text") self.canBetTime = Util.GetGameObject(self.gameObject, "Bgs/Up/Board/time3"):GetComponent("Text") --Bg self.bg = Util.GetGameObject(self.gameObject, "Bgs") --count self.countFrame = Util.GetGameObject(self.gameObject, "StartAni") self.countFrame:SetActive(false) self.countmask = Util.GetGameObject(self.countFrame, "mask") self.countbg = Util.GetGameObject(self.countFrame, "bg") self.countText1 = Util.GetGameObject(self.countFrame, "Text1") self.countText2 = Util.GetGameObject(self.countFrame, "Text2") self.countText3 = Util.GetGameObject(self.countFrame, "Text3") self.countText4 = Util.GetGameObject(self.countFrame, "Text4") --waiting self.waiting = Util.GetGameObject(self.gameObject, "Waiting") self.waitTime = Util.GetGameObject(self.waiting, "time"):GetComponent("Text") --upview self.UpView = SubUIManager.Open(SubUIConfig.UpView, self.bg.transform, { showType = UpViewOpenType.ShowLeft }) end --绑定事件(用于子类重写) function YuJianXingPanel:BindEvent() Util.AddOnceClick(self.backBtn, function() SwitchPanel.OpenPanel(nil, function() self:ClosePanel() end) end) Util.AddOnceClick(self.btnGift, function() JumpManager.GoJump(40050, nil, ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.YuJianXing)) end) Util.AddOnceClick(self.helpBtn, function() UIManager.OpenPanel(UIName.HelpPopup, HELP_TYPE.YuJianXing, self.helpPosition.x, self.helpPosition.y) end) Util.AddOnceClick(self.btnBet, function() if YuJianXingManager.curState == 2 then PopupTipPanel.ShowTip(Language[13040]) return end if YuJianXingManager.curState == 3 then PopupTipPanel.ShowTip(Language[13041]) return end UIManager.OpenPanel(UIName.GeneralBigPopup, GENERAL_POPUP_TYPE.YuJianBet) end) Util.AddOnceClick(self.btnRecord, function() NetManager.RidingSwardInfoRequest(function() if #YuJianXingManager.curRecordList <= 0 then PopupTipPanel.ShowTip(Language[13042]) return end UIManager.OpenPanel(UIName.GeneralPopup, GENERAL_POPUP_TYPE.YuJianXingRecord) end) end) Util.AddOnceClick(self.btnRank, function() UIManager.OpenPanel(UIName.GeneralBigPopup, GENERAL_POPUP_TYPE.YuJianLastResult) end) Util.AddOnceClick(self.btnStore, function() if YuJianXingManager.curState == 2 then PopupTipPanel.ShowTip(Language[13043]) return end JumpManager.GoJump(40038) end) end --添加事件监听(用于子类重写) function YuJianXingPanel:AddListener() Game.GlobalEvent:AddEvent(GameEvent.FiveAMRefresh.ServerNotifyRefresh, self.MakeRequest, self) Game.GlobalEvent:AddEvent(GameEvent.YuJianXing.GameFinished, self.Refresh, self) Game.GlobalEvent:AddEvent(GameEvent.YuJianXing.UpdateBetTime, self.SetBetTime, self) end --移除事件监听(用于子类重写) function YuJianXingPanel:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.FiveAMRefresh.ServerNotifyRefresh, self.MakeRequest, self) Game.GlobalEvent:RemoveEvent(GameEvent.YuJianXing.GameFinished, self.Refresh, self) Game.GlobalEvent:RemoveEvent(GameEvent.YuJianXing.UpdateBetTime, self.SetBetTime, self) end function YuJianXingPanel:OnSortingOrderChange() Util.SetParticleSortLayer(self.btnGiftEffect, self.sortingOrder + 1) end --界面打开时调用(用于子类重写) function YuJianXingPanel:OnOpen() -- NetManager.RidingSwardInfoRequest() end -- 打开,重新打开时回调 function YuJianXingPanel:OnShow() self.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.YuJianXing }) Util.SetParticleSortLayer(self.btnGiftEffect, self.sortingOrder + 1) self:MakeRequest(function() if YuJianXingManager.curState == 2 then YuJianXingManager.InWaiting = true end --开启地图 YuJianXingManager.OpenMap() self:Refresh() end) end function YuJianXingPanel:MakeRequest(func) local id = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.YuJianXing) CommonActPageManager.ShowIcon(self.btnGift, id) if id then NetManager.RidingSwardActivityRequest(id, function() if func then func() end NetManager.RidingSwardInfoRequest() end) end end function YuJianXingPanel:Refresh() YuJianXingManager.HideAllPlayers(not YuJianXingManager.InWaiting) self.waiting:SetActive(YuJianXingManager.InWaiting) --为小人在地图上下移动做处理 self.count = 0 self:SetTime() end --比赛开始动画 function YuJianXingPanel:StartAnimation() local thread = coroutine.start(function() self.countFrame:SetActive(true) self.countmask:SetActive(true) self.countbg:SetActive(true) self.countText1:SetActive(true) self.countText2:SetActive(false) self.countText3:SetActive(false) self.countText4:SetActive(false) PlayUIAnim(self.countmask) PlayUIAnim(self.countbg) PlayUIAnim(self.countText1) coroutine.wait(1) self.countText1:SetActive(false) self.countText2:SetActive(true) PlayUIAnim(self.countText2) coroutine.wait(1) self.countText2:SetActive(false) self.countText3:SetActive(true) PlayUIAnim(self.countText3) coroutine.wait(1) self.countText3:SetActive(false) self.countText4:SetActive(true) PlayUIAnim(self.countText4) coroutine.wait(1) self.countbg:SetActive(false) self.countText4:SetActive(false) self.countFrame:SetActive(false) --开始游戏 YuJianXingManager.SetGameState(true) end) end function YuJianXingPanel:SetTime() if self.timer then self.timer:Stop() self.timer = nil end local activityEnd = YuJianXingManager.activityTimeCount - GetTimeStamp() local roundEnd = YuJianXingManager.nextTimeCount - GetTimeStamp() if activityEnd > 86400 then self.curActTime.text = string.format(Language[13044], TimeToDHM(activityEnd)) else self.curActTime.text = string.format(Language[13044], TimeToHMS(activityEnd)) end if YuJianXingManager.curState == 1 then self.nextRoundTime.text = string.format(Language[13045], TimeToMS(roundEnd)) elseif YuJianXingManager.curState == 2 then self.nextRoundTime.text = string.format(Language[13046]) elseif YuJianXingManager.curState == 3 then self.nextRoundTime.text = string.format(Language[13047]) end self.canBetTime.text = string.format(Language[13048], configData.JoinCount - YuJianXingManager.joinCount) self.redPoint:SetActive(YuJianXingManager.CheckRecordList()) self.redPointBet:SetActive((configData.JoinCount - YuJianXingManager.joinCount > 0) and (#YuJianXingManager.curBetList < 2) and (YuJianXingManager.curState == 1)) self.waitTime.text = string.format(Language[13049], TimeToMS(roundEnd)) self.timer = Timer.New(function() self.redPoint:SetActive(YuJianXingManager.CheckRecordList()) self.redPointBet:SetActive((configData.JoinCount - YuJianXingManager.joinCount > 0) and (#YuJianXingManager.curBetList < 2) and (YuJianXingManager.curState == 1)) --设置人物上下飘动2s重置一次 if self.count % 2 == 0 then YuJianXingManager.ResetPlayerPosVertical() end self.count = self.count + 1 --回合倒计时 roundEnd = roundEnd - 1 if YuJianXingManager.curState == 1 then self.nextRoundTime.text = string.format(Language[13045], TimeToMS(roundEnd)) if roundEnd <= 0 then YuJianXingManager.ReGetInfo(function() roundEnd = YuJianXingManager.nextTimeCount - GetTimeStamp() if YuJianXingManager.curState == 2 then --一定要确认请求回来的是2才能开始不然一直请求 YuJianXingManager.ReloadPlayersData(YuJianXingManager.curResultId) self:StartAnimation() end end) end elseif YuJianXingManager.curState == 2 then self.nextRoundTime.text = string.format(Language[13046]) self.waitTime.text = string.format(Language[13049], TimeToMS(roundEnd)) if roundEnd <= 0 then YuJianXingManager.ReGetInfo(function() UIManager.OpenPanel(UIName.GeneralBigPopup, GENERAL_POPUP_TYPE.YuJianLastResult) self:Refresh() end) end elseif YuJianXingManager.curState == 3 then self.nextRoundTime.text = string.format(Language[13050]) end --活动倒计时 activityEnd = activityEnd - 1 if activityEnd > 86400 then self.curActTime.text = string.format(Language[13044], TimeToDHM(activityEnd)) else self.curActTime.text = string.format(Language[13044], TimeToHMS(activityEnd)) end self.canBetTime.text = string.format(Language[13048], configData.JoinCount - YuJianXingManager.joinCount) if activityEnd <= 0 then self:ClosePanel() end end, 1, -1) self.timer:Start() end --界面关闭时调用(用于子类重写) function YuJianXingPanel:OnClose() --关闭地图--直接销毁 YuJianXingManager.CloseMap() self.count = 0 if self.timer then self.timer:Stop() self.timer = nil end end --界面销毁时调用(用于子类重写) function YuJianXingPanel:OnDestroy() SubUIManager.Close(self.UpView) end return YuJianXingPanel