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);
            }
        }
Example #3
0
 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));
 }
Example #4
0
        private IEnumerator WaitToSetPauseMenuNetworkGamePlayer(NetworkGamePlayerMageBall networkGamePlayerMageBall)
        {
            yield return(new WaitUntil(() => pauseMenu != null));

            pauseMenu.NetworkGamePlayer = networkGamePlayerMageBall;
        }
Example #5
0
 public void SetNetworkGamePlayerMageBall(NetworkGamePlayerMageBall networkGamePlayerMageBall)
 {
     this.networkGamePlayerMageBall = networkGamePlayerMageBall;
 }