protected void OnPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { try { if (e.PropertyName == "GameSelectedData" || e.PropertyName == "PluginSettings") { this.Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new ThreadStart(delegate { long ElapsedSeconds = PluginDatabase.GameSelectedData.GetLastSessionActivity().ElapsedSeconds; LongToTimePlayedConverter converter = new LongToTimePlayedConverter(); string PlaytimeString = (string)converter.Convert(ElapsedSeconds, null, null, CultureInfo.CurrentCulture); PART_GaButtonPlaytime.Content = PlaytimeString; })); } else { this.Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new ThreadStart(delegate { long ElapsedSeconds = 0; LongToTimePlayedConverter converter = new LongToTimePlayedConverter(); string PlaytimeString = (string)converter.Convert(ElapsedSeconds, null, null, CultureInfo.CurrentCulture); PART_GaButtonPlaytime.Content = PlaytimeString; })); } } catch (Exception ex) { Common.LogError(ex, "GameActivity"); } }
private void SetStats() { if (PluginDatabase.Database.UserHltbData != null && PluginDatabase.Database.UserHltbData.TitlesList != null) { List <TitleList> titleLists = PluginDatabase.Database.UserHltbData.TitlesList; PART_CompletionsCount.Content = titleLists.FindAll(x => x.Completion != null).Count; long TimeSinglePlayer = 0; long TimeCoOp = 0; long TimeVs = 0; foreach (TitleList titleList in titleLists) { if (titleList.HltbUserData.Completionist != 0) { TimeSinglePlayer += titleList.HltbUserData.Completionist; } else if (titleList.HltbUserData.MainExtra != 0) { TimeSinglePlayer += titleList.HltbUserData.MainExtra; } else if (titleList.HltbUserData.MainStory != 0) { TimeSinglePlayer += titleList.HltbUserData.MainStory; } TimeCoOp += titleList.HltbUserData.CoOp; TimeCoOp += titleList.HltbUserData.Vs; } LongToTimePlayedConverter converter = new LongToTimePlayedConverter(); PART_TimeSinglePlayer.Content = (string)converter.Convert((long)TimeSinglePlayer, null, null, CultureInfo.CurrentCulture); PART_TimeCoOp.Content = (string)converter.Convert((long)TimeCoOp, null, null, CultureInfo.CurrentCulture); PART_TimeVs.Content = (string)converter.Convert((long)TimeVs, null, null, CultureInfo.CurrentCulture); } }
internal void SetData(string SourceID) { StatisticsClass stats; if (SourceID == "null") { stats = StatisticsDatabase.Statistics; SwitchDataGames.Visibility = Visibility.Visible; SwitchDataSources.Visibility = Visibility.Visible; } else { stats = StatisticsDatabase.Get(Guid.Parse(SourceID)); SwitchDataGames.Visibility = Visibility.Hidden; SwitchDataSources.Visibility = Visibility.Hidden; } // Reduce amount of genres stats.GameGenres = stats.GameGenres .Where(x => x.Count >= _settings.MinGenreCount) .OrderByDescending(x => x.Count) .TakeMax(_settings.MaxGenres).ToList(); long Total = 0; long TotalInstalled = 0; long TotalNotLaunching = 0; long TotalFavorite = 0; string TotalPlaytime = "0h 00min"; long NotPlayed = 0; long Played = 0; long Beaten = 0; long Completed = 0; long Playing = 0; long Abandoned = 0; long OnHold = 0; long PlanToPlay = 0; SeriesCollection StatsGraphicsPlaytimeSeries = new SeriesCollection(); string[] StatsGraphicsPlaytimeLabels = new string[0]; ChartValues <CustomerForTime> SourcePlaytimeSeries = new ChartValues <CustomerForTime>(); SeriesCollection SourceGraphicsGenresSeries = new SeriesCollection(); if (stats != null) { // Information Total = stats.Total; TotalInstalled = stats.GameIsInstalled.Count; TotalNotLaunching = stats.GameIsNotLaunching.Count; TotalFavorite = stats.GameFavorite.Count; LongToTimePlayedConverter converter = new LongToTimePlayedConverter(); TotalPlaytime = (string)converter.Convert(stats.Playtime, null, null, CultureInfo.CurrentCulture); // Game completation List <Counter> GameCompletionStatus = stats.GameCompletionStatus; for (int i = 0; i < GameCompletionStatus.Count; i++) { if (GameCompletionStatus[i].Name == "" + CompletionStatus.NotPlayed) { NotPlayed = GameCompletionStatus[i].Count; } if (GameCompletionStatus[i].Name == "" + CompletionStatus.Played) { Played = GameCompletionStatus[i].Count; } if (GameCompletionStatus[i].Name == "" + CompletionStatus.Beaten) { Beaten = GameCompletionStatus[i].Count; } if (GameCompletionStatus[i].Name == "" + CompletionStatus.Completed) { Completed = GameCompletionStatus[i].Count; } if (GameCompletionStatus[i].Name == "" + CompletionStatus.Playing) { Playing = GameCompletionStatus[i].Count; } if (GameCompletionStatus[i].Name == "" + CompletionStatus.Abandoned) { Abandoned = GameCompletionStatus[i].Count; } if (GameCompletionStatus[i].Name == "" + CompletionStatus.OnHold) { OnHold = GameCompletionStatus[i].Count; } if (GameCompletionStatus[i].Name == "" + CompletionStatus.PlanToPlay) { PlanToPlay = GameCompletionStatus[i].Count; } } // Graphics playtime int counter = 0; List <dataTemp> temp = new List <dataTemp>(); if (SourceID == "null") { ConcurrentDictionary <Guid, StatisticsClass> StatisticsSourceDatabase = StatisticsDatabase.StatisticsSourceDatabase; StatsGraphicsPlaytimeLabels = new string[StatisticsSourceDatabase.Count]; temp = new List <dataTemp>(); if (!(bool)SwitchDataGames.IsChecked) { foreach (var item in StatisticsSourceDatabase) { temp.Add(new dataTemp { Name = item.Value.Name, Count = item.Value.Playtime }); } temp.Sort((a, b) => a.Count.CompareTo(b.Count)); foreach (var item in temp) { SourcePlaytimeSeries.Add(new CustomerForTime { Name = item.Name, Values = item.Count }); StatsGraphicsPlaytimeLabels[counter] = item.Name; counter += 1; } } else { foreach (var itemAll in StatisticsSourceDatabase) { foreach (var item in itemAll.Value.GameSource) { temp.Add(new dataTemp { Name = item.Name, Count = item.Count }); } } temp.Sort((a, b) => b.Count.CompareTo(a.Count)); if (temp.Count > 10) { temp = temp.GetRange(0, 10); } temp.Reverse(); StatsGraphicsPlaytimeLabels = new string[10]; foreach (var item in temp) { if (counter < 10) { SourcePlaytimeSeries.Add(new CustomerForTime { Name = item.Name, Values = item.Count }); StatsGraphicsPlaytimeLabels[counter] = item.Name; counter += 1; } } } } else { List <Counter> StatisticsSourceDatabase = StatisticsDatabase.Get(Guid.Parse(SourceID)).GameSource; temp = new List <dataTemp>(); foreach (var item in StatisticsSourceDatabase) { temp.Add(new dataTemp { Name = item.Name, Count = item.Count }); } temp.Sort((a, b) => b.Count.CompareTo(a.Count)); if (temp.Count > 10) { temp = temp.GetRange(0, 10); } temp.Reverse(); StatsGraphicsPlaytimeLabels = new string[10]; foreach (var item in temp) { if (counter < 10) { SourcePlaytimeSeries.Add(new CustomerForTime { Name = item.Name, Values = item.Count }); StatsGraphicsPlaytimeLabels[counter] = item.Name; counter += 1; } } } StatsGraphicsPlaytimeSeries.Add(new RowSeries { Title = "Playtime", Values = SourcePlaytimeSeries }); //Graphics genres temp = new List <dataTemp>(); foreach (var item in stats.GameGenres) { temp.Add(new dataTemp { Name = item.Name, Count = item.Count }); } temp.Sort((a, b) => b.Count.CompareTo(a.Count)); foreach (var item in temp) { SourceGraphicsGenresSeries.Add(new PieSeries { Title = item.Name, Values = new ChartValues <CustomerForSingle> { new CustomerForSingle { Name = item.Name, Values = item.Count } }, DataLabels = true }); } } countTotalGames.Content = Total; countTotalInstalled.Content = TotalInstalled; countTotalNotLaunching.Content = TotalNotLaunching; countTotalFavorite.Content = TotalFavorite; countTotalPlaytime.Content = TotalPlaytime; countNotPlayed.Value = NotPlayed; countNotPlayed.Maximum = (stats == null) ? 1 : stats.Total; labelCountNotPlayed.Content = (stats == null) ? "" : (int)Math.Round((double)(100 * NotPlayed) / stats.Total) + "%"; countPlayed.Value = Played; countPlayed.Maximum = (stats == null) ? 1 : stats.Total; labelCountPlayed.Content = (stats == null) ? "" : (int)Math.Round((double)(100 * Played) / stats.Total) + "%"; countBeaten.Value = Beaten; countBeaten.Maximum = (stats == null) ? 1 : stats.Total; labelCountBeaten.Content = (stats == null) ? "" : (int)Math.Round((double)(100 * Beaten) / stats.Total) + "%"; countCompleted.Value = Completed; countCompleted.Maximum = (stats == null) ? 1 : stats.Total; labelCountCompleted.Content = (stats == null) ? "" : (int)Math.Round((double)(100 * Completed) / stats.Total) + "%"; countPlaying.Value = Playing; countPlaying.Maximum = (stats == null) ? 1 : stats.Total; labelCountPlaying.Content = (stats == null) ? "" : (int)Math.Round((double)(100 * Playing) / stats.Total) + "%"; countAbandoned.Value = Abandoned; countAbandoned.Maximum = (stats == null) ? 1 : stats.Total; labelCountAbandoned.Content = (stats == null) ? "" : (int)Math.Round((double)(100 * Abandoned) / stats.Total) + "%"; countOnHold.Value = OnHold; countOnHold.Maximum = (stats == null) ? 1 : stats.Total; labelCountOnHold.Content = (stats == null) ? "" : (int)Math.Round((double)(100 * OnHold) / stats.Total) + "%"; countPlanToPlay.Value = PlanToPlay; countPlanToPlay.Maximum = (stats == null) ? 1 : stats.Total; labelCountPlanToPlay.Content = (stats == null) ? "" : (int)Math.Round((double)(100 * PlanToPlay) / stats.Total) + "%"; //let create a mapper so LiveCharts know how to plot our CustomerViewModel class var customerVmMapper = Mappers.Xy <CustomerForTime>() .Y((value, index) => index) .X(value => value.Values); //lets save the mapper globally Charting.For <CustomerForTime>(customerVmMapper); //let create a mapper so LiveCharts know how to plot our CustomerViewModel class var customerVmMapperPie = Mappers.Xy <CustomerForSingle>() .X((value, index) => index) .Y(value => value.Values); //lets save the mapper globally Charting.For <CustomerForSingle>(customerVmMapperPie); StatsGraphicPlaytime.Series = StatsGraphicsPlaytimeSeries; StatsGraphicPlaytimeY.Labels = StatsGraphicsPlaytimeLabels; StatsGraphicGenres.Series = SourceGraphicsGenresSeries; }
public void GetActivityForGamesTimeGraphics(GameActivities gameActivities, int variateurTime = 0, int limit = 9) { Task.Run(() => { try { this.Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new ThreadStart(delegate { if (!gameActivities.HasData) { this.Visibility = Visibility.Collapsed; return; } else { this.Visibility = Visibility.Visible; } })); string[] listDate = new string[limit + 1]; ChartValues <CustomerForTime> series1 = new ChartValues <CustomerForTime>(); ChartValues <CustomerForTime> series2 = new ChartValues <CustomerForTime>(); ChartValues <CustomerForTime> series3 = new ChartValues <CustomerForTime>(); ChartValues <CustomerForTime> series4 = new ChartValues <CustomerForTime>(); ChartValues <CustomerForTime> series5 = new ChartValues <CustomerForTime>(); bool HasData2 = false; bool HasData3 = false; bool HasData4 = false; bool HasData5 = false; List <Activity> Activities = gameActivities.Items; // Find last activity date DateTime dateStart = new DateTime(1982, 12, 15, 0, 0, 0); for (int iActivity = 0; iActivity < Activities.Count; iActivity++) { DateTime dateSession = Convert.ToDateTime(Activities[iActivity].DateSession).ToLocalTime(); if (dateSession > dateStart) { dateStart = dateSession; } } dateStart = dateStart.AddDays(variateurTime); // Periode data showned for (int i = limit; i >= 0; i--) { listDate[(limit - i)] = dateStart.AddDays(-i).ToString("yyyy-MM-dd"); CustomerForTime customerForTime = new CustomerForTime { Name = dateStart.AddDays(-i).ToString("yyyy-MM-dd"), Values = 0 }; series1.Add(customerForTime); series2.Add(customerForTime); series3.Add(customerForTime); series4.Add(customerForTime); series5.Add(customerForTime); } LocalDateConverter localDateConverter = new LocalDateConverter(); // Search data in periode for (int iActivity = 0; iActivity < Activities.Count; iActivity++) { long elapsedSeconds = Activities[iActivity].ElapsedSeconds; string dateSession = Convert.ToDateTime(Activities[iActivity].DateSession).ToLocalTime().ToString("yyyy-MM-dd"); //for (int iDay = 0; iDay < 10; iDay++) for (int iDay = limit; iDay >= 0; iDay--) { if (listDate[iDay] == dateSession) { string tempName = series1[iDay].Name; try { tempName = (string)localDateConverter.Convert(DateTime.ParseExact(series1[iDay].Name, "yyyy-MM-dd", null), null, null, null); } catch { } if (PluginDatabase.PluginSettings.CumulPlaytimeSession) { series1[iDay] = new CustomerForTime { Name = tempName, Values = series1[iDay].Values + elapsedSeconds, }; continue; } else { if (series1[iDay].Values == 0) { series1[iDay] = new CustomerForTime { Name = tempName, Values = elapsedSeconds, }; continue; } if (series2[iDay].Values == 0) { HasData2 = true; series2[iDay] = new CustomerForTime { Name = tempName, Values = elapsedSeconds, }; continue; } if (series3[iDay].Values == 0) { HasData3 = true; series3[iDay] = new CustomerForTime { Name = tempName, Values = elapsedSeconds, }; continue; } if (series4[iDay].Values == 0) { HasData4 = true; series4[iDay] = new CustomerForTime { Name = tempName, Values = elapsedSeconds, }; continue; } if (series5[iDay].Values == 0) { HasData5 = true; series5[iDay] = new CustomerForTime { Name = tempName, Values = elapsedSeconds, }; continue; } } } } } this.Dispatcher.BeginInvoke(DispatcherPriority.Background, new ThreadStart(delegate { // Set data in graphic. SeriesCollection activityForGameSeries = new SeriesCollection(); activityForGameSeries.Add(new ColumnSeries { Title = "1", Values = series1 }); if (HasData2) { activityForGameSeries.Add(new ColumnSeries { Title = "2", Values = series2 }); } if (HasData3) { activityForGameSeries.Add(new ColumnSeries { Title = "3", Values = series3 }); } if (HasData4) { activityForGameSeries.Add(new ColumnSeries { Title = "4", Values = series4 }); } if (HasData5) { activityForGameSeries.Add(new ColumnSeries { Title = "5", Values = series5 }); } for (int iDay = 0; iDay < listDate.Length; iDay++) { listDate[iDay] = Convert.ToDateTime(listDate[iDay]).ToString(Constants.DateUiFormat); } string[] activityForGameLabels = listDate; //let create a mapper so LiveCharts know how to plot our CustomerViewModel class var customerVmMapper = Mappers.Xy <CustomerForTime>() .X((value, index) => index) .Y(value => value.Values); //lets save the mapper globally Charting.For <CustomerForTime>(customerVmMapper); LongToTimePlayedConverter converter = new LongToTimePlayedConverter(); Func <double, string> activityForGameLogFormatter = value => (string)converter.Convert((long)value, null, null, CultureInfo.CurrentCulture); PART_ChartTimeActivityLabelsY.LabelFormatter = activityForGameLogFormatter; PART_ChartTimeActivity.DataTooltip = new CustomerToolTipForTime(); PART_ChartTimeActivityLabelsY.MinValue = 0; PART_ChartTimeActivity.Series = activityForGameSeries; PART_ChartTimeActivityLabelsX.Labels = activityForGameLabels; })); } catch (Exception ex) { Common.LogError(ex, "GameActivity"); } }); }
public HowLongToBeat(HowLongToBeatData data, Game game, IPlayniteAPI PlayniteApi) { this.data = data; InitializeComponent(); HltbDataUser gameData = data.GetData(); CoverImage = PlayniteApi.Database.GetFullFilePath(game.CoverImage); GameName = game.Name; int ElIndicator = 0; Hltb_El1.Visibility = System.Windows.Visibility.Hidden; Hltb_El1_Color.Visibility = System.Windows.Visibility.Hidden; Hltb_El2.Visibility = System.Windows.Visibility.Hidden; Hltb_El2_Color.Visibility = System.Windows.Visibility.Hidden; Hltb_El3.Visibility = System.Windows.Visibility.Hidden; Hltb_El3_Color.Visibility = System.Windows.Visibility.Hidden; if (gameData.GameHltbData.MainStory != 0) { ElIndicator += 1; SetDataInView(ElIndicator, resources.GetString("LOCHowLongToBeatMainStory"), gameData.GameHltbData.MainStoryFormat); } if (gameData.GameHltbData.MainExtra != 0) { ElIndicator += 1; SetDataInView(ElIndicator, resources.GetString("LOCHowLongToBeatMainExtra"), gameData.GameHltbData.MainExtraFormat); } if (gameData.GameHltbData.Completionist != 0) { ElIndicator += 1; SetDataInView(ElIndicator, resources.GetString("LOCHowLongToBeatCompletionist"), gameData.GameHltbData.CompletionistFormat); } if (gameData.GameHltbData.Solo != 0) { ElIndicator += 1; SetDataInView(ElIndicator, resources.GetString("LOCHowLongToBeatSolo"), gameData.GameHltbData.SoloFormat); } if (gameData.GameHltbData.CoOp != 0) { ElIndicator += 1; SetDataInView(ElIndicator, resources.GetString("LOCHowLongToBeatCoOp"), gameData.GameHltbData.CoOpFormat); } if (gameData.GameHltbData.Vs != 0) { ElIndicator += 1; SetDataInView(ElIndicator, resources.GetString("LOCHowLongToBeatVs"), gameData.GameHltbData.VsFormat); } LongToTimePlayedConverter converter = new LongToTimePlayedConverter(); PlaytimeFormat = (string)converter.Convert((long)game.Playtime, null, null, CultureInfo.CurrentCulture); HltbProgressBar.Children.Add(new HltbProgressBar(game.Playtime, gameData)); HltbProgressBar.UpdateLayout(); // Set Binding data DataContext = this; }
public override void RefreshElements(Game GameSelected, bool force = false) { #if DEBUG logger.Debug($"GameActivity [Ignored] - RefreshElements({GameSelected.Name})"); #endif CancellationTokenSource tokenSource = new CancellationTokenSource(); CancellationToken ct = tokenSource.Token; Task TaskRefresh = Task.Run(() => { try { Initial(); // Reset resources List <ResourcesList> resourcesLists = new List <ResourcesList>(); resourcesLists.Add(new ResourcesList { Key = "Ga_HasData", Value = false }); resourcesLists.Add(new ResourcesList { Key = "Ga_HasDataLog", Value = false }); resourcesLists.Add(new ResourcesList { Key = "Ga_LastDateSession", Value = string.Empty }); resourcesLists.Add(new ResourcesList { Key = "Ga_LastDateTimeSession", Value = string.Empty }); resourcesLists.Add(new ResourcesList { Key = "Ga_LastPlaytimeSession", Value = string.Empty }); resourcesLists.Add(new ResourcesList { Key = "Ga_IntegrationShowGraphic", Value = PluginDatabase.PluginSettings.IntegrationShowGraphic }); resourcesLists.Add(new ResourcesList { Key = "Ga_IntegrationShowGraphicLog", Value = PluginDatabase.PluginSettings.IntegrationShowGraphicLog }); ui.AddResources(resourcesLists); // Load data if (!GameActivity.PluginDatabase.IsLoaded) { return; } GameActivities gameActivities = GameActivity.PluginDatabase.Get(GameSelected); if (gameActivities.HasData) { resourcesLists = new List <ResourcesList>(); resourcesLists.Add(new ResourcesList { Key = "Ga_IntegrationShowGraphic", Value = PluginDatabase.PluginSettings.IntegrationShowGraphic }); resourcesLists.Add(new ResourcesList { Key = "Ga_IntegrationShowGraphicLog", Value = PluginDatabase.PluginSettings.IntegrationShowGraphicLog }); resourcesLists.Add(new ResourcesList { Key = "Ga_HasData", Value = gameActivities.HasData }); try { var data = gameActivities.GetSessionActivityDetails(); resourcesLists.Add(new ResourcesList { Key = "Ga_HasDataLog", Value = gameActivities.HasDataDetails() }); } catch { } try { resourcesLists.Add(new ResourcesList { Key = "Ga_LastDateSession", Value = gameActivities.GetLastSession().ToLocalTime().ToString(Constants.DateUiFormat) }); resourcesLists.Add(new ResourcesList { Key = "Ga_LastDateTimeSession", Value = gameActivities.GetLastSession().ToLocalTime().ToString(Constants.DateUiFormat) + " " + gameActivities.GetLastSession().ToLocalTime().ToString(Constants.TimeUiFormat) }); } catch { } try { LongToTimePlayedConverter converter = new LongToTimePlayedConverter(); string playtime = (string)converter.Convert((long)gameActivities.GetLastSessionActivity().ElapsedSeconds, null, null, CultureInfo.CurrentCulture); resourcesLists.Add(new ResourcesList { Key = "Ga_LastPlaytimeSession", Value = playtime }); } catch { } } else { logger.Warn($"GameActivity - No data for {GameSelected.Name}"); } // If not cancel, show if (!ct.IsCancellationRequested && GameSelected.Id == ActivityDatabase.GameSelected.Id) { ui.AddResources(resourcesLists); if (_PlayniteApi.ApplicationInfo.Mode == ApplicationMode.Desktop) { PluginDatabase.SetCurrent(gameActivities); } } } catch (Exception ex) { Common.LogError(ex, "GameActivity"); } }, ct); taskHelper.Add(TaskRefresh, tokenSource); }
public HowLongToBeatView(HowLongToBeatData data, Game game, IPlayniteAPI PlayniteApi, HowLongToBeatSettings settings) { _data = data; InitializeComponent(); HltbDataUser gameData = data.GetData(); if (data.hasData && gameData != null && gameData.GameHltbData != null) { if (string.IsNullOrEmpty(game.CoverImage)) { CoverImage = gameData.GameHltbData.UrlImg; } else { CoverImage = gameData.GameHltbData.UrlImg; if (!settings.ShowHltbImg) { CoverImage = PlayniteApi.Database.GetFullFilePath(game.CoverImage); } } GameName = game.Name; HltbName = resources.GetString("LOCSourceLabel") + ": " + gameData.GameHltbData.Name; int ElIndicator = 0; Hltb_El1.Visibility = Visibility.Hidden; Hltb_El1_Color.Visibility = Visibility.Hidden; Hltb_El2.Visibility = Visibility.Hidden; Hltb_El2_Color.Visibility = Visibility.Hidden; Hltb_El3.Visibility = Visibility.Hidden; Hltb_El3_Color.Visibility = Visibility.Hidden; if (gameData.GameHltbData.MainStory != 0) { ElIndicator += 1; SetDataInView(ElIndicator, resources.GetString("LOCHowLongToBeatMainStory"), gameData.GameHltbData.MainStoryFormat); } if (gameData.GameHltbData.MainExtra != 0) { ElIndicator += 1; SetDataInView(ElIndicator, resources.GetString("LOCHowLongToBeatMainExtra"), gameData.GameHltbData.MainExtraFormat); } if (gameData.GameHltbData.Completionist != 0) { ElIndicator += 1; SetDataInView(ElIndicator, resources.GetString("LOCHowLongToBeatCompletionist"), gameData.GameHltbData.CompletionistFormat); } if (gameData.GameHltbData.Solo != 0) { ElIndicator += 1; SetDataInView(ElIndicator, resources.GetString("LOCHowLongToBeatSolo"), gameData.GameHltbData.SoloFormat); } if (gameData.GameHltbData.CoOp != 0) { ElIndicator += 1; SetDataInView(ElIndicator, resources.GetString("LOCHowLongToBeatCoOp"), gameData.GameHltbData.CoOpFormat); } if (gameData.GameHltbData.Vs != 0) { ElIndicator += 1; SetDataInView(ElIndicator, resources.GetString("LOCHowLongToBeatVs"), gameData.GameHltbData.VsFormat); } Hltb_El1_Color.Background = new SolidColorBrush(settings.ColorFirst); Hltb_El2_Color.Background = new SolidColorBrush(settings.ColorSecond); Hltb_El3_Color.Background = new SolidColorBrush(settings.ColorThird); LongToTimePlayedConverter converter = new LongToTimePlayedConverter(); PlaytimeFormat = (string)converter.Convert((long)game.Playtime, null, null, CultureInfo.CurrentCulture); if (!data.isEmpty) { HltbProgressBar hltbProgressBar = new HltbProgressBar(); hltbProgressBar.SetHltbData(game.Playtime, data, settings); PART_HltbProgressBar.Children.Add(hltbProgressBar); } } // Set Binding data DataContext = this; }
public void GetActivityForGamesTimeGraphics(GameActivityClass gameActivity, int variateurTime) { //DateTime dateStart = DateTime.Now.AddDays(variateurTime); string[] listDate = new string[10]; ChartValues <CustomerForTime> series = new ChartValues <CustomerForTime>(); List <Activity> gameActivities = gameActivity.Activities; // Find last activity date DateTime dateStart = new DateTime(1982, 12, 15, 0, 0, 0); for (int iActivity = 0; iActivity < gameActivities.Count; iActivity++) { DateTime dateSession = Convert.ToDateTime(gameActivities[iActivity].DateSession).ToLocalTime(); if (dateSession > dateStart) { dateStart = dateSession; } } dateStart = dateStart.AddDays(variateurTime); // Periode data showned for (int iDay = 0; iDay < 10; iDay++) { listDate[iDay] = dateStart.AddDays(iDay - 9).ToString("yyyy-MM-dd"); series.Add(new CustomerForTime { Name = dateStart.AddDays(iDay - 9).ToString("yyyy-MM-dd"), Values = 0, }); } // Search data in periode for (int iActivity = 0; iActivity < gameActivities.Count; iActivity++) { long elapsedSeconds = gameActivities[iActivity].ElapsedSeconds; string dateSession = Convert.ToDateTime(gameActivities[iActivity].DateSession).ToLocalTime().ToString("yyyy-MM-dd"); for (int iDay = 0; iDay < 10; iDay++) { if (listDate[iDay] == dateSession) { string tempName = series[iDay].Name; long tempElapsed = series[iDay].Values + elapsedSeconds; series[iDay] = new CustomerForTime { Name = tempName, Values = tempElapsed, }; } } } // Set data in graphic. SeriesCollection activityForGameSeries = new SeriesCollection { new ColumnSeries { Title = "", Values = series } }; for (int iDay = 0; iDay < listDate.Length; iDay++) { listDate[iDay] = Convert.ToDateTime(listDate[iDay]).ToString(Playnite.Common.Constants.DateUiFormat); } string[] activityForGameLabels = listDate; //let create a mapper so LiveCharts know how to plot our CustomerViewModel class var customerVmMapper = Mappers.Xy <CustomerForTime>() .X((value, index) => index) .Y(value => value.Values); //lets save the mapper globally Charting.For <CustomerForTime>(customerVmMapper); LongToTimePlayedConverter converter = new LongToTimePlayedConverter(); Func <double, string> activityForGameLogFormatter = value => (string)converter.Convert((long)value, null, null, CultureInfo.CurrentCulture); gameLabelsY.LabelFormatter = activityForGameLogFormatter; gameSeries.DataTooltip = new CustomerToolTipForTime(); gameLabelsY.MinValue = 0; gameSeries.Series = activityForGameSeries; gameLabelsX.Labels = activityForGameLabels; }
public HowLongToBeatView(IPlayniteAPI PlayniteApi, HowLongToBeatSettings settings, GameHowLongToBeat gameHowLongToBeat) { _gameHowLongToBeat = gameHowLongToBeat; InitializeComponent(); HltbDataUser gameData = _gameHowLongToBeat.Items.FirstOrDefault(); if (gameData == null) { return; } if (_gameHowLongToBeat.HasData || _gameHowLongToBeat.HasDataEmpty) { CoverImage = gameData.UrlImg; if (!settings.ShowHltbImg) { if (!_gameHowLongToBeat.CoverImage.IsNullOrEmpty()) { CoverImage = PlayniteApi.Database.GetFullFilePath(_gameHowLongToBeat.CoverImage); } } GameName = _gameHowLongToBeat.Name; HltbName = resources.GetString("LOCSourceLabel") + ": " + gameData.Name; } if (_gameHowLongToBeat.HasData) { int ElIndicator = 0; Hltb_El1.Visibility = Visibility.Hidden; Hltb_El1_Color.Visibility = Visibility.Hidden; Hltb_El2.Visibility = Visibility.Hidden; Hltb_El2_Color.Visibility = Visibility.Hidden; Hltb_El3.Visibility = Visibility.Hidden; Hltb_El3_Color.Visibility = Visibility.Hidden; TitleList titleList = PluginDatabase.GetUserHltbData(_gameHowLongToBeat.GetData().Id); if (gameData.GameHltbData.MainStory != 0) { ElIndicator += 1; SetDataInView(ElIndicator, resources.GetString("LOCHowLongToBeatMainStory"), gameData.GameHltbData.MainStoryFormat, (titleList != null) ? titleList.HltbUserData.MainStoryFormat : string.Empty); SetColor(ElIndicator, PluginDatabase.PluginSettings.ColorFirst); } if (gameData.GameHltbData.MainExtra != 0) { ElIndicator += 1; SetDataInView(ElIndicator, resources.GetString("LOCHowLongToBeatMainExtra"), gameData.GameHltbData.MainExtraFormat, (titleList != null) ? titleList.HltbUserData.MainExtraFormat : string.Empty); SetColor(ElIndicator, PluginDatabase.PluginSettings.ColorSecond); } if (gameData.GameHltbData.Completionist != 0) { ElIndicator += 1; SetDataInView(ElIndicator, resources.GetString("LOCHowLongToBeatCompletionist"), gameData.GameHltbData.CompletionistFormat, (titleList != null) ? titleList.HltbUserData.CompletionistFormat : string.Empty); SetColor(ElIndicator, PluginDatabase.PluginSettings.ColorThird); } if (gameData.GameHltbData.Solo != 0) { ElIndicator += 1; SetDataInView(ElIndicator, resources.GetString("LOCHowLongToBeatSolo"), gameData.GameHltbData.SoloFormat, (titleList != null) ? titleList.HltbUserData.SoloFormat : string.Empty); SetColor(ElIndicator, PluginDatabase.PluginSettings.ColorFirstMulti); } if (gameData.GameHltbData.CoOp != 0) { ElIndicator += 1; SetDataInView(ElIndicator, resources.GetString("LOCHowLongToBeatCoOp"), gameData.GameHltbData.CoOpFormat, (titleList != null) ? titleList.HltbUserData.CoOpFormat : string.Empty); SetColor(ElIndicator, PluginDatabase.PluginSettings.ColorSecondMulti); } if (gameData.GameHltbData.Vs != 0) { ElIndicator += 1; SetDataInView(ElIndicator, resources.GetString("LOCHowLongToBeatVs"), gameData.GameHltbData.VsFormat, (titleList != null) ? titleList.HltbUserData.VsFormat : string.Empty); SetColor(ElIndicator, PluginDatabase.PluginSettings.ColorThirdMulti); } LongToTimePlayedConverter converter = new LongToTimePlayedConverter(); PlaytimeFormat = (string)converter.Convert((long)_gameHowLongToBeat.Playtime, null, null, CultureInfo.CurrentCulture); hltbProgressBar = new HltbProgressBar(); PART_HltbProgressBar.Children.Add(hltbProgressBar); } // Set Binding data DataContext = this; }