示例#1
0
        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);
        }
示例#2
0
        /**
         * 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());
    }
示例#5
0
        /**
         * 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);
        }