ProjectZ/Assets/Scripts/Network/NetworkManagerUI.cs
2024-03-20 21:17:05 +03:00

174 lines
4.4 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Mirror;
using UnityEngine.UI;
using TMPro;
using UnityEngine.SceneManagement;
public class NetworkManagerUI : MonoBehaviour
{
public CustomNetworkManager manager;
public TMP_InputField adressInput;
public TMP_InputField nicknameInput;
public TMP_InputField MaxPlayersInput;
public TMP_InputField MaxMonstersInput;
public GameObject LevelSizeGo;
public TMP_InputField LevelSize;
public TMP_Dropdown LevelSelect;
public TMP_InputField EnergySpawnChanceInput;
public GameObject menu;
public GameObject playMenu;
public GameObject settingsMenu;
public GameObject loadingScreen;
private bool _startButtonsState = true;
private bool _settingsButtonState = true;
private void Awake()
{
Cursor.lockState = CursorLockMode.None;
}
void Start()
{
nicknameInput.text = PlayerPrefs.GetString("NickName");
manager.networkAddress = PlayerPrefs.GetString("Adress");
adressInput.text = PlayerPrefs.GetString("Adress");
MaxPlayersInput.text = PlayerPrefs.GetString("MaxPlayers");
MaxMonstersInput.text = PlayerPrefs.GetString("MaxMonsters");
LevelSize.text = PlayerPrefs.GetInt("LevelSize").ToString();
EnergySpawnChanceInput.text = PlayerPrefs.GetInt("EnergySpawnChance").ToString();
LevelSelect.value = PlayerPrefs.GetInt("Level");
LevelSizeGo.SetActive(LevelSelect.value == 1);
}
#region Start Buttons
public void StartHost()
{
if (!NetworkClient.active)
{
manager.StartHost();
}
}
public void StartClient()
{
if (!NetworkClient.active)
{
manager.StartClient();
}
}
public void SetAdress()
{
manager.networkAddress = adressInput.text;
PlayerPrefs.SetString("Adress", adressInput.text);
}
public void SetNickname()
{
PlayerPrefs.SetString("NickName", nicknameInput.text);
}
public void SetMaxPlayers()
{
manager.maxConnections = int.Parse(MaxPlayersInput.text);
PlayerPrefs.SetString("MaxPlayers", MaxPlayersInput.text);
}
public void SetMaxMonsters()
{
manager.maxMonsters = int.Parse(MaxMonstersInput.text);
PlayerPrefs.SetString("MaxMonsters", MaxMonstersInput.text);
}
string getLevelById(Int32 id)
{
switch (id)
{
case 0 :
LevelSizeGo.SetActive(false);
return "Assets/Scenes/Space.unity";
case 1 :
LevelSizeGo.SetActive(true);
return "Assets/Scenes/Procedural.unity";
default:
LevelSizeGo.SetActive(false);
return "Assets/Scenes/Space.unity";
}
}
public void SetLevel()
{
PlayerPrefs.SetInt("Level", LevelSelect.value);
manager.onlineScene = getLevelById(LevelSelect.value);
}
public void SetLevelSize()
{
if (string.IsNullOrEmpty(LevelSize.text)) return;
PlayerPrefs.SetInt("LevelSize", Int32.Parse(LevelSize.text));
}
public void SetEnergySpawnChance()
{
if (string.IsNullOrEmpty(EnergySpawnChanceInput.text)) return;
PlayerPrefs.SetInt("EnergySpawnChance", Int32.Parse(EnergySpawnChanceInput.text));
}
public void changeStartMenuState()
{
_startButtonsState = !_startButtonsState;
menu.SetActive(_startButtonsState);
playMenu.SetActive(!_startButtonsState);
}
public void changeSettingsMenuState()
{
_settingsButtonState = !_settingsButtonState;
menu.SetActive(_settingsButtonState);
settingsMenu.SetActive(!_settingsButtonState);
}
#endregion
#region Stop Buttons
public void StopClient()
{
manager.StopClient();
}
public void StopButtons()
{
// stop host if host mode
if (NetworkServer.active && NetworkClient.isConnected)
{
manager.StopHost();
}
// stop client if client-only
else if (NetworkClient.isConnected)
{
manager.StopClient();
}
// stop server if server-only
else if (NetworkServer.active)
{
manager.StopServer();
}
}
public void Quit()
{
Application.Quit();
}
#endregion
}