PGRData/Script/matrix/xui/xuionlinetranscript/XUiOnLineMatching.lua

148 lines
No EOL
4.5 KiB
Lua

local XUiOnLineMatching = XLuaUiManager.Register(XLuaUi, "UiOnLineMatching")
function XUiOnLineMatching:OnAwake()
end
function XUiOnLineMatching:OnStart(cfgData)
self:InitAutoScript()
self.CsUiList = {}
self.CfgData = cfgData
self.timerId = -1
self:StartMatching()
XEventManager.AddEventListener(XEventId.EVENT_ROOM_ENTER_ROOM, self.OnBack, self)
XEventManager.AddEventListener(XEventId.EVENT_ROOM_CANCEL_MATCH, self.OnCancelMatch, self)
end
function XUiOnLineMatching:OnDestroy()
self:RemoveTimer()--移除计时器
XEventManager.RemoveEventListener(XEventId.EVENT_ROOM_ENTER_ROOM, self.OnBack, self)
XEventManager.RemoveEventListener(XEventId.EVENT_ROOM_CANCEL_MATCH, self.OnCancelMatch, self)
end
-- auto
-- Automatic generation of code, forbid to edit
function XUiOnLineMatching:InitAutoScript()
self:AutoInitUi()
self.SpecialSoundMap = {}
self:AutoAddListener()
end
function XUiOnLineMatching:AutoInitUi()
self.PanelMatchingNormal = self.Transform:Find("SafeAreaContentPane/PanelMatchingNormal")
self.BtnBack = self.Transform:Find("SafeAreaContentPane/PanelMatchingNormal/BtnBack"):GetComponent("Button")
self.TxtTime = self.Transform:Find("SafeAreaContentPane/PanelMatchingNormal/TxtTime"):GetComponent("Text")
self.PanelMatchingSimplified = self.Transform:Find("SafeAreaContentPane/PanelMatchingSimplified")
end
function XUiOnLineMatching:GetAutoKey(uiNode, eventName)
if not uiNode then
return
end
return eventName .. uiNode:GetHashCode()
end
function XUiOnLineMatching:RegisterListener(uiNode, eventName, func)
local key = self:GetAutoKey(uiNode, eventName)
if not key then
return
end
local listener = self.AutoCreateListeners[key]
if listener ~= nil then
uiNode[eventName]:RemoveListener(listener)
end
if func ~= nil then
if type(func) ~= "function" then
XLog.Error("XUiOnLineMatching:RegisterListener函数错误, 参数func需要是function类型, func的类型是" .. type(func))
end
listener = function(...)
XSoundManager.PlayBtnMusic(self.SpecialSoundMap[key], eventName)
func(self, ...)
end
uiNode[eventName]:AddListener(listener)
self.AutoCreateListeners[key] = listener
end
end
function XUiOnLineMatching:AutoAddListener()
self.AutoCreateListeners = {}
self:RegisterClickEvent(self.BtnBack, self.OnBtnBackClick)
self:RegisterClickEvent(self.BtnReturn, self.OnBtnReturnClick)
end
-- auto
function XUiOnLineMatching:OnBtnBackClick()
--取消匹配
XDataCenter.RoomManager.CancelMatch()
end
function XUiOnLineMatching:OnCancelMatch()
-- self:SetIsShow(false)
self:Close()
end
function XUiOnLineMatching:OnBtnReturnClick()
if self.characterUi ~= nil then
self.characterUi:OnBtnBackClick()
self.characterUi.GameObject:SetActive(false)
end
if self.bagUi ~= nil then
self.bagUi:OnBtnBackClick()
self.bagUi.GameObject:SetActive(false)
end
self:SetSimplifiedPanelView(false)
end
function XUiOnLineMatching:OnBack()
self:Close()
end
function XUiOnLineMatching:SetIsShow(code)
if self.GameObject ~= nil then
self.GameObject.gameObject:SetActive(code)
end
self:SetSimplifiedPanelView(false)
end
function XUiOnLineMatching:SetSimplifiedPanelView(code)
if self.PanelMatchingNormal == nil or self.PanelMatchingSimplified == nil then
return
end
self.PanelMatchingSimplified.gameObject:SetActive(code)
self.PanelMatchingNormal.gameObject:SetActive(not code)
end
function XUiOnLineMatching:RemoveTimer()
if self.timerId ~= -1 then
XScheduleManager.UnSchedule(self.timerId)
self.timerId = -1
end
end
function XUiOnLineMatching:StartCountDown()
--倒计时开始
self.TxtTime.text = "00:00"
local startTicks = CS.XTimerManager.Ticks
local refresh = function()
if not XDataCenter.RoomManager.Matching then
self:OnBack()
return
end
local t = math.floor((CS.XTimerManager.Ticks - startTicks) / CS.System.TimeSpan.TicksPerSecond)
local m = math.floor(t / 60)
local s = math.floor(t - m * 60)
local formatTime = string.format("%02d:%02d", m, s)
self.TxtTime.text = formatTime
-- self.TxtTimeSimplified.text = formatTime
end
self.timerId = XScheduleManager.ScheduleForever(refresh, 0)
end
function XUiOnLineMatching:StartMatching()
self:StartCountDown()
self:SetIsShow(true)
end
return XUiOnLineMatching