public NetworkGameDisconnectUserControl(KulamiPeer peer, VoidFunctionTemplate.Function callback) { InitializeComponent(); Peer = peer; Peer.OnConnectionChange += on_connect_change; Callback = callback; }
public ChatboxUserControl(KulamiPeer peer) { InitializeComponent(); this.peer = peer; this.humanPlayerName = Networkmanager.ClientName; peer.OnChatMessage += on_chat_message; }
private void Challenge_OnMouseLeftButtonUp(object sender, MouseButtonEventArgs e) { KulamiPeer peer = PlayersListBox.SelectedPeer(); if (peer == null) { return; } //todo: make this an animation instead if (OutgoingChallengesCanvas.Visibility == Visibility.Hidden) { OutgoingChallengesCanvas.Visibility = Visibility.Visible; } if (OutgoingChallengesListBox.Contains(peer)) { OutgoingChallengesListBox.UpdatePeer(peer); } else { OutgoingChallengesListBox.AddPeer(peer); } // todo make this random number peer.SendRequest(5, true); }
private void subscribe(KulamiPeer peer) { peer.OnGameRequest += on_game_request; peer.OnGameResponse += on_game_response; peer.OnNameUpdate += on_name_update; peer.OnLobbyUpdate += on_lobby_update; peer.OnConnectionChange += on_peer_connect_change; }
public static bool Contains(this ListBox listBox, KulamiPeer peer) { List <ListBoxItem> items = (List <ListBoxItem>)listBox.ItemsSource; return(items .Select(x => (KulamiPeer)x.Content) .Any(x => x.Identifier == peer.Identifier)); }
private void unsubscribe(KulamiPeer peer) { peer.OnGameRequest = null; peer.OnGameResponse = null; peer.OnNameUpdate = null; peer.OnLobbyUpdate = null; peer.OnConnectionChange = null; }
public NetworkGameLeftUserControl(KulamiPeer peer, VoidFunctionTemplate.Function callback) { InitializeComponent(); this.Callback = callback; LeftGameNotificationLabel.Content = peer.Name + " has left the game."; LeftGameNotificationLabelGlow.Content = peer.Name + " has left the game."; }
public static void AddPeer(this ListBox listBox, KulamiPeer peer) { List <ListBoxItem> items = (List <ListBoxItem>)listBox.ItemsSource; items.Add(new ListBoxItem { Content = peer }); listBox.ItemsSource = items; listBox.Items.Refresh(); }
private void on_lobby_update(object sender, LobbyEventArgs e) { KulamiPeer peer = sender as KulamiPeer; if (peer == null) { return; } peer_update(peer); }
public static void AddOrUpdatePeer(this ListBox listBox, KulamiPeer peer) { // Add the peer if we don't have it, or just update if (listBox.Contains(peer)) { listBox.UpdatePeer(peer); } else { listBox.AddPeer(peer); } }
public static void RemovePeer(this ListBox listBox, KulamiPeer peer, Canvas canvas) { List <ListBoxItem> items = (List <ListBoxItem>)listBox.ItemsSource; listBox.ItemsSource = items.Where( x => ((KulamiPeer)x.Content).Identifier != peer.Identifier ).ToList(); listBox.Items.Refresh(); if (!listBox.HasItems && canvas != null) { canvas.hide(); } }
private void Connect_OnMouseLeftButtonUp(object sender, MouseButtonEventArgs e) { KulamiPeer peer = IncomingChallengesListBox.SelectedPeer(); if (peer == null) { return; } peer.SendResponse(true); StartGame(peer, BoardSetup.GetBoard(peer.IncomingRequest.BoardNum), !peer.IncomingRequest.ChallengerGoesFirst); }
private void peer_update(KulamiPeer peer) { Dispatcher.Invoke(() => { if (string.IsNullOrEmpty(peer.Name) || !peer.InLobby) { PlayersListBox.RemovePeer(peer, null); IncomingChallengesListBox.RemovePeer(peer, IncomingChallengesCanvas); OutgoingChallengesListBox.RemovePeer(peer, OutgoingChallengesCanvas); return; } PlayersListBox.AddOrUpdatePeer(peer); IncomingChallengesListBox.UpdatePeer(peer); OutgoingChallengesListBox.UpdatePeer(peer); }); }
public static KulamiPeer SelectedPeer(this ListBox listBox) { ListBoxItem boxItem = listBox.SelectedItem as ListBoxItem; if (boxItem == null && listBox.Items.Count == 1) { boxItem = listBox.Items[0] as ListBoxItem; } if (boxItem == null) { return(null); } KulamiPeer peer = boxItem.Content as KulamiPeer; return(peer); }
private void StartGame(KulamiPeer peer, Board board, bool goFirst) { Teardown(); // Set up game engine HumanPlayer humanPlayer = new HumanPlayer(Networkmanager.ClientName, GameBoardUserControl.human_move_handler); NetworkPlayer networkPlayer = new NetworkPlayer(peer); GameBoardUserControl control = new GameBoardUserControl( board, humanPlayer, networkPlayer, goFirst ? PieceType.Red : PieceType.Black ); control.SetChat(new ChatboxUserControl(peer)); ContentControlActions.setBaseContentControl(control); }
private void on_game_request(object sender, NetGameRequestEventArgs e) { KulamiPeer peer = sender as KulamiPeer; if (peer == null) { return; } Dispatcher.Invoke(() => { IncomingChallengesCanvas.show(); // Don't add them if they've already challenged us if (!IncomingChallengesListBox.Contains(peer)) { IncomingChallengesListBox.AddPeer(peer); } }); }
private void ChallengeCancel_OnMouseLeftButtonUp(object sender, MouseButtonEventArgs e) { KulamiPeer peer = OutgoingChallengesListBox.SelectedPeer(); if (peer == null) { return; } //todo: rescind challenge request for selected peer peer.SendResponse(false); OutgoingChallengesListBox.RemovePeer(peer, OutgoingChallengesCanvas); //todo: make this an animation instead if (!OutgoingChallengesListBox.HasItems) { OutgoingChallengesCanvas.Visibility = Visibility.Hidden; } }
private void on_peer_discovery(object sender, EventArgs e) { KulamiPeer peer = sender as KulamiPeer; if (peer == null) { return; } subscribe(peer); if (string.IsNullOrEmpty(peer.Name) || !peer.InLobby) { return; } Dispatcher.Invoke(() => { PlayersListBox.AddPeer(peer); }); }
private void on_peer_connect_change(object sender, NetConnectionEventArgs e) { KulamiPeer peer = sender as KulamiPeer; if (peer == null) { return; } if (e.Connected) { return; } Dispatcher.Invoke(() => { PlayersListBox.RemovePeer(peer, null); IncomingChallengesListBox.RemovePeer(peer, IncomingChallengesCanvas); OutgoingChallengesListBox.RemovePeer(peer, OutgoingChallengesCanvas); }); }
private void on_game_response(object sender, NetGameResponseEventArgs e) { KulamiPeer peer = sender as KulamiPeer; if (peer == null) { return; } if (e.ChallengeAccpeted) { StartGame(peer, BoardSetup.GetBoard(e.BoardNum), e.ChallengerGoesFirst); } else { Dispatcher.Invoke(() => { IncomingChallengesListBox.RemovePeer(peer, IncomingChallengesCanvas); }); } }
public static void UpdatePeer(this ListBox listBox, KulamiPeer peer) { if (!listBox.Contains(peer)) { return; } List <ListBoxItem> items = (List <ListBoxItem>)listBox.ItemsSource; int index = items.IndexOf( items.SingleOrDefault(x => x.Content == peer) ); items.RemoveAt(index); items.Insert(index, new ListBoxItem() { Content = peer }); listBox.ItemsSource = items; listBox.Items.Refresh(); }