2025-06-04 05:02:57 +08:00

138 lines
4.5 KiB
Plaintext

-- TeamPws and FreeBattle
TeamPwsMatchPopUp = class("TeamPwsMatchPopUp" ,BaseView)
TeamPwsMatchPopUp.ViewType = UIViewType.PopUpLayer
TeamPwsMatchPopUp.Instance = nil
TeamPwsMatchPopUp.Anchor = nil -- MainView/TeamPwsMatchBtn.transform
function TeamPwsMatchPopUp.Show(pvpType)
if (not TeamPwsMatchPopUp.Instance) then
GameFacade.Instance:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.TeamPwsMatchPopUp, viewdata = {pvptype = pvpType}})
return
end
if (TeamPwsMatchPopUp.Instance.isShow) then
return
end
if (TeamPwsMatchPopUp.Anchor and TeamPwsMatchPopUp.Anchor.gameObject.activeInHierarchy) then
TeamPwsMatchPopUp.Instance.gameObject.transform.localScale = Vector3.zero
TeamPwsMatchPopUp.Instance.gameObject.transform.position = TeamPwsMatchPopUp.Anchor.position
TweenPosition.Begin(TeamPwsMatchPopUp.Instance.gameObject, 0.2, Vector3.zero)
TweenScale.Begin(TeamPwsMatchPopUp.Instance.gameObject, 0.2, Vector3.one)
else
TeamPwsMatchPopUp.Instance.gameObject.transform.localPosition = Vector3.zero
TeamPwsMatchPopUp.Instance.gameObject.transform.localScale = Vector3.one
end
if (pvpType) then
TeamPwsMatchPopUp.Instance.pvpType = pvpType
end
TeamPwsMatchPopUp.Instance:OnShow()
TeamPwsMatchPopUp.Instance.isShow = true
end
function TeamPwsMatchPopUp.Hide()
if (not TeamPwsMatchPopUp.Instance or not TeamPwsMatchPopUp.Instance.isShow) then
return
end
if (TeamPwsMatchPopUp.Anchor and TeamPwsMatchPopUp.Anchor.gameObject.activeInHierarchy) then
TweenPosition.Begin(TeamPwsMatchPopUp.Instance.gameObject, 0.2, TeamPwsMatchPopUp.Anchor.position).worldSpace = true
end
TweenScale.Begin(TeamPwsMatchPopUp.Instance.gameObject, 0.2, Vector3.zero)
TeamPwsMatchPopUp.Instance:OnHide()
TeamPwsMatchPopUp.Instance.isShow = false
end
function TeamPwsMatchPopUp:Init()
if (TeamPwsMatchPopUp.Instance) then
self:CloseSelf()
return
end
TeamPwsMatchPopUp.Instance = self
self:FindObjs()
self:AddButtonEvts()
self:AddEvts()
TeamPwsMatchPopUp.Show(self.viewdata.viewdata.pvptype)
end
function TeamPwsMatchPopUp:FindObjs()
self.objLayoutLeader = self:FindGO("layoutLeader")
self.objLayoutMember = self:FindGO("layoutMember")
self.labTime = self:FindComponent("labTime", UILabel)
end
function TeamPwsMatchPopUp:AddButtonEvts()
self:AddClickEvent(self:FindGO("btnCancel"), function() self:ClickBtnCancel() end)
self:AddClickEvent(self:FindGO("Mask"), function() TeamPwsMatchPopUp.Hide() end)
end
function TeamPwsMatchPopUp:AddEvts()
self:AddListenEvt(ServiceEvent.MatchCCmdNtfMatchInfoCCmd, self.HandleNtfMatchInfoCCmd)
self:AddListenEvt(ServiceEvent.MatchCCmdTeamPwsPreInfoMatchCCmd, self.CloseSelf)
self:AddListenEvt(ServiceEvent.SessionTeamTeamDataUpdate, self.SetLayout)
self:AddListenEvt(PVPEvent.TeamPws_Launch, self.CloseSelf)
end
function TeamPwsMatchPopUp:SetLayout()
local bImLeader = not TeamProxy.Instance:IHaveTeam() or TeamProxy.Instance:CheckIHaveLeaderAuthority()
self.objLayoutLeader:SetActive(bImLeader)
self.objLayoutMember:SetActive(not bImLeader)
end
function TeamPwsMatchPopUp:HandleNtfMatchInfoCCmd(note)
if (note.body.etype == self.pvpType and note.body.ismatch) then
self:CountMatchingTime()
else
self:CloseSelf()
end
end
function TeamPwsMatchPopUp:CountMatchingTime()
TimeTickManager.Me():ClearTick(self, 1)
self.startMatchTime = PvpProxy.Instance:GetStartMatchTime(self.pvpType)
if (self.startMatchTime) then
TimeTickManager.Me():CreateTick(0, 250, self.UpdateMatchingTime, self, 1)
else
self.labTime.text = "-"
end
end
function TeamPwsMatchPopUp:ClickBtnCancel()
if (TeamProxy.Instance:IHaveTeam() and not TeamProxy.Instance:CheckIHaveLeaderAuthority() or self.disableClick) then
return
end
ServiceMatchCCmdProxy.Instance:CallLeaveRoomCCmd(self.pvpType)
self.disableClick = true
self.ltDisableClick = LeanTween.delayedCall(3, function()
self.disableClick = false
self.ltDisableClick = nil
end)
end
function TeamPwsMatchPopUp:UpdateMatchingTime()
local matchingTime = (ServerTime.CurServerTime() - self.startMatchTime) / 1000
local min, sec = ClientTimeUtil.GetFormatSecTimeStr(matchingTime)
self.labTime.text = string.format("%02d:%02d", min, sec)
end
function TeamPwsMatchPopUp:OnShow()
self.super.OnShow(self)
self:SetLayout()
self:CountMatchingTime()
end
function TeamPwsMatchPopUp:OnHide()
TimeTickManager.Me():ClearTick(self, 1)
self.super.OnHide(self)
end
function TeamPwsMatchPopUp:OnExit()
TimeTickManager.Me():ClearTick(self, 1)
if (self.ltDisableClick) then
self.ltDisableClick:cancel()
self.ltDisableClick = nil
end
TeamPwsMatchPopUp.Instance = nil
self.super.OnExit(self)
end