private static async Task <Player> ReadPlayerInfoAsync(DataReader reader) { var json = await ReadStringFromStreamAsync(reader).ConfigureAwait(true); var player = JsonConvert.DeserializeObject <Player>(json); MultiPlayerData.OtherPlayers[player.NickName] = player; var eventArgs = new PlayerInfoReceivedEventArguments(player); // Tracking number is available, raise the event. if (player.Instrument >= 0) { OnPlayerInstrumentInfoReceived?.Invoke(eventArgs); } else if (player.ReadyToStart) { OnPlayerReadyInfoReceived?.Invoke(eventArgs); } else { OnPlayerInfoReceived?.Invoke(eventArgs); } return(player); }
/// <summary> /// NewPlayerJoined. /// </summary> /// <param name="args">PlayerInfoReceivedEventArguments.</param> private async void NewPlayerJoined(PlayerInfoReceivedEventArguments args) => await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync( CoreDispatcherPriority.Normal, () => { this.pnlOtherPlayers.Visibility = Visibility.Visible; var otherPlayerNumber = 0; this.lblOtherPlayerNames.Text = string.Join(Environment.NewLine, MultiPlayerData.OtherPlayers.Values .Select(x => (++otherPlayerNumber).ToString(CultureInfo.InvariantCulture) + ". " + x.NickName).ToArray()); });
/// <summary> /// PlayerReadyInfoRecieved. /// </summary> /// <param name="args">PlayerInfoReceivedEventArguments.</param> private async void PlayerReadyInfoRecieved(PlayerInfoReceivedEventArguments args) => await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync( CoreDispatcherPriority.Normal, () => { var otherPlayerNumber = 0; this.lblOtherPlayerNames.Text = string.Join( Environment.NewLine, MultiPlayerData.OtherPlayers.Values.Select(x => (++otherPlayerNumber).ToString(CultureInfo.InvariantCulture) + ". " + x.NickName + (x.ReadyToStart ? " - Ready" : string.Empty)) .ToArray()); if (MultiPlayerData.OtherPlayers.Values.All(x => x.ReadyToStart)) { this.pnlAllPlayersAreReady.Visibility = Visibility.Visible; this.NextButton.IsEnabled = true; } });
/// <summary> /// PlayerInstrumentInfoRecieved. /// </summary> /// <param name="args">PlayerInfoReceivedEventArguments.</param> private async void PlayerInstrumentInfoRecieved(PlayerInfoReceivedEventArguments args) => await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync( CoreDispatcherPriority.Normal, this.ShowPlayersInstrumentInfo);