private void UpdateReplays() { GamePanel.Children.Clear(); var dir = new DirectoryInfo(Path.Combine(Client.ExecutingDirectory, "cabinet")); IOrderedEnumerable<DirectoryInfo> directories = dir.EnumerateDirectories() .OrderBy(d => d.CreationTime); string[] Replays = Directory.GetDirectories(Path.Combine(Client.ExecutingDirectory, "cabinet")); foreach (DirectoryInfo di in directories) { string d = di.Name; if (!File.Exists(Path.Combine(Client.ExecutingDirectory, "cabinet", d, "token")) || !File.Exists(Path.Combine(Client.ExecutingDirectory, "cabinet", d, "key")) || !File.Exists(Path.Combine(Client.ExecutingDirectory, "cabinet", d, "endOfGameStats"))) continue; byte[] base64Stats = Convert.FromBase64String( File.ReadAllText(Path.Combine(Client.ExecutingDirectory, "cabinet", d, "endOfGameStats"))); var statsReader = new AmfReader(new MemoryStream(base64Stats), context); var stats = (EndOfReplayGameStats)statsReader.ReadAmf3Item(); var item = new ReplayItem(); //Use unoccupied variable stats.Difficulty = d; item.Tag = stats; item.GameId.Text = File.Exists(Path.Combine(Client.ExecutingDirectory, "cabinet", d, "name")) ? File.ReadAllText(Path.Combine(Client.ExecutingDirectory, "cabinet", d, "name")) : d; item.GameId.Tag = d; item.GameType.Content = stats.GameMode.ToLower(); item.GameDate.Content = di.CreationTime.ToShortTimeString() + " " + di.CreationTime.ToShortDateString(); double seconds = stats.GameLength % 60; double minutes = stats.GameLength / 60; item.GameTime.Content = string.Format("{0:0}:{1:00}", minutes, seconds); item.Margin = new Thickness(0, 5, 0, 0); foreach ( SmallChampionItem image in stats.TeamPlayerParticipantStats.Select(summary => new SmallChampionItem { Width = 38, Height = 38, ChampionImage = { Source = Client.GetImage(Path.Combine(Client.ExecutingDirectory, "Assets", "champion", summary.SkinName + ".png")) } })) item.TeamOnePanel.Children.Add(image); foreach ( SmallChampionItem image in stats.OtherTeamPlayerParticipantStats.Select(summary => new SmallChampionItem { Width = 38, Height = 38, ChampionImage = { Source = Client.GetImage(Path.Combine(Client.ExecutingDirectory, "Assets", "champion", summary.SkinName + ".png")) } })) item.TeamTwoPanel.Children.Add(image); item.MouseDown += item_MouseDown; item.GameId.MouseDoubleClick += GameId_MouseDoubleClick; item.GameId.MouseLeave += GameId_MouseLeave; item.KeyDown += item_KeyDown; //Insert on top GamePanel.Children.Insert(0, item); } }
void UpdateReplays() { GamePanel.Children.Clear(); var dir = new DirectoryInfo("cabinet"); var directories = dir.EnumerateDirectories() .OrderBy(d => d.CreationTime); string[] Replays = Directory.GetDirectories("cabinet"); foreach (DirectoryInfo di in directories) { string d = di.Name; if (!File.Exists(Path.Combine("cabinet", d, "token")) || !File.Exists(Path.Combine("cabinet", d, "key")) || !File.Exists(Path.Combine("cabinet", d, "endOfGameStats"))) continue; byte[] Base64Stats = Convert.FromBase64String(File.ReadAllText(Path.Combine("cabinet", d, "endOfGameStats"))); AmfReader statsReader = new AmfReader(new MemoryStream(Base64Stats), context); EndOfGameStats stats = (EndOfGameStats)statsReader.ReadAmf3Item(); ReplayItem item = new ReplayItem(); //Use unoccupied variable stats.Difficulty = d; item.Tag = stats; item.GameId.Content = d; item.GameType.Content = stats.GameMode.ToLower(); item.GameDate.Content = di.CreationTime.ToShortTimeString() + " " + di.CreationTime.ToShortDateString(); double seconds = stats.GameLength % 60; double minutes = stats.GameLength / 60; item.GameTime.Content = string.Format("{0:0}:{1:00}", minutes, seconds); item.Margin = new Thickness(0, 5, 0, 0); foreach (PlayerParticipantStatsSummary summary in stats.TeamPlayerParticipantStats) { SmallChampionItem image = new SmallChampionItem(); image.Width = 38; image.Height = 38; Uri UriSource = new Uri("/LegendaryClient;component/Assets/champion/" + summary.SkinName + ".png", UriKind.RelativeOrAbsolute); image.ChampionImage.Source = new BitmapImage(UriSource); item.TeamOnePanel.Children.Add(image); } foreach (PlayerParticipantStatsSummary summary in stats.OtherTeamPlayerParticipantStats) { SmallChampionItem image = new SmallChampionItem(); image.Width = 38; image.Height = 38; Uri UriSource = new Uri("/LegendaryClient;component/Assets/champion/" + summary.SkinName + ".png", UriKind.RelativeOrAbsolute); image.ChampionImage.Source = new BitmapImage(UriSource); item.TeamTwoPanel.Children.Add(image); } item.MouseDown += item_MouseDown; //Insert on top GamePanel.Children.Insert(0, item); } }