Exemple #1
0
 bool ILobby.UnSubscribe()
 {
     try
     {
         ILobbyCallback callback = OperationContext.Current.GetCallbackChannel <ILobbyCallback>();
         if (subscribers.Contains(callback))
         {
             subscribers.Remove(callback);
         }
         return(true);
     }
     catch
     {
         return(false);
     }
 }
Exemple #2
0
 bool ILobby.Subscribe()
 {
     try
     {
         ILobbyCallback chatCallBack = OperationContext.Current.GetCallbackChannel <ILobbyCallback>();
         if (!subscribers.Contains(chatCallBack))
         {
             subscribers.Add(chatCallBack);
         }
         return(true);
     }
     catch
     {
         return(false);
     }
 }
        public void SubscribeToLobbyEvents(string username, string password)
        {
            //TODO Validate subscription using password
            ILobbyCallback clientCallbackLobby = OperationContext.Current.GetCallbackChannel <ILobbyCallback>();
            Player         player = playersOnline.Find(x => x.UserName == username);

            player.ILobbyCallback = clientCallbackLobby;

            foreach (var onlinePlayer in playersOnline)
            {
                if (onlinePlayer != player)
                {
                    onlinePlayer.ILobbyCallback?.PlayerConnected(player); // Added null check because it could fail if 2 people logged in at the same time
                }
            }
        }
Exemple #4
0
 public static void AddLobbyCallback(ILobbyCallback l)
 {
     lobbies.Add(l);
 }
        /// <summary>
        /// Get the player from the lobby context. Safe to assume this is never null.
        /// </summary>
        /// <returns></returns>
        private Player getPlayerFromLobbyContext()
        {
            ILobbyCallback currentPlayerCallback = OperationContext.Current.GetCallbackChannel <ILobbyCallback>();

            return(playersOnline.Find(x => x.ILobbyCallback == currentPlayerCallback));
        }
        public List <Player> GetOnlineList()
        {
            ILobbyCallback currentPlayerCallback = OperationContext.Current.GetCallbackChannel <ILobbyCallback>();

            return(playersOnline.Where(x => x.ILobbyCallback != currentPlayerCallback).ToList());
        }