private IEnumerator SpawnPlayerAfterRoundStart(NetworkConnection conn, CharacterSelectMessage characterSelection) { // TODO: Should store players in an object until round is started, then spawn them all at once. yield return(new WaitUntil(() => roundManager.IsRoundStarted)); //Something has gone horribly wrong if (characterSelection?.character == null) { throw new Exception("Could not read character data"); } // Spawn player based on their character choices Transform startPos = GetStartPosition(); GameObject player = startPos != null ? Instantiate(playerPrefab, startPos.position, startPos.rotation) : Instantiate(playerPrefab); player.name = characterSelection.character.name; // NetworkServer.ReplacePlayerForConnection(conn, player); //Destroy dummy player NetworkServer.DestroyPlayerForConnection(conn); //Spawn actual player NetworkServer.AddPlayerForConnection(conn, player); }
/** * If the client sends a CharacterSelect, we log them in with that character. */ private void OnCharacterSelectMessage(NetworkConnection conn, CharacterSelectMessage characterSelection) { if (!IsPlayerPrefabValid(conn)) { return; } StartCoroutine(SpawnPlayerAfterRoundStart(conn, characterSelection)); }
// Start is called before the first frame update void Start() { selectButton.onClick.AddListener(() => { CharacterSelectMessage message = new CharacterSelectMessage { character = characterList.options[characterList.value].text, username = loginUI.GetComponent <UILogin>().auth.username }; NetworkClient.Send(message); gameObject.SetActive(false); }); }
private void OnCharacterSelect(NetworkConnection conn, CharacterSelectMessage msg) { SelectCharacter(msg.character, msg.username); GameObject go = Instantiate(player); Player playerComponent = go.GetComponent <Player>(); playerComponent.playerName = msg.character; // call this to use this gameobject as the primary controller NetworkServer.AddPlayerForConnection(conn, go); conn.Send(new CharacterSelectedMessage()); }
/** * If the client sends a CharacterSelect, we log them in with that character. */ private void OnCharacterSelectMessage(NetworkConnection conn, CharacterSelectMessage characterSelection) { if (!IsPlayerPrefabValid(conn)) { return; } // If they somehow f**k up the if (characterSelection?.character == null) { base.OnServerAddPlayer(conn); return; } // Spawn player based on their character choices Transform startPos = GetStartPosition(); GameObject player = startPos != null ? Instantiate(playerPrefab, startPos.position, startPos.rotation) : Instantiate(playerPrefab); player.name = characterSelection.character.name; NetworkServer.AddPlayerForConnection(conn, player); }
public void OnCharacterSelect(NetworkConnection conn, CharacterSelectMessage msg) { Debug.Log("OnCharacterSelect"); AccountInfoMessage accMessage = new AccountInfoMessage { name = msg.username }; conn.Send(accMessage); CharacterSelectedMessage characterSelectMessage = new CharacterSelectedMessage { name = msg.username }; conn.Send(characterSelectMessage); }