public void SpawnPlayer(NetworkConnection conn)
    {
        NetworkGamePlayerLobby networkGamePlayerLobby = conn.identity.transform.GetComponent <NetworkGamePlayerLobby>();

        if (networkGamePlayerLobby.IsOrange)
        {
            Transform spawnpoint = orangeSpawnPoints[orangeNextIndex];

            if (spawnpoint == null)
            {
                Debug.LogError($"Missing spawn point for orange {orangeNextIndex}");
                return;
            }
            GameObject playerInstance = Instantiate(playerPrefab, orangeSpawnPoints[orangeNextIndex].position, orangeSpawnPoints[orangeNextIndex].rotation);
            PlayerID   playerID       = playerInstance.GetComponent <PlayerID>();
            playerID.isOrange    = true;
            playerID.displayName = networkGamePlayerLobby.displayName;
            playerID.SetGamePlayer(RoundSystem.Room.GamePlayers.IndexOf(networkGamePlayerLobby));
            playerInstance.GetComponent <MoneyHandler>().SetMoney(networkGamePlayerLobby.money, networkGamePlayerLobby);
            players.Add(playerInstance);
            NetworkServer.Spawn(playerInstance, conn);
            GameObject characterInstance = Instantiate(orangeCharacterPrefab, playerInstance.transform);
            characters.Add(characterInstance);
            NetworkServer.Spawn(characterInstance, conn);

            GiveWeapons(playerInstance, networkGamePlayerLobby.gameObject);

            GameObject.Find("OrangeDeadRoom").GetComponent <SpectatorScreenController>().AddPlayer(playerInstance);

            for (int i = 0; i < players.Count; i++)
            {
                RpcSetCharacterParent(characters[i], players[i]);
            }

            orangeNextIndex++;
        }
        else if (networkGamePlayerLobby.IsGreen)
        {
            Transform spawnpoint = greenSpawnPoints[greenNextIndex];

            if (spawnpoint == null)
            {
                Debug.LogError($"Missing spawn point for green {greenNextIndex}");
                return;
            }
            GameObject playerInstance = Instantiate(playerPrefab, greenSpawnPoints[greenNextIndex].position, greenSpawnPoints[greenNextIndex].rotation);
            PlayerID   playerID       = playerInstance.GetComponent <PlayerID>();
            playerID.isGreen     = true;
            playerID.displayName = networkGamePlayerLobby.displayName;
            playerID.SetGamePlayer(RoundSystem.Room.GamePlayers.IndexOf(networkGamePlayerLobby));
            playerInstance.GetComponent <MoneyHandler>().SetMoney(networkGamePlayerLobby.money, networkGamePlayerLobby);
            players.Add(playerInstance);
            NetworkServer.Spawn(playerInstance, conn);
            GameObject characterInstance = Instantiate(greenCharacterPrefab, playerInstance.transform);
            characters.Add(characterInstance);
            NetworkServer.Spawn(characterInstance, conn);

            GiveWeapons(playerInstance, networkGamePlayerLobby.gameObject);

            GameObject.Find("GreenDeadRoom").GetComponent <SpectatorScreenController>().AddPlayer(playerInstance);

            for (int i = 0; i < players.Count; i++)
            {
                RpcSetCharacterParent(characters[i], players[i]);
            }

            greenNextIndex++;
        }
    }