miduo_client/Assets/ManagedResources/~Lua/Modules/YuJianXing/YuJianXingPanel.lua

275 lines
11 KiB
Lua
Raw Normal View History

2025-03-14 11:58:20 +08:00
require("Base/BasePanel")
2021-09-28 10:34:05 +08:00
local YuJianXingPanel = Inherit(BasePanel)
2024-09-20 17:32:50 +08:00
local configData = ConfigManager.GetConfigData(ConfigName.RidingSwardConfig, 1)
2021-09-28 10:34:05 +08:00
--初始化组件(用于子类重写)
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")
2021-10-22 10:00:19 +08:00
self.redPointBet = Util.GetGameObject(self.btnBet, "redPoint")
2021-09-28 10:34:05 +08:00
self.btnRecord = Util.GetGameObject(self.gameObject, "Bgs/Down/btns/btnRecord")
2021-10-14 15:30:46 +08:00
self.redPoint = Util.GetGameObject(self.btnRecord, "redPoint")
2021-09-28 10:34:05 +08:00
self.btnRank = Util.GetGameObject(self.gameObject, "Bgs/Down/btns/btnRank")
self.btnStore = Util.GetGameObject(self.gameObject, "Bgs/Down/btns/btnStore")
2021-12-03 13:21:15 +08:00
self.btnGift = Util.GetGameObject(self.gameObject, "Bgs/Down/btns/btnGift")
2024-09-20 17:32:50 +08:00
self.btnGiftEffect = Util.GetGameObject(self.btnGift, "Fx_Circle 1")
2021-09-28 10:34:05 +08:00
--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
2021-10-14 19:57:40 +08:00
self.bg = Util.GetGameObject(self.gameObject, "Bgs")
2021-10-11 17:25:48 +08:00
--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")
2021-10-12 11:26:48 +08:00
--waiting
self.waiting = Util.GetGameObject(self.gameObject, "Waiting")
self.waitTime = Util.GetGameObject(self.waiting, "time"):GetComponent("Text")
2021-10-14 11:25:44 +08:00
--upview
2021-10-14 19:57:40 +08:00
self.UpView = SubUIManager.Open(SubUIConfig.UpView, self.bg.transform, { showType = UpViewOpenType.ShowLeft })
2021-09-28 10:34:05 +08:00
end
--绑定事件(用于子类重写)
function YuJianXingPanel:BindEvent()
2024-09-20 17:32:50 +08:00
Util.AddOnceClick(self.backBtn, function()
SwitchPanel.OpenPanel(nil, function()
2021-10-12 11:26:48 +08:00
self:ClosePanel()
end)
2021-09-28 10:34:05 +08:00
end)
2021-12-03 13:21:15 +08:00
Util.AddOnceClick(self.btnGift, function()
2024-09-20 17:32:50 +08:00
JumpManager.GoJump(40050, nil, ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.YuJianXing))
2021-12-03 13:21:15 +08:00
end)
2024-09-20 17:32:50 +08:00
Util.AddOnceClick(self.helpBtn, function()
UIManager.OpenPanel(UIName.HelpPopup, HELP_TYPE.YuJianXing, self.helpPosition.x, self.helpPosition.y)
2021-09-28 10:34:05 +08:00
end)
2024-09-20 17:32:50 +08:00
Util.AddOnceClick(self.btnBet, function()
if YuJianXingManager.curState == 2 then
2024-08-29 21:36:51 +08:00
PopupTipPanel.ShowTip(Language[13040])
return
end
if YuJianXingManager.curState == 3 then
2024-08-29 21:36:51 +08:00
PopupTipPanel.ShowTip(Language[13041])
2021-10-22 14:48:56 +08:00
return
end
2024-09-20 17:32:50 +08:00
UIManager.OpenPanel(UIName.GeneralBigPopup, GENERAL_POPUP_TYPE.YuJianBet)
2021-09-28 10:34:05 +08:00
end)
2024-09-20 17:32:50 +08:00
Util.AddOnceClick(self.btnRecord, function()
NetManager.RidingSwardInfoRequest(function()
2021-10-14 18:02:30 +08:00
if #YuJianXingManager.curRecordList <= 0 then
2024-08-29 21:36:51 +08:00
PopupTipPanel.ShowTip(Language[13042])
2021-10-14 18:02:30 +08:00
return
end
2024-09-20 17:32:50 +08:00
UIManager.OpenPanel(UIName.GeneralPopup, GENERAL_POPUP_TYPE.YuJianXingRecord)
2021-10-14 18:02:30 +08:00
end)
2021-09-28 10:34:05 +08:00
end)
2024-09-20 17:32:50 +08:00
Util.AddOnceClick(self.btnRank, function()
UIManager.OpenPanel(UIName.GeneralBigPopup, GENERAL_POPUP_TYPE.YuJianLastResult)
2021-09-28 10:34:05 +08:00
end)
2024-09-20 17:32:50 +08:00
Util.AddOnceClick(self.btnStore, function()
if YuJianXingManager.curState == 2 then
2024-08-29 21:36:51 +08:00
PopupTipPanel.ShowTip(Language[13043])
return
end
2021-10-15 11:15:42 +08:00
JumpManager.GoJump(40038)
2021-09-28 17:48:28 +08:00
end)
2021-09-28 10:34:05 +08:00
end
--添加事件监听(用于子类重写)
function YuJianXingPanel:AddListener()
2024-09-20 17:32:50 +08:00
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)
2021-09-28 10:34:05 +08:00
end
--移除事件监听(用于子类重写)
function YuJianXingPanel:RemoveListener()
2024-09-20 17:32:50 +08:00
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)
2021-09-28 10:34:05 +08:00
end
function YuJianXingPanel:OnSortingOrderChange()
2024-09-20 17:32:50 +08:00
Util.SetParticleSortLayer(self.btnGiftEffect, self.sortingOrder + 1)
2021-09-28 10:34:05 +08:00
end
--界面打开时调用(用于子类重写)
function YuJianXingPanel:OnOpen()
2021-10-22 10:57:01 +08:00
-- NetManager.RidingSwardInfoRequest()
2021-09-28 10:34:05 +08:00
end
-- 打开,重新打开时回调
function YuJianXingPanel:OnShow()
2021-10-14 11:25:44 +08:00
self.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.YuJianXing })
2024-09-20 17:32:50 +08:00
Util.SetParticleSortLayer(self.btnGiftEffect, self.sortingOrder + 1)
self:MakeRequest(function()
if YuJianXingManager.curState == 2 then
YuJianXingManager.InWaiting = true
end
--开启地图
YuJianXingManager.OpenMap()
self:Refresh()
end)
2021-10-11 17:25:48 +08:00
end
function YuJianXingPanel:MakeRequest(func)
2021-10-15 14:02:33 +08:00
local id = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.YuJianXing)
2024-09-20 17:32:50 +08:00
CommonActPageManager.ShowIcon(self.btnGift, id)
2021-10-15 14:02:33 +08:00
if id then
2024-09-20 17:32:50 +08:00
NetManager.RidingSwardActivityRequest(id, function()
if func then
func()
end
NetManager.RidingSwardInfoRequest()
end)
2021-10-15 14:02:33 +08:00
end
end
2021-10-11 17:25:48 +08:00
function YuJianXingPanel:Refresh()
2021-10-13 15:39:47 +08:00
YuJianXingManager.HideAllPlayers(not YuJianXingManager.InWaiting)
2021-10-12 11:26:48 +08:00
self.waiting:SetActive(YuJianXingManager.InWaiting)
2021-10-11 14:37:33 +08:00
--为小人在地图上下移动做处理
2021-10-09 16:24:34 +08:00
self.count = 0
2021-10-11 17:25:48 +08:00
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)
2021-10-12 11:26:48 +08:00
--开始游戏
2021-10-11 17:25:48 +08:00
YuJianXingManager.SetGameState(true)
end)
end
function YuJianXingPanel:SetTime()
2021-10-09 16:24:34 +08:00
if self.timer then
self.timer:Stop()
self.timer = nil
end
2021-10-11 17:25:48 +08:00
local activityEnd = YuJianXingManager.activityTimeCount - GetTimeStamp()
local roundEnd = YuJianXingManager.nextTimeCount - GetTimeStamp()
2021-10-18 11:32:06 +08:00
if activityEnd > 86400 then
2024-09-20 17:32:50 +08:00
self.curActTime.text = string.format(Language[13044], TimeToDHM(activityEnd))
2021-10-18 11:32:06 +08:00
else
2024-09-20 17:32:50 +08:00
self.curActTime.text = string.format(Language[13044], TimeToHMS(activityEnd))
2021-10-18 11:32:06 +08:00
end
2021-10-12 11:26:48 +08:00
if YuJianXingManager.curState == 1 then
2024-09-20 17:32:50 +08:00
self.nextRoundTime.text = string.format(Language[13045], TimeToMS(roundEnd))
2021-10-12 11:26:48 +08:00
elseif YuJianXingManager.curState == 2 then
2024-08-29 21:36:51 +08:00
self.nextRoundTime.text = string.format(Language[13046])
2021-10-20 18:31:59 +08:00
elseif YuJianXingManager.curState == 3 then
2024-08-29 21:36:51 +08:00
self.nextRoundTime.text = string.format(Language[13047])
2021-10-12 11:26:48 +08:00
end
2024-09-20 17:32:50 +08:00
self.canBetTime.text = string.format(Language[13048], configData.JoinCount - YuJianXingManager.joinCount)
2021-10-14 17:10:40 +08:00
self.redPoint:SetActive(YuJianXingManager.CheckRecordList())
2024-09-20 17:32:50 +08:00
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()
2021-10-14 17:10:40 +08:00
self.redPoint:SetActive(YuJianXingManager.CheckRecordList())
2024-09-20 17:32:50 +08:00
self.redPointBet:SetActive((configData.JoinCount - YuJianXingManager.joinCount > 0) and
(#YuJianXingManager.curBetList < 2) and (YuJianXingManager.curState == 1))
2021-10-11 17:25:48 +08:00
--设置人物上下飘动2s重置一次
2021-10-09 16:24:34 +08:00
if self.count % 2 == 0 then
YuJianXingManager.ResetPlayerPosVertical()
end
self.count = self.count + 1
2021-10-11 17:25:48 +08:00
--回合倒计时
roundEnd = roundEnd - 1
if YuJianXingManager.curState == 1 then
2024-09-20 17:32:50 +08:00
self.nextRoundTime.text = string.format(Language[13045], TimeToMS(roundEnd))
2021-10-11 17:25:48 +08:00
if roundEnd <= 0 then
2024-09-20 17:32:50 +08:00
YuJianXingManager.ReGetInfo(function()
2021-10-13 15:39:47 +08:00
roundEnd = YuJianXingManager.nextTimeCount - GetTimeStamp()
2024-09-20 17:32:50 +08:00
if YuJianXingManager.curState == 2 then --一定要确认请求回来的是2才能开始不然一直请求
2021-10-20 18:31:59 +08:00
YuJianXingManager.ReloadPlayersData(YuJianXingManager.curResultId)
self:StartAnimation()
end
2021-10-12 11:26:48 +08:00
end)
2021-10-11 17:25:48 +08:00
end
elseif YuJianXingManager.curState == 2 then
2024-08-29 21:36:51 +08:00
self.nextRoundTime.text = string.format(Language[13046])
2024-09-20 17:32:50 +08:00
self.waitTime.text = string.format(Language[13049], TimeToMS(roundEnd))
2021-10-12 11:26:48 +08:00
if roundEnd <= 0 then
2024-09-20 17:32:50 +08:00
YuJianXingManager.ReGetInfo(function()
UIManager.OpenPanel(UIName.GeneralBigPopup, GENERAL_POPUP_TYPE.YuJianLastResult)
2021-10-20 18:31:59 +08:00
self:Refresh()
2021-10-12 11:26:48 +08:00
end)
end
2021-10-20 18:31:59 +08:00
elseif YuJianXingManager.curState == 3 then
2024-08-29 21:36:51 +08:00
self.nextRoundTime.text = string.format(Language[13050])
2021-10-11 17:25:48 +08:00
end
--活动倒计时
activityEnd = activityEnd - 1
2021-10-18 11:32:06 +08:00
if activityEnd > 86400 then
2024-09-20 17:32:50 +08:00
self.curActTime.text = string.format(Language[13044], TimeToDHM(activityEnd))
2021-10-18 11:32:06 +08:00
else
2024-09-20 17:32:50 +08:00
self.curActTime.text = string.format(Language[13044], TimeToHMS(activityEnd))
2021-10-18 11:32:06 +08:00
end
2024-09-20 17:32:50 +08:00
self.canBetTime.text = string.format(Language[13048], configData.JoinCount - YuJianXingManager.joinCount)
2021-10-11 17:25:48 +08:00
if activityEnd <= 0 then
self:ClosePanel()
end
2024-09-20 17:32:50 +08:00
end, 1, -1)
2021-10-09 18:17:59 +08:00
self.timer:Start()
2021-09-28 10:34:05 +08:00
end
--界面关闭时调用(用于子类重写)
function YuJianXingPanel:OnClose()
2021-10-11 14:37:33 +08:00
--关闭地图--直接销毁
2021-10-08 15:45:28 +08:00
YuJianXingManager.CloseMap()
2021-10-09 16:24:34 +08:00
self.count = 0
if self.timer then
self.timer:Stop()
self.timer = nil
end
2021-09-28 10:34:05 +08:00
end
--界面销毁时调用(用于子类重写)
function YuJianXingPanel:OnDestroy()
2021-10-14 11:25:44 +08:00
SubUIManager.Close(self.UpView)
2021-09-28 10:34:05 +08:00
end
2024-09-20 17:32:50 +08:00
return YuJianXingPanel