loadingScreen.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. using LightReflectiveMirror;
  2. using Mirror;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.Threading.Tasks;
  6. using UnityEngine;
  7. using UnityEngine.Events;
  8. using UnityEngine.SceneManagement;
  9. using UnityEngine.UI;
  10. public class loadingScreen : MonoBehaviour
  11. {
  12. public string sceneName;
  13. public Image img;
  14. public Sprite[] lvlImages;
  15. public Text lvlNameTxt;
  16. public RectTransform loadingWheel;
  17. public RectTransform loadingProgress;
  18. CanvasGroup canvasGroup;
  19. private LightReflectiveMirrorTransport _LRM;
  20. public void show()
  21. {
  22. canvasGroup.blocksRaycasts = canvasGroup.interactable = true;
  23. }
  24. public void hide()
  25. {
  26. canvasGroup.blocksRaycasts = canvasGroup.interactable = false;
  27. }
  28. void Start()
  29. {
  30. DontDestroyOnLoad(gameObject);
  31. canvasGroup = GetComponent<CanvasGroup>();
  32. if (_LRM == null)
  33. {
  34. _LRM = (LightReflectiveMirrorTransport)Transport.activeTransport;
  35. }
  36. }
  37. AsyncOperation loadingOperation;
  38. // Update is called once per frame
  39. void Update()
  40. {
  41. loadingWheel.Rotate(new Vector3(0, 0, 1f));
  42. if (loading)
  43. {
  44. loadingProgress.sizeDelta = new Vector2(165f * loadingOperation.progress, loadingProgress.sizeDelta.y);
  45. }
  46. if (canvasGroup.interactable && canvasGroup.alpha < 1)
  47. {
  48. canvasGroup.alpha += 0.01f;
  49. }
  50. if(!canvasGroup.interactable && canvasGroup.alpha > 0)
  51. {
  52. canvasGroup.alpha -= 0.01f;
  53. }
  54. }
  55. public void setScene(string lvlName)
  56. {
  57. switch (lvlName)
  58. {
  59. case "no_parking":
  60. img.sprite = lvlImages[0];
  61. lvlNameTxt.text = "No Parking - Zombie Elimination";
  62. break;
  63. case "Prototype":
  64. img.sprite = lvlImages[1];
  65. lvlNameTxt.text = "Autswizch - Zombie Survival";
  66. break;
  67. case "killcave":
  68. img.sprite = lvlImages[2];
  69. lvlNameTxt.text = "Kill Cave - Zombie Free";
  70. break;
  71. }
  72. sceneName = lvlName;
  73. }
  74. bool loading = false;
  75. public async void load()
  76. {
  77. show();
  78. await Task.Delay(1000);
  79. loading = true;
  80. loadingProgress.sizeDelta = new Vector2(0, loadingProgress.sizeDelta.y);
  81. SceneManager.sceneLoaded += SceneManager_sceneLoaded;
  82. loadingOperation = SceneManager.LoadSceneAsync(sceneName);
  83. }
  84. private void SceneManager_sceneLoaded(Scene arg0, LoadSceneMode arg1)
  85. {
  86. if (loading)
  87. {
  88. hide();
  89. if (isHost)
  90. {
  91. host();
  92. }
  93. else
  94. {
  95. join();
  96. }
  97. loading = false;
  98. FindObjectOfType<settings>().reloadSettings();
  99. }
  100. }
  101. public string serverName;
  102. public bool isPrivate;
  103. public bool isHost = false;
  104. void host()
  105. {
  106. _LRM.serverName = serverName;
  107. _LRM.extraServerData = sceneName;
  108. _LRM.isPublicServer = isPrivate;
  109. _LRM.ServerStart();
  110. NetworkManager.singleton.StartHost();
  111. }
  112. void join()
  113. {
  114. NetworkManager.singleton.networkAddress = serverName;
  115. NetworkManager.singleton.StartClient();
  116. }
  117. }