public void RenderTopPlayedChampions(ChampionStatInfo[] TopChampions) { ViewAggregatedStatsButton.IsEnabled = false; TopChampionsListView.Items.Clear(); if (!TopChampions.Any()) { return; } TopChampionsLabel.Content = "Top Champions (" + TopChampions[0].TotalGamesPlayed + " Ranked Games)"; foreach (ChampionStatInfo info in TopChampions) { ViewAggregatedStatsButton.IsEnabled = true; if (!(Math.Abs(info.ChampionId) > 0)) { continue; } champions Champion = champions.GetChampion(Convert.ToInt32(info.ChampionId)); var player = new ChatPlayer { LevelLabel = { Visibility = Visibility.Hidden }, PlayerName = { Content = Champion.displayName }, PlayerStatus = { Content = info.TotalGamesPlayed + " games played" }, ProfileImage = { Source = champions.GetChampion(Champion.id).icon }, Background = new SolidColorBrush(Color.FromArgb(102, 80, 80, 80)), Height = 51.5, Width = 278 }; TopChampionsListView.Items.Add(player); } }
private void player_MouseRightButtonDown(object sender, MouseButtonEventArgs e) { ChatPlayer item = (ChatPlayer)sender; ChatPlayerItem playerItem = (ChatPlayerItem)item.Tag; LastPlayerItem = playerItem; }
private void ChatListView_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (ChatListView.SelectedIndex != -1) { ChatPlayer player = (ChatPlayer)ChatListView.SelectedItem; ChatListView.SelectedIndex = -1; ChatPlayerItem playerItem = (ChatPlayerItem)player.Tag; LastPlayerItem = playerItem; foreach (object x in Client.ChatListView.Items) { if (x.GetType() == typeof(NotificationChatPlayer)) { if ((string)(x as NotificationChatPlayer).PlayerLabelName.Content == playerItem.Username) { return; } } } NotificationChatPlayer ChatPlayer = new NotificationChatPlayer(); ChatPlayer.Tag = playerItem; ChatPlayer.PlayerName = playerItem.Username; ChatPlayer.Margin = new Thickness(1, 0, 1, 0); ChatPlayer.PlayerLabelName.Content = playerItem.Username; Client.ChatListView.Items.Add(ChatPlayer); } }
private void UpdateChat(object sender, System.Timers.ElapsedEventArgs e) { Dispatcher.BeginInvoke(DispatcherPriority.Input, new ThreadStart(() => { AvailablePlayerListView.Items.Clear(); InvitedPlayerListView.Items.Clear(); foreach (KeyValuePair <string, ChatPlayerItem> ChatPlayerPair in Client.AllPlayers.ToArray()) { if (ChatPlayerPair.Value.Level != 0) { ChatPlayer player = new ChatPlayer(); player.Width = 250; player.Tag = ChatPlayerPair.Value; player.DataContext = ChatPlayerPair.Value; ChatPlayerItem playerItem = (ChatPlayerItem)player.Tag; player.PlayerName.Content = playerItem.Username; player.PlayerStatus.Content = playerItem.Status; player.PlayerId.Content = playerItem.Id; player.LevelLabel.Content = ChatPlayerPair.Value.Level; var uriSource = Path.Combine(Client.ExecutingDirectory, "Assets", "profileicon", ChatPlayerPair.Value.ProfileIcon + ".png"); player.ProfileImage.Source = Client.GetImage(uriSource); //Show available players if (ChatPlayerPair.Value.GameStatus != "outOfGame") { continue; } bool ShouldBreak = false; foreach (var x in Client.InviteListView.Items) { InvitePlayer invitePlayer = x as InvitePlayer; if ((string)invitePlayer.PlayerLabel.Content == ChatPlayerPair.Value.Username) { if ((string)invitePlayer.StatusLabel.Content == "Accepted") { ShouldBreak = true; } } } if (ShouldBreak) { continue; } if (invitedPlayers.Contains(ChatPlayerPair.Value.Id)) { InvitedPlayerListView.Items.Add(player); } else { AvailablePlayerListView.Items.Add(player); } } } })); }
private void GotStats(AggregatedStats stats) { Dispatcher.BeginInvoke(DispatcherPriority.Input, new ThreadStart(() => { SelectedAggregatedStats = stats; ViewAggregatedStatsButton.IsEnabled = false; TopChampionsListView.Items.Clear(); List <AggregatedChampion> ChampionStats = new List <AggregatedChampion>(); int i = 0; if (SelectedAggregatedStats.LifetimeStatistics != null) { if (SelectedAggregatedStats.LifetimeStatistics.Count() > 0) { foreach (AggregatedStat stat in SelectedAggregatedStats.LifetimeStatistics) { AggregatedChampion Champion = null; Champion = ChampionStats.Find(x => x.ChampionId == stat.ChampionId); if (Champion == null) { Champion = new AggregatedChampion(); Champion.ChampionId = stat.ChampionId; ChampionStats.Add(Champion); } var type = typeof(AggregatedChampion); string fieldName = Client.TitleCaseString(stat.StatType.Replace('_', ' ')).Replace(" ", ""); var f = type.GetField(fieldName); f.SetValue(Champion, stat.Value); } ChampionStats.Sort((x, y) => y.TotalSessionsPlayed.CompareTo(x.TotalSessionsPlayed)); foreach (AggregatedChampion info in ChampionStats) { if (i++ > 6) { break; } ViewAggregatedStatsButton.IsEnabled = true; if (info.ChampionId != 0.0) { ChatPlayer player = new ChatPlayer(); champions Champion = champions.GetChampion(Convert.ToInt32(info.ChampionId)); player.LevelLabel.Visibility = System.Windows.Visibility.Hidden; player.PlayerName.Content = Champion.displayName; player.PlayerStatus.Content = info.TotalSessionsPlayed + " games played"; player.ProfileImage.Source = champions.GetChampion(Champion.id).icon; TopChampionsListView.Items.Add(player); } } } } })); }
private void AvailablePlayerListView_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (AvailablePlayerListView.SelectedIndex != -1) { ChatPlayer player = (ChatPlayer)AvailablePlayerListView.SelectedItem; AvailablePlayerListView.SelectedIndex = -1; ChatPlayerItem playerItem = (ChatPlayerItem)player.Tag; invitedPlayers.Add(playerItem.Id); UpdateChat(null, null); } }
private void InvitedPlayerListView_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (InvitedPlayerListView.SelectedIndex != -1) { ChatPlayer player = (ChatPlayer)InvitedPlayerListView.SelectedItem; InvitedPlayerListView.SelectedIndex = -1; ChatPlayerItem playerItem = (ChatPlayerItem)player.Tag; player.PlayerName.Content = playerItem.Username; invitedPlayers.Remove(playerItem.Id); UpdateChat(null, null); } }
void PlayersListView_MouseDoubleClick(object sender, MouseButtonEventArgs e) { if (selection.AddedItems.Count > 0) { ChatPlayer player = (ChatPlayer)selection.AddedItems[0]; ((ListView)e.Source).SelectedIndex = -1; ChatPlayerItem playerItem = (ChatPlayerItem)player.Tag; foreach (NotificationChatPlayer x in Client.ChatListView.Items) { if ((string)x.PlayerLabelName.Content == playerItem.Username) { return; } } NotificationChatPlayer ChatPlayer = new NotificationChatPlayer(); ChatPlayer.Tag = playerItem; ChatPlayer.PlayerName = playerItem.Username; ChatPlayer.Margin = new Thickness(1, 0, 1, 0); ChatPlayer.PlayerLabelName.Content = playerItem.Username; Client.ChatListView.Items.Add(ChatPlayer); } }
//私聊,目前只支持在线发送 public void CSPrivateChat(IMessage data, int player_id, int addition) { CSPrivateChat protocol = data as CSPrivateChat; ChatPlayer player = this.GetPlayer(player_id); ChatPlayer target_player = this.GetPlayer(protocol.PlayerId); if (player == null || target_player == null) { return; } ChatData chat_data = new ChatData(); chat_data.ChatPlayer = player; chat_data.Content = protocol.Content; chat_data.Time = Global.GetCurTime(); SCPrivateChat msg = new SCPrivateChat(); msg.Data = chat_data; Server.GetInstance().GetSocket().SendToClient(msg, target_player.Id); }
public void RenderTopPlayedChampions(ChampionStatInfo[] TopChampions) { ViewAggregatedStatsButton.IsEnabled = false; TopChampionsListView.Items.Clear(); if (TopChampions.Count() > 0) { TopChampionsLabel.Content = "Top Champions (" + TopChampions[0].TotalGamesPlayed + " Ranked Games)"; foreach (ChampionStatInfo info in TopChampions) { ViewAggregatedStatsButton.IsEnabled = true; if (info.ChampionId != 0.0) { ChatPlayer player = new ChatPlayer(); champions Champion = champions.GetChampion(Convert.ToInt32(info.ChampionId)); player.LevelLabel.Visibility = System.Windows.Visibility.Hidden; player.PlayerName.Content = Champion.displayName; player.PlayerStatus.Content = info.TotalGamesPlayed + " games played"; player.ProfileImage.Source = champions.GetChampion(Champion.id).icon; TopChampionsListView.Items.Add(player); } } } }
private void ChatListView_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (e.AddedItems.Count > 0) { ChatPlayer player = (ChatPlayer)e.AddedItems[0]; ((ListView)e.Source).SelectedIndex = -1; ChatPlayerItem playerItem = (ChatPlayerItem)player.Tag; LastPlayerItem = playerItem; foreach (NotificationChatPlayer x in Client.ChatListView.Items) { if ((string)x.PlayerLabelName.Content == playerItem.Username) { return; } } NotificationChatPlayer ChatPlayer = new NotificationChatPlayer(); ChatPlayer.Tag = playerItem; ChatPlayer.PlayerName = playerItem.Username; ChatPlayer.Margin = new Thickness(1, 0, 1, 0); ChatPlayer.PlayerLabelName.Content = playerItem.Username; Client.ChatListView.Items.Add(ChatPlayer); } }
private void GotStats(AggregatedStats stats) { Dispatcher.BeginInvoke(DispatcherPriority.Input, new ThreadStart(() => { _selectedAggregatedStats = stats; ViewAggregatedStatsButton.IsEnabled = false; TopChampionsListView.Items.Clear(); var championStats = new List <AggregatedChampion>(); var i = 0; if (_selectedAggregatedStats.LifetimeStatistics == null) { return; } if (!_selectedAggregatedStats.LifetimeStatistics.Any()) { return; } foreach (var stat in _selectedAggregatedStats.LifetimeStatistics) { var champion = championStats.Find(x => Math.Abs(x.ChampionId - stat.ChampionId) < .00001); if (champion == null) { champion = new AggregatedChampion { ChampionId = stat.ChampionId }; championStats.Add(champion); } var type = typeof(AggregatedChampion); var fieldName = Client.TitleCaseString(stat.StatType.Replace('_', ' ')).Replace(" ", string.Empty); var f = type.GetField(fieldName); f.SetValue(champion, stat.Value); } championStats.Sort((x, y) => y.TotalSessionsPlayed.CompareTo(x.TotalSessionsPlayed)); foreach (var info in championStats.TakeWhile(info => i++ <= 6)) { ViewAggregatedStatsButton.IsEnabled = true; if (!(Math.Abs(info.ChampionId) > 0)) { continue; } var champion = champions.GetChampion(Convert.ToInt32(info.ChampionId)); var player = new ChatPlayer { LevelLabel = { Visibility = Visibility.Hidden }, PlayerName = { Content = champion.displayName }, PlayerStatus = { Content = info.TotalSessionsPlayed + " games played" }, ProfileImage = { Source = champions.GetChampion(champion.id).icon }, Background = new SolidColorBrush(Color.FromArgb(102, 80, 80, 80)), Width = 270 }; TopChampionsListView.Items.Add(player); } })); }
private void UpdateChat(object sender, ElapsedEventArgs e) { Dispatcher.BeginInvoke(DispatcherPriority.Input, new ThreadStart(() => { if (Client.CurrentStatus != StatusBox.Text && StatusBox.Text != "Set your status message") { Client.CurrentStatus = StatusBox.Text; } else if (StatusBox.Text == "Set your status message") { Client.CurrentStatus = "Online"; } Settings.Default.StatusMsg = StatusBox.Text; Settings.Default.Save(); if (!Client.UpdatePlayers) { return; } Client.UpdatePlayers = false; ChatListView.Children.Clear(); foreach (Group g in Client.Groups) { var playersListView = new ListView { HorizontalAlignment = HorizontalAlignment.Stretch, VerticalContentAlignment = VerticalAlignment.Stretch }; playersListView.SetValue(ScrollViewer.HorizontalScrollBarVisibilityProperty, ScrollBarVisibility.Disabled); playersListView.Foreground = Brushes.White; playersListView.Background = null; playersListView.BorderBrush = null; playersListView.MouseDoubleClick += PlayersListView_MouseDoubleClick; playersListView.SelectionChanged += ChatListView_SelectionChanged; playersListView.PreviewMouseWheel += PlayersListView_PreviewMouseWheel; int players = 0; foreach (var chatPlayerPair in Client.AllPlayers.ToArray().OrderBy(u => u.Value.Username)) { var player = new ChatPlayer { Tag = chatPlayerPair.Value, DataContext = chatPlayerPair.Value, ContextMenu = (ContextMenu)Resources["PlayerChatMenu"], PlayerName = { Content = chatPlayerPair.Value.Username }, LevelLabel = { Content = chatPlayerPair.Value.Level } }; var bc = new BrushConverter(); var brush = (Brush)bc.ConvertFrom("#FFFFFFFF"); player.PlayerStatus.Content = chatPlayerPair.Value.Status; player.PlayerStatus.Foreground = brush; if (chatPlayerPair.Value.IsOnline && g.GroupName == chatPlayerPair.Value.Group) { player.Width = 250; bc = new BrushConverter(); brush = (Brush)bc.ConvertFrom("#FFFFFFFF"); player.PlayerStatus.Foreground = brush; string uriSource = Path.Combine(Client.ExecutingDirectory, "Assets", "profileicon", chatPlayerPair.Value.ProfileIcon + ".png"); player.ProfileImage.Source = Client.GetImage(uriSource); if (chatPlayerPair.Value.GameStatus != "outOfGame") { switch (chatPlayerPair.Value.GameStatus) { case "inGame": champions inGameChamp = champions.GetChampion(chatPlayerPair.Value.Champion); if (inGameChamp != null) { player.PlayerStatus.Content = "In Game as " + inGameChamp.displayName; } else { player.PlayerStatus.Content = "In Game"; } break; case "hostingPracticeGame": player.PlayerStatus.Content = "Creating Custom Game"; break; case "inQueue": player.PlayerStatus.Content = "In Queue"; break; case "spectating": player.PlayerStatus.Content = "Spectating"; break; case "championSelect": player.PlayerStatus.Content = "In Champion Select"; break; case "hostingRankedGame": player.PlayerStatus.Content = "Creating Ranked Game"; break; case "teamSelect": player.PlayerStatus.Content = "In Team Select"; break; case "hostingNormalGame": player.PlayerStatus.Content = "Creating Normal Game"; break; case "hostingCoopVsAIGame": player.PlayerStatus.Content = "Creating Co-op vs. AI Game"; break; case "inTeamBuilder": player.PlayerStatus.Content = "In Team Builder"; break; case "tutorial": player.PlayerStatus.Content = "In Tutorial"; break; } brush = (Brush)bc.ConvertFrom("#FFFFFF99"); player.PlayerStatus.Foreground = brush; } player.MouseRightButtonDown += player_MouseRightButtonDown; player.MouseMove += ChatPlayerMouseOver; player.MouseLeave += player_MouseLeave; playersListView.Items.Add(player); players++; } else if (!chatPlayerPair.Value.IsOnline && g.GroupName == "Offline") { player.Width = 250; player.Height = 30; player.PlayerName.Margin = new Thickness(5, 2.5, 0, 0); player.LevelLabel.Visibility = Visibility.Hidden; player.ProfileImage.Visibility = Visibility.Hidden; playersListView.Items.Add(player); players++; } } var groupControl = new ChatGroup { Width = 230, PlayersLabel = { Content = players }, NameLabel = { Content = g.GroupName } }; groupControl.GroupListView.Children.Add(playersListView); if (g.IsOpen) { groupControl.ExpandLabel.Content = "-"; groupControl.GroupListView.Visibility = Visibility.Visible; } if (!String.IsNullOrEmpty(g.GroupName)) { ChatListView.Children.Add(groupControl); } else { Client.Log("Removed a group"); } } if (ChatListView.Children.Count > 0 && ChatListView.Children[0] is ChatGroup) { (ChatListView.Children[0] as ChatGroup).GroupGrid_MouseDown(null, null); } })); }
public void SetChatPlayer(ChatPlayer p, string name) { player = p; tmpName = name; }
private void ChatPlayerMouseOver(object sender, MouseEventArgs e) { ChatPlayer item = (ChatPlayer)sender; ChatPlayerItem playerItem = (ChatPlayerItem)item.Tag; if (PlayerItem == null) { PlayerItem = new LargeChatPlayer(); Client.MainGrid.Children.Add(PlayerItem); Panel.SetZIndex(PlayerItem, 5); PlayerItem.Tag = playerItem; PlayerItem.PlayerName.Content = playerItem.Username; PlayerItem.PlayerLeague.Content = playerItem.LeagueTier + " " + playerItem.LeagueDivision; PlayerItem.PlayerStatus.Text = playerItem.Status; if (playerItem.RankedWins == 0) { PlayerItem.PlayerWins.Content = playerItem.Wins + " Normal Wins"; } else { PlayerItem.PlayerWins.Content = playerItem.RankedWins + " Ranked Wins"; } PlayerItem.LevelLabel.Content = playerItem.Level; PlayerItem.UsingLegendary.Visibility = playerItem.UsingLegendary ? System.Windows.Visibility.Visible : System.Windows.Visibility.Hidden; //PlayerItem.Dev.Visibility = playerItem.IsLegendaryDev ? System.Windows.Visibility.Visible : System.Windows.Visibility.Hidden; var uriSource = Path.Combine(Client.ExecutingDirectory, "Assets", "profileicon", playerItem.ProfileIcon + ".png"); PlayerItem.ProfileImage.Source = Client.GetImage(uriSource); if (playerItem.Status != null) { } else if (playerItem.Status == null) { Client.hidelegendaryaddition = true; } else { PlayerItem.PlayerStatus.Text = ""; } if (playerItem.GameStatus != "outOfGame") { TimeSpan elapsed = new TimeSpan(); if (playerItem.Timestamp != 0) { elapsed = DateTime.Now.Subtract(Client.JavaTimeStampToDateTime(playerItem.Timestamp)); } switch (playerItem.GameStatus) { case "inGame": champions InGameChamp = champions.GetChampion(playerItem.Champion); if (InGameChamp != null) { PlayerItem.InGameStatus.Text = "In Game" + Environment.NewLine + "Playing as " + InGameChamp.displayName + Environment.NewLine + "For " + string.Format("{0} Minutes and {1} Seconds", elapsed.Minutes, elapsed.Seconds); } else { PlayerItem.InGameStatus.Text = "In Game"; } break; case "hostingPracticeGame": PlayerItem.InGameStatus.Text = "Creating Custom Game"; break; case "inQueue": PlayerItem.InGameStatus.Text = "In Queue" + Environment.NewLine + "For " + string.Format("{0} Minutes and {1} Seconds", elapsed.Minutes, elapsed.Seconds); break; case "spectating": PlayerItem.InGameStatus.Text = "Spectating"; break; case "championSelect": PlayerItem.InGameStatus.Text = "In Champion Select" + Environment.NewLine + "For " + string.Format("{0} Minutes and {1} Seconds", elapsed.Minutes, elapsed.Seconds); break; case "hostingRankedGame": PlayerItem.InGameStatus.Text = "Creating Ranked Game"; break; case "teamSelect": PlayerItem.InGameStatus.Text = "In Team Select"; break; case "hostingNormalGame": PlayerItem.InGameStatus.Text = "Creating Normal Game"; break; case "hostingCoopVsAIGame": PlayerItem.InGameStatus.Text = "Creating Co-op vs. AI Game"; break; case "inTeamBuilder": PlayerItem.InGameStatus.Text = "In Team Builder"; break; case "tutorial": PlayerItem.InGameStatus.Text = "In Tutorial"; break; } PlayerItem.InGameStatus.Visibility = System.Windows.Visibility.Visible; } PlayerItem.Width = 250; PlayerItem.HorizontalAlignment = System.Windows.HorizontalAlignment.Right; PlayerItem.VerticalAlignment = System.Windows.VerticalAlignment.Top; } Point MouseLocation = e.GetPosition(Client.MainGrid); double YMargin = MouseLocation.Y; if (YMargin + 195 > Client.MainGrid.ActualHeight) { YMargin = Client.MainGrid.ActualHeight - 195; } PlayerItem.Margin = new Thickness(0, YMargin, 250, 0); }
private void UpdateChat(object sender, System.Timers.ElapsedEventArgs e) { Dispatcher.BeginInvoke(DispatcherPriority.Input, new ThreadStart(() => { if (Client.CurrentStatus != StatusBox.Text && StatusBox.Text != "Set your status message") { Client.CurrentStatus = StatusBox.Text; } else if (StatusBox.Text == "Set your status message") { Client.CurrentStatus = "Online"; } Properties.Settings.Default.StatusMsg = StatusBox.Text; Properties.Settings.Default.Save(); if (Client.UpdatePlayers) { Client.UpdatePlayers = false; ChatListView.Children.Clear(); foreach (Group g in Client.Groups) { ListView PlayersListView = new ListView(); PlayersListView.HorizontalAlignment = HorizontalAlignment.Stretch; PlayersListView.VerticalContentAlignment = VerticalAlignment.Stretch; PlayersListView.SetValue(ScrollViewer.HorizontalScrollBarVisibilityProperty, ScrollBarVisibility.Disabled); PlayersListView.Foreground = Brushes.White; PlayersListView.Background = null; PlayersListView.BorderBrush = null; PlayersListView.SelectionChanged += ChatListView_SelectionChanged; PlayersListView.PreviewMouseWheel += PlayersListView_PreviewMouseWheel; int Players = 0; foreach (KeyValuePair <string, ChatPlayerItem> ChatPlayerPair in Client.AllPlayers.ToArray()) { ChatPlayer player = new ChatPlayer(); player.Tag = ChatPlayerPair.Value; player.DataContext = ChatPlayerPair.Value; player.ContextMenu = (ContextMenu)Resources["PlayerChatMenu"]; if (ChatPlayerPair.Value.IsOnline && g.GroupName == ChatPlayerPair.Value.Group) { player.Width = 250; BrushConverter bc = new BrushConverter(); Brush brush = (Brush)bc.ConvertFrom("#FFFFFFFF"); player.PlayerStatus.Foreground = brush; var uriSource = Path.Combine(Client.ExecutingDirectory, "Assets", "profileicon", ChatPlayerPair.Value.ProfileIcon + ".png"); player.ProfileImage.Source = Client.GetImage(uriSource); if (ChatPlayerPair.Value.GameStatus != "outOfGame") { switch (ChatPlayerPair.Value.GameStatus) { case "inGame": champions InGameChamp = champions.GetChampion(ChatPlayerPair.Value.Champion); if (InGameChamp != null) { player.PlayerStatus.Content = "In Game as " + InGameChamp.displayName; } else { player.PlayerStatus.Content = "In Game"; } break; case "hostingPracticeGame": player.PlayerStatus.Content = "Creating Custom Game"; break; case "inQueue": player.PlayerStatus.Content = "In Queue"; break; case "spectating": player.PlayerStatus.Content = "Spectating"; break; case "championSelect": player.PlayerStatus.Content = "In Champion Select"; break; } brush = (Brush)bc.ConvertFrom("#FFFFFF99"); player.PlayerStatus.Foreground = brush; } player.MouseMove += ChatPlayerMouseOver; player.MouseLeave += player_MouseLeave; PlayersListView.Items.Add(player); Players++; } else if (!ChatPlayerPair.Value.IsOnline && g.GroupName == "Offline") { player.Width = 250; player.Height = 30; player.PlayerName.Margin = new Thickness(5, 2.5, 0, 0); player.LevelLabel.Visibility = System.Windows.Visibility.Hidden; player.ProfileImage.Visibility = System.Windows.Visibility.Hidden; PlayersListView.Items.Add(player); Players++; } } ChatGroup GroupControl = new ChatGroup(); GroupControl.Width = 230; GroupControl.PlayersLabel.Content = Players; GroupControl.NameLabel.Content = g.GroupName; GroupControl.GroupListView.Children.Add(PlayersListView); if (g.IsOpen) { GroupControl.ExpandLabel.Content = "-"; GroupControl.GroupListView.Visibility = System.Windows.Visibility.Visible; } ChatListView.Children.Add(GroupControl); } } })); }
//玩家上线 public void AddPlayer(ChatPlayer player) { this.player_map[player.Id] = player; }
private void UpdateChat(object sender, ElapsedEventArgs e) { Dispatcher.BeginInvoke(DispatcherPriority.Input, new ThreadStart(() => { AvailablePlayerListView.Items.Clear(); InvitedPlayerListView.Items.Clear(); foreach (var chatPlayerPair in Client.AllPlayers.ToArray()) { if (chatPlayerPair.Value.Level == 0) { continue; } var player = new ChatPlayer { Width = 250, Tag = chatPlayerPair.Value, DataContext = chatPlayerPair.Value }; var playerItem = (ChatPlayerItem)player.Tag; player.PlayerName.Content = playerItem.Username; player.PlayerStatus.Content = playerItem.Status; player.PlayerId.Content = playerItem.Id; player.LevelLabel.Content = chatPlayerPair.Value.Level; string uriSource = Path.Combine(Client.ExecutingDirectory, "Assets", "profileicon", chatPlayerPair.Value.ProfileIcon + ".png"); player.ProfileImage.Source = Client.GetImage(uriSource); //Show available players if (chatPlayerPair.Value.GameStatus != "outOfGame") { continue; } bool shouldBreak = false; KeyValuePair <string, ChatPlayerItem> pair = chatPlayerPair; foreach (InvitePlayer invitePlayer in from object x in Client.InviteListView.Items select x as InvitePlayer into invitePlayer where (string)invitePlayer.PlayerLabel.Content == pair.Value.Username where (string)invitePlayer.StatusLabel.Content == "Accepted" select invitePlayer) { shouldBreak = true; } if (shouldBreak) { continue; } if (invitedPlayers.Contains(chatPlayerPair.Value.Id)) { InvitedPlayerListView.Items.Add(player); } else { AvailablePlayerListView.Items.Add(player); } } })); }
private void UpdateChat(object sender, System.Timers.ElapsedEventArgs e) { Dispatcher.BeginInvoke(DispatcherPriority.Input, new ThreadStart(() => { if (Client.CurrentStatus != StatusBox.Text && StatusBox.Text != "Set your status message") { Client.CurrentStatus = StatusBox.Text; } else if (StatusBox.Text == "Set your status message") { Client.CurrentStatus = "Online"; } Properties.Settings.Default.StatusMsg = StatusBox.Text; Properties.Settings.Default.Save(); if (Client.UpdatePlayers) { Client.UpdatePlayers = false; ChatListView.Items.Clear(); foreach (KeyValuePair <string, ChatPlayerItem> ChatPlayerPair in Client.AllPlayers.ToArray()) { if (ChatPlayerPair.Value.Level != 0) { ChatPlayer player = new ChatPlayer(); player.Width = 250; player.Tag = ChatPlayerPair.Value; player.PlayerName.Content = ChatPlayerPair.Value.Username; player.LevelLabel.Content = ChatPlayerPair.Value.Level; BrushConverter bc = new BrushConverter(); Brush brush = (Brush)bc.ConvertFrom("#FFFFFFFF"); player.PlayerStatus.Content = ChatPlayerPair.Value.Status; player.PlayerStatus.Foreground = brush; var uriSource = new Uri(Path.Combine(Client.ExecutingDirectory, "Assets", "profileicon", ChatPlayerPair.Value.ProfileIcon + ".png"), UriKind.RelativeOrAbsolute); player.ProfileImage.Source = new BitmapImage(uriSource); if (ChatPlayerPair.Value.GameStatus != "outOfGame") { switch (ChatPlayerPair.Value.GameStatus) { case "inGame": champions InGameChamp = champions.GetChampion(ChatPlayerPair.Value.Champion); if (InGameChamp != null) { player.PlayerStatus.Content = "In Game as " + InGameChamp.displayName; } else { player.PlayerStatus.Content = "In Game"; } break; case "hostingPracticeGame": player.PlayerStatus.Content = "Creating Custom Game"; break; case "inQueue": player.PlayerStatus.Content = "In Queue"; break; case "spectating": player.PlayerStatus.Content = "Spectating"; break; case "championSelect": player.PlayerStatus.Content = "In Champion Select"; break; } brush = (Brush)bc.ConvertFrom("#FFFFFF99"); player.PlayerStatus.Foreground = brush; } player.ContextMenu = (ContextMenu)Resources["PlayerChatMenu"]; player.MouseMove += ChatPlayerMouseOver; player.MouseLeave += player_MouseLeave; ChatListView.Items.Add(player); } } } })); }