MainmenuController.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. using LightReflectiveMirror;
  2. using Mirror;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using UnityEngine;
  6. using UnityEngine.UI;
  7. public class MainmenuController : MonoBehaviour
  8. {
  9. public Text usernameTxt;
  10. [Header("Server List")]
  11. public Transform scrollParent;
  12. public GameObject serverRow;
  13. public float heightPerRow = 60;
  14. public int curSelected = 0;
  15. public LightReflectiveMirrorTransport _LRM;
  16. public Toggle isPublic;
  17. public InputField serverNameInput;
  18. void Start()
  19. {
  20. _LRM = (LightReflectiveMirrorTransport)Transport.activeTransport;
  21. _LRM.serverListUpdated.AddListener(ServerListUpdate);
  22. _LRM.connectedToRelay.AddListener(refreshServers);
  23. // serverNameInput.text = usernameTxt.text + "'s Server";
  24. // refreshServers();
  25. }
  26. // Update is called once per frame
  27. void Update()
  28. {
  29. }
  30. void OnDisable()
  31. {
  32. if (_LRM != null) { _LRM.serverListUpdated.RemoveListener(ServerListUpdate); }
  33. }
  34. public void refreshServers()
  35. {
  36. StartCoroutine(requestList());
  37. }
  38. IEnumerator requestList(){
  39. yield return new WaitForSeconds(1);
  40. if(_LRM == null){Debug.Log("WTF!");}
  41. _LRM.RequestServerList();
  42. }
  43. public void ServerListUpdate()
  44. {
  45. //
  46. //clear all entries
  47. Debug.Log("it works");
  48. foreach(Transform t in scrollParent) { Destroy(t.gameObject); }
  49. bool b1 = false;
  50. for (int i =0; i < _LRM.relayServerList.Count; i++)
  51. {
  52. //int mapId = int.Parse(_LRM.relayServerList[i].serverName.Substring(0, 1));
  53. GameObject go = Instantiate(serverRow, scrollParent);
  54. go.transform.GetChild(0).GetComponent<Text>().text = _LRM.relayServerList[i].serverName;
  55. go.transform.GetChild(1).GetComponent<Text>().text = _LRM.relayServerList[i].currentPlayers + "/" + _LRM.relayServerList[i].maxPlayers;
  56. go.GetComponentInChildren<Button>().onClick.AddListener(() => { joinServer(_LRM.relayServerList[i-1].serverId.ToString()); });
  57. if (!b1)
  58. {
  59. go.GetComponent<Image>().color = Color.grey;
  60. b1 = true;
  61. }
  62. }
  63. scrollParent.GetComponent<RectTransform>().sizeDelta = new Vector2(scrollParent.GetComponent<RectTransform>().sizeDelta.x, heightPerRow *(_LRM.relayServerList.Count+1));
  64. }
  65. public void selectServer(int id)
  66. {
  67. Debug.Log("Selected server :" + id);
  68. if(id < scrollParent.childCount-1) { return; }
  69. curSelected = id;
  70. foreach(Transform t in scrollParent.GetComponentsInChildren<Transform>())
  71. {
  72. if(t.GetComponent<Image>()!=null)t.GetComponent<Image>().color = serverRow.GetComponent<Image>().color;
  73. }
  74. scrollParent.GetChild(id).GetComponent<Image>().color = Color.grey;
  75. }
  76. public void joinServer()
  77. {
  78. FindObjectOfType<loadingScreen>().serverName = _LRM.relayServerList[curSelected].serverId.ToString();
  79. FindObjectOfType<loadingScreen>().load();
  80. }
  81. public void joinServer(string serverName)
  82. {
  83. FindObjectOfType<loadingScreen>().serverName = serverName;
  84. FindObjectOfType<loadingScreen>().sceneName= "SampleScene";
  85. FindObjectOfType<loadingScreen>().isHost=false;
  86. FindObjectOfType<loadingScreen>().load();
  87. }
  88. public void hostClicked()
  89. {
  90. if (serverNameInput.text.Length > 3)
  91. {
  92. FindObjectOfType<loadingScreen>().serverName = serverNameInput.text;
  93. FindObjectOfType<loadingScreen>().sceneName= "SampleScene";
  94. FindObjectOfType<loadingScreen>().isPublic = isPublic.isOn;
  95. FindObjectOfType<loadingScreen>().load();
  96. }
  97. }
  98. }