Ejemplo n.º 1
0
        // Esto corre en el server
        void OnCreatePlayer(NetworkConnection connection, CreatePlayerMessage createPlayerMessage)
        {
            // create a gameobject using the name supplied by client
            Debug.Log("Server.OnCreatePlayer ");
            GameObject playergo = Instantiate(playerPrefab);

            playergo.GetComponent <Player>().playerName = createPlayerMessage.name;
            NetworkServer.AddPlayerForConnection(connection, playergo);

            /*
             * if (connection.connectionId == 0)
             * {
             *  playergo.GetComponent<Player>().lider = true;
             * }
             *
             * Debug.Log("Conection id" + coneccionId);
             *
             * Debug.Log("Usuario " + createPlayerMessage.name);
             */
            // set it as the player
            // usuariosConectados[connection.connectionId - 1] = createPlayerMessage.name;

            // send message to all client
            //           NetworkServer.sen
            // chatWindow.gameObject.SetActive(true);
        }
Ejemplo n.º 2
0
    void OnCreatePlayer(NetworkConnection conn, CreatePlayerMessage message)
    {
        // playerPrefab is the one assigned in the inspector in Network
        // Manager but you can use different prefabs per race for example
        Transform  start      = numPlayers == 0 ? leftPlayerSpawn : rightPlayerSpawn;
        GameObject gameobject = Instantiate(playerPrefab, start.position, start.rotation);
        // Apply data from the message however appropriate for your game
        // Typically Player would be a component you write with syncvars or properties
        Player player = gameobject.GetComponent <Player>();

        player.playerNo = numPlayers + 1;

        GameObject menu = Instantiate(menuPrefab, start.position, start.rotation);

        Debug.Log("Instantiated Menu prefab");

        GameObject abilitySelector = Instantiate(abilitySelectorPrefab, start.position, start.rotation);

        Debug.Log("Instantiated Ability Selector prefab");


        // call this to use this gameobject as the primary controller
        NetworkServer.AddPlayerForConnection(conn, gameobject);


        NetworkServer.Spawn(menu, conn); //pass conn to spawn with authority
        Debug.Log("Spawned Menu prefab");

        NetworkServer.Spawn(abilitySelector, conn); //pass conn to spawn with authority
        Debug.Log("Spawned Ability Selector prefab");
    }
Ejemplo n.º 3
0
        /// <summary>
        /// 試合に参加する通信処理などを行う関数
        /// </summary>
        /// <param name="roomName"></param>
        /// <param name="playerName"></param>
        private void JoinMatch(string roomName, string playerName)
        {
            if (IPAddress.TryParse(IpAddressText.Text, out _) &&
                int.TryParse(PortNumberText.Text, out _))
            {
                SocketManager.SetAddress(IpAddressText.Text, int.Parse(PortNumberText.Text));
            }
            else
            {
                IsWaitJoin = false;
                return;
            }
            IsWaitJoin = true;
            var cpmsg = new CreatePlayerMessage(playerName, roomName);
            var json  = JsonConvert.SerializeObject(cpmsg);

            var(result, msg) = SocketManager.SendRecv(json);
            if (result)
            {
                Data.Player = JsonConvert.DeserializeObject <Player>(msg);
                state       = State.ChangeGameScene;
            }
            else
            {
                IsWaitJoin = false;
                state      = State.Start;
            }
        }
Ejemplo n.º 4
0
    void OnCreateCharacter(NetworkConnection conn, CreatePlayerMessage message)
    {
        GameObject gameObject = Instantiate(playerPrefab, spawn);

        Player player = GetComponent <Player>();

        player.name = message.playerName;
        NetworkServer.AddPlayerForConnection(conn, gameObject);
    }
    void OnCreatePlayer(NetworkConnection connection, CreatePlayerMessage createPlayerMessage)
    {
        // create a gameobject using the name supplied by client
        GameObject playergo = Instantiate(playerPrefab);

        playergo.GetComponent <Player>().playerName = createPlayerMessage.name;

        // set it as the player
        NetworkServer.AddPlayerForConnection(connection, playergo);
    }
    private void OnCreatePlayer(NetworkConnection conn, CreatePlayerMessage createPlayerMessage)
    {
        GameObject            go     = Instantiate(playerPrefab);
        SeedNetworkRoomPlayer player = go.GetComponent <SeedNetworkRoomPlayer>();

        player.PlayerName = createPlayerMessage.name;

        NetworkServer.AddPlayerForConnection(conn, go);

        OnPlayerConnected(player);
    }
Ejemplo n.º 7
0
    /// <summary>
    /// Called on the client when connected to a server.
    /// <para>The default implementation of this function sets the client as ready and adds a player. Override the function to dictate what happens when the client connects.</para>
    /// </summary>
    /// <param name="conn">Connection to the server.</param>
    public override void OnClientConnect(NetworkConnection conn)
    {
        base.OnClientConnect(conn);

        CreatePlayerMessage message = new CreatePlayerMessage
        {
            playerName = "player"
        };

        conn.Send(message);
    }
Ejemplo n.º 8
0
    /// <summary>
    /// Called on the client when connected to a server.
    /// <para>The default implementation of this function sets the client as ready and adds a player. Override the function to dictate what happens when the client connects.</para>
    /// </summary>
    /// <param name="conn">Connection to the server.</param>
    public override void OnClientConnect(NetworkConnection conn)
    {
        base.OnClientConnect(conn);
        NetworkServer.RegisterHandler <CreatePlayerMessage>(OnCreatePlayer);

        CreatePlayerMessage playerMessage = new CreatePlayerMessage
        {
            playerNo = numPlayers + 1
        };

        conn.Send(playerMessage);
    }
Ejemplo n.º 9
0
        private void OnCreatePlayer(INetworkConnection connection, CreatePlayerMessage createPlayerMessage)
        {
            // create a gameobject using the name supplied by client
            GameObject playergo = Instantiate(playerPrefab).gameObject;

            playergo.GetComponent <Player>().playerName = createPlayerMessage.name;

            // set it as the player
            ServerObjectManager.AddPlayerForConnection(connection, playergo);

            chatWindow.gameObject.SetActive(true);
        }
Ejemplo n.º 10
0
    private void OnCreatePlayer(NetworkConnection connection, CreatePlayerMessage createPlayerMessage)
    {
        if (lm == null)
        {
            lm = GameObject.FindObjectOfType <LobbyManager>();
        }

        GameObject playerGO = Instantiate(roomPlayerPrefab.gameObject);

        playerGO.GetComponent <RoomPlayer>().playerName = createPlayerMessage.name;
        lm.addPlayer(connection.connectionId, playerGO);
        NetworkServer.AddPlayerForConnection(connection, playerGO);
    }
Ejemplo n.º 11
0
        private void OnCreatePlayer(NetworkConnection connection, CreatePlayerMessage createPlayerMessage)
        {
            // create a gameobject using the name supplied by client
            GameObject playergo = Instantiate(playerPrefab);

            playergo.GetComponent <Player>().playerName = createPlayerMessage.name;

            // set it as the player
            NetworkServer.AddPlayerForConnection(connection, playergo);

            //playergo.GetComponent<Player>().CmdReadChatHistory();
            //NetworkClient.connection.identity.GetComponent<Player>().CmdReadChatHistory();
            //StartCoroutine(ReadChatHistory());
        }
        public string MakeSendMessage(string receivedMessage)
        {
            var message = JsonConvert.DeserializeObject <ClientMessage>(receivedMessage);

            var(methodSuccess, sendMessage) = message switch
            {
                CreatePlayerMessage cr => CreatePlayer(cr),
                CloseCreateMessage cl => CloseCreate(cl),
                GetMatchInfoMessage gm => GetMatchInfo(gm),
                GetAllMatchesMessage _ => GetAllMatches(),
                DiceMessage dm => ThrowDice(dm),
                GetStartedMatchMessage gsm => GetStatedMatch(gsm),
                GetRankingMessage gr => GetRanking(gr),
                GetMatchViewImageMessage gmv => GetMatchView(gmv),
                _ => throw new NotImplementedException()
            };

            return(HeaderProtocol.MakeHeader(sendMessage, methodSuccess));
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Invokes when client requested to create player on mirror server
        /// </summary>
        /// <param name="arg1"></param>
        /// <param name="arg2"></param>
        protected virtual void CreatePlayerRequestHandler(NetworkConnection connection, CreatePlayerMessage message)
        {
            // Try to get old player
            GameObject oldPlayer = null;

            if (connection.identity != null)
            {
                oldPlayer = connection.identity.gameObject;
            }

            // Get start position of player
            Transform startPos = GetStartPosition();

            // Create new player
            GameObject player = startPos != null?Instantiate(playerPrefab, startPos.position, startPos.rotation) : Instantiate(playerPrefab);

            if (oldPlayer)
            {
                NetworkServer.ReplacePlayerForConnection(connection, player);
            }
            else
            {
                NetworkServer.AddPlayerForConnection(connection, player);
            }
        }
Ejemplo n.º 14
0
        private async void OnStartButtonClicked(object sender, EventArgs e)
        {
            StartButton.IsEnabled = false;
            var serverIpAddress = ServerIpAddress.Text;
            var serverPort      = ServerPort.Text;
            var playerName      = PlayerNameEditor.Text;
            var roomName        = RoomNameEditor.Text;

            if (string.IsNullOrEmpty(serverIpAddress) || string.IsNullOrEmpty(serverPort) ||
                string.IsNullOrEmpty(playerName) || string.IsNullOrEmpty(roomName))
            {
                Device.BeginInvokeOnMainThread(async() =>
                                               await DisplayAlert("エラー", "サーバーのIPアドレス、ポート番号、プレイヤー名、部屋名のいずれかが不足しています", "OK"));
                return;
            }

            if (!IPAddress.TryParse(serverIpAddress, out var serverIp) || !int.TryParse(serverPort, out var port))
            {
                Device.BeginInvokeOnMainThread(async() =>
                                               await DisplayAlert("エラー", "IPアドレス、ポート番号の形式が正しくありません", "OK"));
                return;
            }

            Application.Current.Properties["serverIpAddress"] = serverIp;
            Application.Current.Properties["serverPort"]      = port;

            Player playerData = null;

            try
            {
                using var socket = ConnectServer.CreateSocket(serverIp, port);
                var createPlayerMessage = new CreatePlayerMessage(playerName, roomName);
                var msg = JsonConvert.SerializeObject(createPlayerMessage);
                var(_, result, recvMsg) = Connection.SendAndRecvMessage(msg, socket, true);

                if (!result)
                {
                    var failMessage = JsonConvert.DeserializeObject <FailedMessage>(recvMsg);
                    Device.BeginInvokeOnMainThread(
                        async() => await DisplayAlert("部屋の作成に失敗", failMessage.Message, "OK"));
                    return;
                }

                playerData = JsonConvert.DeserializeObject <Player>(recvMsg);
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception);
                Device.BeginInvokeOnMainThread(async() =>
                                               await DisplayAlert("エラー", "ソケットのConnectで例外が発生しました。やり直してください。", "OK"));
            }
            finally
            {
                if (playerData != null)
                {
                    await Navigation.PushAsync(new WaitOtherPlayerPage(playerData));
                }

                StartButton.IsEnabled = true;
            }
        }