207 lines
5.5 KiB
C#
207 lines
5.5 KiB
C#
using System.Collections.Generic;
|
||
using UnityEngine;
|
||
using XUI;
|
||
using TMPro;
|
||
using TruegearSdk;
|
||
|
||
public class ConPanel : UIBehaviour
|
||
{
|
||
public static ConPanel Instance { get; private set; }
|
||
public TrueGearPanel trueGearPanel;
|
||
public Common.State PanelState;
|
||
public Transform Page1;
|
||
public Transform Page2;
|
||
|
||
public GameObject IPBtn;
|
||
|
||
public List<IPBtn> IPBtns;
|
||
public bool IsInit = false;
|
||
|
||
// 选中的房间索引
|
||
private int _selectedRoomIndex = -1;
|
||
private IPBtn _selectedBtn = null;
|
||
|
||
public static void Show()
|
||
{
|
||
WorldUIManager.Ins.Cover("UI/ConPanel", false);
|
||
}
|
||
|
||
public void Start()
|
||
{
|
||
Instance = this;
|
||
|
||
// 根据是否启用马甲功能来决定IPBtn生成在哪个面板
|
||
// 当使用马甲功能时,生成在第一个面板
|
||
// 当不使用马甲功能时,生成在第二个面板
|
||
Transform parentTransform = Page1;
|
||
if (TrueGearEffectManager.Ins != null && !TrueGearEffectManager.Ins.EnableTrueGear)
|
||
{
|
||
parentTransform = Page2;
|
||
// 当enableTrueGear=false时,显示第二面板,隐藏第一面板
|
||
if (Page1 != null)
|
||
{
|
||
Page1.gameObject.SetActive(false);
|
||
}
|
||
if (Page2 != null)
|
||
{
|
||
Page2.gameObject.SetActive(true);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
|
||
// 当enableTrueGear=true时,显示第一面板,隐藏第二面板
|
||
if (Page1 != null)
|
||
{
|
||
Page1.gameObject.SetActive(true);
|
||
|
||
}
|
||
if (Page2 != null)
|
||
{
|
||
Page2.gameObject.SetActive(false);
|
||
}
|
||
}
|
||
|
||
for (int i = 0; i < 50; i++)
|
||
{
|
||
IPBtn btn = Instantiate(IPBtn, parentTransform).GetComponent<IPBtn>();
|
||
btn.gameObject.SetActive(false);
|
||
IPBtns.Add(btn);
|
||
}
|
||
|
||
IsInit = true;
|
||
|
||
// 打开界面时自动开始搜索
|
||
StartDiscovery();
|
||
}
|
||
|
||
public void Update()
|
||
{
|
||
if (IsInit && MRNetworkManager.Ins.NeedFresh > 0)
|
||
{
|
||
MRNetworkManager.Ins.NeedFresh--;
|
||
FreshServers();
|
||
}
|
||
}
|
||
|
||
// 启动搜索
|
||
private void StartDiscovery()
|
||
{
|
||
MRNetworkManager.Ins.DiscoveredServers.Clear();
|
||
MRNetworkManager.Ins.DiscoveredServersList.Clear();
|
||
MRNetworkManager.Ins.networkDiscovery.StartDiscovery();
|
||
// 注意:不再自动切换页面,保持当前页面显示
|
||
}
|
||
|
||
// 刷新按钮 - 重新搜索
|
||
public void OnClickRefresh()
|
||
{
|
||
// 清除之前的选中状态
|
||
ClearSelection();
|
||
|
||
// 重新搜索
|
||
StartDiscovery();
|
||
}
|
||
|
||
// 加入按钮 - 加入选中的房间
|
||
public void OnClickJoin()
|
||
{
|
||
if (_selectedBtn != null && _selectedBtn.GetRoomInfo() != null)
|
||
{
|
||
_selectedBtn.JoinRoom();
|
||
}
|
||
}
|
||
|
||
// 选中房间
|
||
public void OnSelectRoom(IPBtn btn)
|
||
{
|
||
// 清除之前的选中状态
|
||
ClearSelection();
|
||
|
||
// 选中新房间
|
||
_selectedBtn = btn;
|
||
_selectedRoomIndex = IPBtns.IndexOf(btn);
|
||
btn.SetSelected(true);
|
||
}
|
||
|
||
// 清除选中状态
|
||
private void ClearSelection()
|
||
{
|
||
if (_selectedBtn != null)
|
||
{
|
||
_selectedBtn.SetSelected(false);
|
||
_selectedBtn = null;
|
||
}
|
||
_selectedRoomIndex = -1;
|
||
}
|
||
|
||
public void OnClickHost()
|
||
{
|
||
// 用户未选择设备直接开始游戏,停止扫描
|
||
if (TrueGearEffectManager.Ins != null)
|
||
{
|
||
TrueGearEffectManager.Ins.StopScan();
|
||
}
|
||
WorldUIManager.Ins.Back();
|
||
MRNetworkManager.Ins.CreateAndJoinRoom();
|
||
MRNetworkManager.Ins.networkDiscovery.AdvertiseServer();
|
||
}
|
||
|
||
public void OnClickFindServer()
|
||
{
|
||
MRNetworkManager.Ins.DiscoveredServers.Clear();
|
||
MRNetworkManager.Ins.DiscoveredServersList.Clear();
|
||
MRNetworkManager.Ins.networkDiscovery.StartDiscovery();
|
||
PanelState.StateChange(1);
|
||
}
|
||
|
||
public void FreshServers()
|
||
{
|
||
for (int j = 0; j < IPBtns.Count; j++)
|
||
{
|
||
IPBtns[j].gameObject.SetActive(false);
|
||
}
|
||
for (int i = 0; i < MRNetworkManager.Ins.DiscoveredServersList.Count; i++)
|
||
{
|
||
IPBtns[i].Init(i + 1, MRNetworkManager.Ins.DiscoveredServersList[i]);
|
||
IPBtns[i].gameObject.SetActive(true);
|
||
}
|
||
}
|
||
|
||
public void OnClickServer()
|
||
{
|
||
WorldUIManager.Ins.Back();
|
||
MRNetworkManager.Ins.CreateRoom();
|
||
}
|
||
|
||
public void OnMasterClick()
|
||
{
|
||
PanelState.StateChange(2);
|
||
}
|
||
|
||
public void OnOnePlayerClick()
|
||
{
|
||
// 用户未选择设备直接开始游戏,停止扫描
|
||
if (TrueGearEffectManager.Ins != null)
|
||
{
|
||
TrueGearEffectManager.Ins.StopScan();
|
||
}
|
||
GameLocal.Ins.GameMode = 0;
|
||
WorldUIManager.Ins.Back();
|
||
MRNetworkManager.Ins.CreateAndJoinRoom();
|
||
MRNetworkManager.Ins.networkDiscovery.AdvertiseServer();
|
||
}
|
||
|
||
public void OnServerPlayerClick()
|
||
{
|
||
// 用户未选择设备直接开始游戏,停止扫描
|
||
if (TrueGearEffectManager.Ins != null)
|
||
{
|
||
TrueGearEffectManager.Ins.StopScan();
|
||
}
|
||
GameLocal.Ins.GameMode = 1;
|
||
WorldUIManager.Ins.Back();
|
||
MRNetworkManager.Ins.CreateAndJoinRoom();
|
||
MRNetworkManager.Ins.networkDiscovery.AdvertiseServer();
|
||
}
|
||
} |