119 lines
3.8 KiB
C#
119 lines
3.8 KiB
C#
using LightReflectiveMirror;
|
|
using Mirror;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class menuController : MonoBehaviour
|
|
{
|
|
public GameObject modSelectionPanel;
|
|
public GameObject serverSelectionPanel;
|
|
[Header("Server List")]
|
|
public Transform scrollParent;
|
|
public GameObject serverRow;
|
|
public float heightPerRow = 30;
|
|
public int curSelected = 0;
|
|
private LightReflectiveMirrorTransport _LRM;
|
|
public Toggle isPrivate;
|
|
public InputField serverNameInput;
|
|
void Start()
|
|
{
|
|
if (_LRM == null)
|
|
{
|
|
_LRM = (LightReflectiveMirrorTransport)Transport.activeTransport;
|
|
_LRM.serverListUpdated.AddListener(ServerListUpdate);
|
|
}
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
|
|
}
|
|
|
|
void OnDisable()
|
|
{
|
|
if (_LRM != null) { _LRM.serverListUpdated.RemoveListener(ServerListUpdate); }
|
|
}
|
|
|
|
public void refreshServers()
|
|
{
|
|
_LRM.RequestServerList();
|
|
}
|
|
|
|
public void ServerListUpdate()
|
|
{
|
|
//
|
|
//clear all entries
|
|
foreach(Transform t in scrollParent) { Destroy(t.gameObject); }
|
|
bool b1 = false;
|
|
modSelector ModSelector = FindObjectOfType<modSelector>();
|
|
for (int i =0; i < _LRM.relayServerList.Count; i++)
|
|
{
|
|
//int mapId = int.Parse(_LRM.relayServerList[i].serverName.Substring(0, 1));
|
|
if(NetworkManager.singleton.onlineScene == ModSelector.scenes[ModSelector.currentSelectedId])
|
|
// if(mapId == FindObjectOfType<modSelector>().currentSelectedId)
|
|
{
|
|
GameObject go = Instantiate(serverRow, scrollParent);
|
|
go.transform.GetChild(0).GetComponent<Text>().text = _LRM.relayServerList[i].serverName;
|
|
go.transform.GetChild(1).GetComponent<Text>().text = _LRM.relayServerList[i].currentPlayers + "/" + _LRM.relayServerList[i].maxPlayers;
|
|
go.GetComponent<Button>().onClick.AddListener(() => { selectServer(i - 1); });
|
|
if (!b1)
|
|
{
|
|
go.GetComponent<Image>().color = Color.grey;
|
|
b1 = true;
|
|
}
|
|
}
|
|
}
|
|
scrollParent.GetComponent<RectTransform>().sizeDelta = new Vector2(scrollParent.GetComponent<RectTransform>().sizeDelta.x, heightPerRow *(_LRM.relayServerList.Count+1));
|
|
}
|
|
|
|
public void selectServer(int id)
|
|
{
|
|
Debug.Log("Selected server :" + id);
|
|
if(id < scrollParent.childCount-1) { return; }
|
|
curSelected = id;
|
|
foreach(Transform t in scrollParent.GetComponentsInChildren<Transform>())
|
|
{
|
|
if(t.GetComponent<Image>()!=null)t.GetComponent<Image>().color = serverRow.GetComponent<Image>().color;
|
|
}
|
|
scrollParent.GetChild(id).GetComponent<Image>().color = Color.grey;
|
|
}
|
|
|
|
public void joinServer()
|
|
{
|
|
|
|
NetworkManager.singleton.networkAddress= _LRM.relayServerList[curSelected].serverId.ToString();
|
|
NetworkManager.singleton.StartClient();
|
|
|
|
}
|
|
|
|
public void hostClicked()
|
|
{
|
|
if (serverNameInput.text.Length > 3)
|
|
{
|
|
modSelector ModSelector = FindObjectOfType<modSelector>();
|
|
_LRM.serverName = serverNameInput.text;
|
|
_LRM.extraServerData = ModSelector.scenes[ModSelector.currentSelectedId];
|
|
_LRM.isPublicServer = !isPrivate.isOn;
|
|
|
|
_LRM.ServerStart();
|
|
NetworkManager.singleton.StartHost();
|
|
}
|
|
}
|
|
|
|
|
|
public void selectMod(int modId)
|
|
{
|
|
modSelectionPanel.SetActive(false);
|
|
serverSelectionPanel.SetActive(true);
|
|
}
|
|
|
|
public void gotoModSelection()
|
|
{
|
|
modSelectionPanel.SetActive(true);
|
|
serverSelectionPanel.SetActive(false);
|
|
}
|
|
}
|