// Update is called once per frame void Update() { //if (Input.GetKeyDown(KeyCode.C)) //{ // Connect(); //} //if (Input.GetKeyDown(KeyCode.K)) //{ // CreateGame("Test"); //} //if (Input.GetKeyDown(KeyCode.J)) //{ // JoinGame(playerName, lobbyCode); //} if (inLobby) { if (SceneManager.GetActiveScene() == SceneManager.GetSceneByName("game")) { inLobby = false; NetData n = new NetData("ready_start", ""); sendData(JsonConvert.SerializeObject(n)); } } if (!inLobby) { if (SceneManager.GetActiveScene() == SceneManager.GetSceneByName("lobby")) { inLobby = true; } } if (connected) { acceptedQueue.AddRange(queue); queue.Clear(); updatedObjects.Clear(); for (int i = acceptedQueue.Count - 1; i >= 0; i--) { NetData data = JsonConvert.DeserializeObject <NetData>(acceptedQueue[i]); if (data.type == "object") { if (!updatedObjects.Contains(data.id)) { GameObjectData gData = JsonConvert.DeserializeObject <GameObjectData>(data.value); if (networkedObjects.ContainsKey(data.id)) { GameObjectData.updateGameObject(gData, networkedObjects[data.id]); } else { Debug.Log(data.key); GameObject g = Instantiate(objects[objectNames.IndexOf(data.key)]); NetObject netObj = g.AddComponent <NetObject>(); netObj.id = data.id; networkedObjects.Add(data.id, g); GameObjectData.updateGameObject(gData, g); if (data.key == "player") { string p_name = data.other[0]; if (p_name.EndsWith("?")) { p_name = p_name.Substring(0, p_name.Length - 1); } g.transform.Find("Stats").GetChild(0).GetComponent <TextMeshProUGUI>().text = p_name; } } updatedObjects.Add(data.id); } } else if (data.type == "object_id") { Debug.Log("New Object: " + data.id); NetObject obj = waitlist[0].AddComponent <NetObject>(); obj.id = data.id; sync.Add(data.id, waitlist[0]); waitlist.RemoveAt(0); } else if (data.type == "game_start") { gameStarted = true; Debug.Log("Game Started"); } else if (data.type == "animation") { Animator anim = networkedObjects[data.id].GetComponent <Animator>(); if (data.key == "trigger") { anim.SetTrigger(data.value); } else { anim.SetBool(data.value, bool.Parse(data.key)); } } else if (data.type == "update_roster") { string combinedRoster = ""; foreach (string n in data.other) { Debug.Log(n); combinedRoster += n + ";"; } combinedRoster = combinedRoster.Substring(0, combinedRoster.Length - 1); PlayerPrefs.SetString("last_roster", combinedRoster); Debug.Log(combinedRoster); LobbyManager m = FindObjectOfType <LobbyManager>(); if (m != null) { m.UpdatePlayers(data.other); int counter = 0; foreach (string n in data.other) { Debug.Log(n); if (n == nameUsed) { PlayerPrefs.SetInt("color", counter); Debug.Log("Found Name: " + counter); break; } counter++; } } } else if (data.type == "lobby_joined") { Debug.Log("Joined Lobby: " + data.id); PlayerPrefs.SetInt("joinedLobby", data.id); inLobby = true; SceneManager.LoadScene("lobby"); } else if (data.type == "prepare_game") { SceneManager.LoadScene("game"); } else if (data.type == "recieve_damage") { Debug.Log("Lost " + data.value + " health"); Vector3 enemyPosition = networkedObjects[int.Parse(data.key)].transform.position; sync[data.id].GetComponent <PlayerController>().addKnockback(enemyPosition); sync[data.id].GetComponent <PlayerController>().Damage(int.Parse(data.value)); } else if (data.type == "join_failed") { GameObject alertCanvas = Instantiate(alertPrefab); Alert alert = alertCanvas.GetComponent <Alert>(); alert.ShowInput(false); alert.ConfigureQuestion(data.key); alert.Display(null); } else if (data.type == "destroy_beacon") { Debug.Log("recieved Destroy Message"); BeaconManager manager = FindObjectOfType <BeaconManager>(); if (manager != null) { manager.DestoryBeacon(data.id); } } } acceptedQueue.Clear(); if (gameStarted) { timeCounter -= Time.deltaTime; if (timeCounter < 0) { runGameSync(); timeCounter = 1 / 60; } } } if (disconnect) { Disconnect(); } }