using TMPro; using UnityEngine; using UnityEngine.Networking; using UnityEngine.SceneManagement; using UnityEngine.TextCore.Text; public class GameManager : MonoBehaviour { public static GameManager Instance { get; private set; } private void Awake() { if (Instance == null) Instance = this; } [SerializeField] private Player localPlayer; [SerializeField] private CameraController cameraController; [SerializeField] private GameObject hostLeft; [SerializeField] private TMP_InputField codeInput; [SerializeField] private TMP_Text nickname; [Header("Managers")] [SerializeField] private SceneLoader sceneLoader; [SerializeField] private MainScreensManager mainScreensManager; [Header("References")] [SerializeField] private GameObject loadingScreen; [SerializeField] private Camera mainCamera; [Header("Data")] [SerializeField] private CharactersList charactersList; [SerializeField] private EmojiPopupData emojiPopupData; public static CharactersList CharactersList => Instance.charactersList; public static EmojiPopupData EmojiPopupData => Instance.emojiPopupData; public static Player LocalPlayer => Instance.localPlayer; public static Camera MainCamera => Instance.mainCamera; public void Loaded() { JoinMyRoom(); nickname.text = LocalPlayerData.PlayerName; } public void LoadScene(string sceneName) { sceneLoader.LoadScene(sceneName, () => { //loadingScreen.SetActive(false); mainScreensManager.SetGameScreen(); //LocalPlayer.SetPosition(new Vector3()); }); } public void Loading(bool loading) { loadingScreen.SetActive(loading); } public void JoinLocation(string locationName) { loadingScreen.SetActive(true); ConnectionManager.Instance.JoinLocation(locationName, () => { LoadScene(locationName); }); } public void ChangeMyRoom(string roomName) { loadingScreen.SetActive(true); LocalPlayerData.RoomID = roomName; WebQuery.SetRoom(this, LocalPlayerData.ID, roomName, (UnityWebRequest request, string data) => { JoinMyRoom(); }); } public void JoinMyRoom() { string roomName = LocalPlayerData.RoomID; loadingScreen.SetActive(true); ConnectionManager.Instance.CreateLobbyAndRelay("MyRoom", roomName, 1, true, () => { LoadScene(roomName); }); } public void SetCharacter(Character character) { LocalPlayer.SetCharacter(character); } public void PlayAnim(string anim) { LocalPlayer.PlayAnimation(anim); } public void Lay() { LocalPlayer.Lay(); } public void Sit() { LocalPlayer.Sit(); } public void Emoji(int emoji) { LocalPlayer.SpawnEmoji(emoji); } public void SetLocalPlayer(Player player) { if (!player.IsOwner) { Debug.LogError("Trying to assign not owned player"); return; } localPlayer = player; cameraController.SetTarget(player.transform); } public void HostLeft() { hostLeft.SetActive(true); } }