bool ILobby.UnSubscribe() { try { ILobbyCallback callback = OperationContext.Current.GetCallbackChannel <ILobbyCallback>(); if (subscribers.Contains(callback)) { subscribers.Remove(callback); } return(true); } catch { return(false); } }
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 } } }
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()); }