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

            var roomAccessRequestPacket = new RoomAccessRequestPacket()
            {
                RoomId        = roomId,
                CustomOptions = customOptions,
                Password      = password
            };

            connection.SendMessage((short)MstMessageCodes.GetRoomAccessRequest, roomAccessRequestPacket, (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);
                OnAccessReceivedEvent?.Invoke(access);
            });
        }
Esempio n. 2
0
 /// <summary>
 /// This method triggers the <see cref="OnAccessReceivedEvent"/> 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;
     OnAccessReceivedEvent?.Invoke(access);
 }