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

161 lines
4.9 KiB
Plaintext

autoImport("FreeBattleDungeonCell")
FreeBattleView = class("FreeBattleView", SubView)
local freeBattleView_Path = ResourcePathHelper.UIView("FreeBattleView");
FreeBattleView.TexUp = "pvp_bg_06"
local T_PVP_TYPE
function FreeBattleView:Init()
T_PVP_TYPE = PvpProxy.Type.FreeBattle
self:FindObjs()
self:AddBtnEvts()
self:AddViewEvts()
self:InitShow()
end
function FreeBattleView:FindObjs()
self:LoadSubView()
local gridDungeon = self:FindComponent("dungeonGrid", UIGrid, self.objRoot)
self.listDungeon = UIGridListCtrl.new(gridDungeon, FreeBattleDungeonCell, "FreeBattleDungeonCell")
self.objBtnMatch = self:FindGO("MatchBtn", self.objRoot)
self.colBtnMatch = self.objBtnMatch:GetComponent(BoxCollider)
self.sprBtnMatch = self:FindComponent("BG", UISprite, self.objBtnMatch)
self.objEnableMatchBtnLabel = self:FindGO("enableLabel", self.objBtnMatch)
self.objDisableMatchBtnLabel = self:FindGO("disableLabel", self.objBtnMatch)
end
function FreeBattleView:LoadSubView()
self.objRoot = self:FindGO("FreeBattleView")
local obj = self:LoadPreferb_ByFullPath(freeBattleView_Path, self.objRoot, true);
obj.name = "FreeBattleView";
end
function FreeBattleView:AddBtnEvts()
self:AddClickEvent(self:FindGO("RuleBtn", self.objRoot), function() self:ClickButtonRule() end)
self:AddClickEvent(self.objBtnMatch, function() self:ClickButtonMatch() end)
end
function FreeBattleView:AddViewEvts()
self:AddListenEvt(LoadSceneEvent.FinishLoad, self.UpdateView)
self:AddListenEvt(ServiceEvent.MatchCCmdNtfMatchInfoCCmd, self.UpdateView)
self.listDungeon:AddEventListener(MouseEvent.MouseClick, self.SelectDungeon, self)
end
function FreeBattleView:InitShow()
PictureManager.Instance:SetPVP(FreeBattleView.TexUp, self:FindComponent("upTexture",UITexture, self.objRoot))
self:UpdateView()
end
function FreeBattleView:UpdateView()
local btnMatchEnable = true
local matchStatus = PvpProxy.Instance:GetMatchState(T_PVP_TYPE)
local teamPwsMatchStatus = PvpProxy.Instance:GetMatchState(PvpProxy.Type.TeamPws)
if (matchStatus and matchStatus.ismatch or teamPwsMatchStatus and teamPwsMatchStatus.ismatch or
Game.MapManager:IsPVPMode_TeamPws()) then
btnMatchEnable = false
end
self.colBtnMatch.enabled = btnMatchEnable
if (btnMatchEnable) then
self:SetTextureWhite(self.sprBtnMatch)
else
self:SetTextureGrey(self.sprBtnMatch)
end
self.objEnableMatchBtnLabel:SetActive(btnMatchEnable)
self.objDisableMatchBtnLabel:SetActive(not btnMatchEnable)
end
function FreeBattleView:InitDungeonList()
self.listDungeon:ResetDatas(GameConfig.PvpTeamRaid_Relax.RaidMaps)
local cells = self.listDungeon:GetCells()
if (cells and #cells > 0) then
self:SelectDungeon(cells[1])
end
end
function FreeBattleView:SelectDungeon(cell)
if (self.selectCell) then
if (self.selectCell.id == cell.id) then
return
end
self.selectCell:Select(false)
end
self.selectCell = cell
self.selectCell:Select(true)
end
function FreeBattleView:ClickButtonRule()
local panelId = PanelConfig.FreeBattleView.id
local Desc = Table_Help[panelId] and Table_Help[panelId].Desc or ZhString.Help_RuleDes
TipsView.Me():ShowGeneralHelp(Desc)
end
function FreeBattleView:ClickButtonMatch()
if (not self.selectCell or self.disableClick) then return end
local teamPwsMatchStatus = PvpProxy.Instance:GetMatchState(T_PVP_TYPE)
if (teamPwsMatchStatus and teamPwsMatchStatus.ismatch) then
MsgManager.ShowMsgByID(25917) -- 已經開始匹配
return
end
if(TeamProxy.Instance:IHaveTeam())then
if (not TeamProxy.Instance:CheckImTheLeader()) then
MsgManager.ShowMsgByID(25901)
return
end
local memberlst = TeamProxy.Instance.myTeam:GetPlayerMemberList(true, true)
local myZoneID = MyselfProxy.Instance:GetZoneId()
local member
for i = 1, #memberlst do
member = memberlst[i]
if (member:IsOffline() or member.zoneid ~= myZoneID) then
MsgManager.ShowMsgByID(25903)
return
end
if (member.baselv < GameConfig.PvpTeamRaid_Relax.RequireLv) then
MsgManager.ShowMsgByID(25900)
return
end
end
if (#memberlst < GameConfig.Team.maxmember) then
MsgManager.ConfirmMsgByID(25904, function() self:CallMatch() end, nil)
return
end
else
MsgManager.ShowMsgByID(Game.Myself.data.userdata:Get(UDEnum.ROLELEVEL) < GameConfig.PvpTeamRaid.RequireLv and 25900 or 25924)
return
end
self:CallMatch()
end
function FreeBattleView:CallMatch()
if (not self.selectCell or self.disableClick) then return end
ServiceMatchCCmdProxy.Instance:CallJoinRoomCCmd(T_PVP_TYPE, self.selectCell.id)
self.disableClick = true
self.ltDisableClick = LeanTween.delayedCall(3, function()
self.disableClick = false
self.ltDisableClick = nil
end)
end
function FreeBattleView:OnEnter()
FreeBattleView.super.OnEnter(self);
self:InitDungeonList()
self:UpdateView()
end
function FreeBattleView:OnExit()
PictureManager.Instance:UnLoadPVP()
if (self.ltDisableClick) then
self.ltDisableClick:cancel()
self.ltDisableClick = nil
end
FreeBattleView.super.OnExit(self)
end