Exemplo n.º 1
0
        /// <summary>
        /// This method triggers the <see cref="AccessReceived"/> event. Call this,
        /// if you made some custom functionality to get access to rooms
        /// </summary>
        /// <param name="access"></param>
        public void TriggerAccessReceivedEvent(RoomAccessPacket access)
        {
            LastReceivedAccess = access;

            if (AccessReceived != null)
            {
                AccessReceived.Invoke(access);
            }
        }
        /// <summary>
        /// Tries to get an access to a room with a given room id, password,
        /// and some other properties, which will be visible to the room (game server)
        /// </summary>
        public void GetAccess(int roomId, RoomAccessCallback callback, string password,
                              Dictionary <string, string> properties, IClientSocket connection)
        {
            if (!connection.IsConnected)
            {
                callback.Invoke(null, "Not connected");
                return;
            }

            var packet = new RoomAccessRequestPacket()
            {
                RoomId     = roomId,
                Properties = properties,
                Password   = password
            };

            connection.SendMessage((short)MsfOpCodes.GetRoomAccess, packet, (status, response) =>
            {
                if (status != ResponseStatus.Success)
                {
                    callback.Invoke(null, response.AsString("Unknown Error"));
                    return;
                }

                var access = response.Deserialize(new RoomAccessPacket());

                LastReceivedAccess = access;

                callback.Invoke(access, null);

                if (AccessReceived != null)
                {
                    AccessReceived.Invoke(access);
                }

                if (RoomConnector.Instance != null)
                {
                    RoomConnector.Connect(access);
                }
            });
        }
Exemplo n.º 3
0
        /// <summary>
        ///     Tries to get an access to a room with a given room id, password,
        ///     and some other properties, which will be visible to the room (game server)
        /// </summary>
        public void GetAccess(int roomId, string password, Dictionary <string, string> properties, RoomAccessCallback callback,
                              ErrorCallback errorCallback)
        {
            if (!Client.IsConnected)
            {
                errorCallback.Invoke("Not connected");
                return;
            }

            var packet = new RoomAccessRequestPacket
            {
                RoomId     = roomId,
                Properties = properties,
                Password   = password
            };

            Client.SendMessage((ushort)OpCodes.GetRoomAccess, packet, (status, response) =>
            {
                if (status != ResponseStatus.Success)
                {
                    errorCallback.Invoke(response.AsString("Unknown Error"));
                    return;
                }

                var access = response.Deserialize <RoomAccessPacket>();

                LastReceivedAccess = access;

                callback.Invoke(access);

                AccessReceived?.Invoke(access);

                if (RoomConnector.Instance != null)
                {
                    RoomConnector.Connect(access);
                }
            });
        }
Exemplo n.º 4
0
        /// <summary>
        ///     This method triggers the <see cref="AccessReceived" /> event. Call this,
        ///     if you made some custom functionality to get access to rooms
        /// </summary>
        /// <param name="access"></param>
        public void TriggerAccessReceivedEvent(RoomAccessPacket access)
        {
            LastReceivedAccess = access;

            AccessReceived?.Invoke(access);
        }