コード例 #1
0
    public void LeavePlayer(MessageHeader playerLeave)
    {
        PlayerLeaveRoomMessage leaveRoom = playerLeave as PlayerLeaveRoomMessage;
        Players player = PlayerManager.Instance.Players[leaveRoom.PlayerID];

        player.Sprite.gameObject.SetActive(false);
    }
コード例 #2
0
    public void PlayerLeftRoom(int leftId, int recieverID)
    {
        PlayerLeaveRoomMessage message = new PlayerLeaveRoomMessage()
        {
            PlayerID = leftId
        };

        SendMessage(message, connections[recieverID]);
    }
コード例 #3
0
    /// <summary>
    /// When a player leaves a room, send this to all clients in the room.
    /// </summary>
    private void SendPlayerLeaveRoom(Client receivingClient, Client leavingClient)
    {
        var message = new PlayerLeaveRoomMessage()
        {
            PlayerID = leavingClient.PlayerID
        };

        server.SendMessage(message, receivingClient.Connection);
    }
コード例 #4
0
    private void PlayerLeaveRoom(ref DataStreamReader reader)
    {
        var message = new PlayerLeaveRoomMessage();

        message.DeserializeObject(ref reader);
        Debug.Log("message id: " + message.PlayerID);
        //Debug.Log("message id: " + );
        dataHolder.game.cRoom.PlayerLeftRoom(dataHolder.players.Find(x => x.playerIndex == message.PlayerID));
        dataHolder.game.cRoom.UpdatePlayerUIElements();
    }
コード例 #5
0
    private void MakeLeaveRoomMessage(int i)
    {
        for (int j = 0; j < connections.Length; j++)
        {
            Players currentPlayer  = PlayerManager.Instance.Players[i];
            Players compairePlayer = PlayerManager.Instance.Players[j];

            if (currentPlayer.TilePosition == compairePlayer.TilePosition)
            {
                var LeaveRoom = new PlayerLeaveRoomMessage()
                {
                    PlayerID = PlayerManager.Instance.Players[i].playerID
                };
                NetworkManager.SendMessage(networkDriver, LeaveRoom, connections[j]);
            }
        }
        SendNewRoomInfo();
    }
コード例 #6
0
    public void Update()
    {
        networkJobHandle.Complete();

        if (!connection.IsCreated)
        {
            return;
        }

        DataStreamReader reader;

        NetworkEvent.Type cmd;
        while ((cmd = connection.PopEvent(networkDriver, out reader)) != NetworkEvent.Type.Empty)
        {
            if (cmd == NetworkEvent.Type.Connect)
            {
                Debug.Log("Connected to server");
            }
            else if (cmd == NetworkEvent.Type.Data)
            {
                var messageType = (Message.MessageType)reader.ReadUShort();
                Debug.Log("Client Received: " + messageType + " from Host");

                Message message = null;
                switch (messageType)
                {
                case Message.MessageType.None: break;

                case Message.MessageType.NewPlayer: message = new NewPlayerMessage(); break;

                case Message.MessageType.Welcome: message = new WelcomeMessage(); break;

                case Message.MessageType.RequestDenied: message = new RequestDeniedMessage(); break;

                case Message.MessageType.PlayerLeft: message = new PlayerLeftMessage(); break;

                case Message.MessageType.StartGame: message = new StartGameMessage(); break;

                case Message.MessageType.PlayerTurn: message = new PlayerTurnMessage(); break;

                case Message.MessageType.RoomInfo: message = new RoomInfoMessage(); break;

                case Message.MessageType.PlayerEnterRoom: message = new PlayerEnterRoomMessage(); break;

                case Message.MessageType.PlayerLeaveRoom: message = new PlayerLeaveRoomMessage(); break;

                case Message.MessageType.ObtainTreasure: message = new ObtainTreasureMessage(); break;

                case Message.MessageType.HitMonster: message = new HitMonserMessage(); break;

                case Message.MessageType.HitByMonster: message = new HitByMonserMessage(); break;

                case Message.MessageType.PlayerDefends: message = new PlayerDefendsMessage(); break;

                case Message.MessageType.PlayerLeftDungeon: message = new PlayerLeftDungeonMessage(); break;

                case Message.MessageType.PlayerDies: message = new PlayerDiesMessage(); break;

                case Message.MessageType.EndGame:   break;

                default: break;
                }
                if (message != null)
                {
                    message.DeserializeObject(ref reader);
                    receivedMessagesQueue.Enqueue(message);
                }
            }
            else if (cmd == NetworkEvent.Type.Disconnect)
            {
                Debug.Log("Disconnected from server");
                connection = default;
            }
        }
        ProcessMessagesQueue();

        if (Time.time - lastSendTime > STAY_ALIVE_AFTER_SECONDS)
        {
            SendMessage(new NoneMessage());
        }
        networkJobHandle = networkDriver.ScheduleUpdate();
    }
コード例 #7
0
        public void HandlePlayerLeaveRoom(Message message)
        {
            PlayerLeaveRoomMessage playerLeaveRoomMessage = (PlayerLeaveRoomMessage)message;

            Menu.Singleton.gameWindow.OutputText("Player left room:" + lobby.players[playerLeaveRoomMessage.PlayerID].PlayerTextWithColorTag());
        }