public void OnServerReadied(NetworkConnection connection) { NetworkGamePlayerMageBall networkGamePlayer = connection.identity.gameObject.GetComponent <NetworkGamePlayerMageBall>(); Transform spawnPoint; spawnPoint = (currentTeam == Team.Red) ? redSpawnPoints.ElementAtOrDefault(nextIndex) : blueSpawnPoints.ElementAtOrDefault(nextIndex); if (spawnPoint == null) { Debug.LogError($"There is no spawn point for player {nextIndex}!"); return; } Vector3 position = (currentTeam == Team.Red) ? redSpawnPoints[nextIndex].position : blueSpawnPoints[nextIndex].position; Quaternion rotation = (currentTeam == Team.Red) ? redSpawnPoints[nextIndex].rotation : blueSpawnPoints[nextIndex].rotation; GameObject playerPrefab = GetPlayerPrefabFromLoadout(networkGamePlayer.PlayerLoadout); GameObject playerInstance = Instantiate(playerPrefab, position, rotation); NetworkServer.Spawn(playerInstance, connection); networkGamePlayer.SetPlayerGameObject(playerInstance, position, rotation); networkGamePlayer.TargetResetPlayerOwner(); HUD hud = playerInstance.GetComponent <HUD>(); hud.SetNetworkGamePlayerMageBall(networkGamePlayer); Spellcasting spellcasting = playerInstance.GetComponent <Spellcasting>(); spellcasting.SetPlayerLoadout(networkGamePlayer.PlayerLoadout); PlayerMovement playerMovement = playerInstance.GetComponent <PlayerMovement>(); playerMovement.SetPassiveFromLoadout(networkGamePlayer.PlayerLoadout); PlayerNameTag playerNameTag = playerInstance.GetComponent <PlayerNameTag>(); playerNameTag.SetPlayerName(networkGamePlayer.DisplayName); if (currentTeam != firstTeam) { nextIndex++; } if (currentTeam == Team.Blue) { currentTeam = Team.Red; } else { currentTeam = Team.Blue; } }
private void RoomPlayerToGamePlayer() { for (int i = NetworkRoomPlayers.Count; i-- > 0;) { NetworkConnection connection = NetworkRoomPlayers[i].connectionToClient; NetworkGamePlayerMageBall gamePlayerInstance = Instantiate(gamePlayerPrefab); gamePlayerInstance.SetDisplayName(NetworkRoomPlayers[i].DisplayName); gamePlayerInstance.SetIsHost(NetworkRoomPlayers[i].IsHost); gamePlayerInstance.SetPlayerLoadout(NetworkRoomPlayers[i].PlayerLoadout); NetworkServer.DestroyPlayerForConnection(connection); NetworkServer.AddPlayerForConnection(connection, gamePlayerInstance.gameObject); } }
private void OnNetworkGamePlayerMageBallChanged(NetworkGamePlayerMageBall oldValue, NetworkGamePlayerMageBall newValue) { //Pause menu is spawned after NetworkGamePlayer is initially set on Server so we need to wait to set it StartCoroutine(WaitToSetPauseMenuNetworkGamePlayer(newValue)); }
private IEnumerator WaitToSetPauseMenuNetworkGamePlayer(NetworkGamePlayerMageBall networkGamePlayerMageBall) { yield return(new WaitUntil(() => pauseMenu != null)); pauseMenu.NetworkGamePlayer = networkGamePlayerMageBall; }
public void SetNetworkGamePlayerMageBall(NetworkGamePlayerMageBall networkGamePlayerMageBall) { this.networkGamePlayerMageBall = networkGamePlayerMageBall; }