Example #1
0
        public GameActivityGameGraphicLog(GameActivitySettings settings, GameActivityClass gameActivity, string dateSelected = "", int variateurLog = 0, bool withTitle = true)
        {
            InitializeComponent();

            this.variateurLog = variateurLog;
            GetActivityForGamesLogGraphics(gameActivity, withTitle, dateSelected);
        }
Example #2
0
        // Create FrameworkElement with game activity datas
        public StackPanel CreateGa(GameActivityClass gameActivity, bool ShowTitle, bool ShowGraphic, bool ShowGraphicLog, bool IsCustom = false)
        {
            StackPanel spGa = new StackPanel();

            spGa.Name = "PART_GameActivity";

            if (ShowTitle)
            {
                TextBlock tbGa = new TextBlock();
                tbGa.Name   = "PART_GameActivity_TextBlock";
                tbGa.Text   = resources.GetString("LOCGameActivityTitle");
                tbGa.Style  = (Style)resources.GetResource("BaseTextBlockStyle");
                tbGa.Margin = new Thickness(0, 15, 0, 10);

                Separator sep = new Separator();
                sep.Name       = "PART_GameActivity_Separator";
                sep.Background = (Brush)resources.GetResource("PanelSeparatorBrush");

                spGa.Children.Add(tbGa);
                spGa.Children.Add(sep);
                spGa.UpdateLayout();
            }

            if (ShowGraphic)
            {
                StackPanel spGaG = new StackPanel();
                if (!IsCustom)
                {
                    spGaG.Name      = "PART_GameActivty_Graphic";
                    spGaG.Height    = 120;
                    spGaG.MaxHeight = 120;
                    spGaG.Margin    = new Thickness(0, 5, 0, 5);
                }

                spGaG.Children.Add(new GameActivityGameGraphicTime(settings, gameActivity));

                spGa.Children.Add(spGaG);
                spGa.UpdateLayout();
            }

            if (ShowGraphicLog)
            {
                StackPanel spGaGL = new StackPanel();
                if (!IsCustom)
                {
                    spGaGL.Name      = "PART_GameActivty_GraphicLog";
                    spGaGL.Height    = 120;
                    spGaGL.MaxHeight = 120;
                    spGaGL.Margin    = new Thickness(0, 5, 0, 5);
                }

                spGaGL.Children.Add(new GameActivityGameGraphicLog(settings, gameActivity));

                spGa.Children.Add(spGaGL);
                spGa.UpdateLayout();
            }

            return(spGa);
        }
        /// <summary>
        /// Get data for the selected game.
        /// </summary>
        /// <param name="gameID"></param>
        /// <param name="variateur"></param>
        public void getActivityForGamesTimeGraphics(string gameID)
        {
            gameSeriesContener.Children.Clear();
            GameActivityClass gameActivity   = GameActivityDatabases.Get(Guid.Parse(gameID));
            List <Activity>   gameActivities = gameActivity.Activities;

            var graph = new GameActivityGameGraphicTime(settings, gameActivity, variateurTime);

            graph.gameSeriesDataClick += new DataClickHandler(GameSeries_DataClick);
            gameSeriesContener.Children.Add(graph);
            gameSeriesContener.UpdateLayout();

            gameLabel.Content = resources.GetString("LOCGameActivityTimeTitle");
        }
        /// <summary>
        /// Get data detail for the selected game.
        /// </summary>
        /// <param name="gameID"></param>
        public void getActivityForGamesLogGraphics(string gameID, string dateSelected = "")
        {
            gameSeriesContener.Children.Clear();
            GameActivityClass gameActivity   = GameActivityDatabases.Get(Guid.Parse(gameID));
            List <Activity>   gameActivities = gameActivity.Activities;

            gameSeriesContener.Children.Add(new GameActivityGameGraphicLog(settings, gameActivity, dateSelected, variateurLog, false));
            gameSeriesContener.UpdateLayout();

            if (dateSelected == "")
            {
                gameLabel.Content = resources.GetString("LOCGameActivityLogTitle");
            }
            else
            {
                gameLabel.Content = resources.GetString("LOCGameActivityLogTitleDate") + " "
                                    + Convert.ToDateTime(dateSelected).ToString(Playnite.Common.Constants.DateUiFormat);
            }
        }
Example #5
0
        public void GetActivityForGamesLogGraphics(GameActivityClass gameActivity, bool withTitle, string dateSelected = "")
        {
            List <ActivityDetailsData> gameActivitiesDetails = gameActivity.GetSessionActivityDetails(dateSelected);

            string[] activityForGameLogLabels             = new string[0];
            List <ActivityDetailsData> gameLogsDefinitive = new List <ActivityDetailsData>();

            if (gameActivitiesDetails.Count > 0)
            {
                if (gameActivitiesDetails.Count > 10)
                {
                    // Variateur
                    int conteurEnd   = gameActivitiesDetails.Count + variateurLog;
                    int conteurStart = conteurEnd - 10;

                    if (conteurEnd > gameActivitiesDetails.Count)
                    {
                        int temp = conteurEnd - gameActivitiesDetails.Count;
                        conteurEnd   = gameActivitiesDetails.Count;
                        conteurStart = conteurEnd - 10;

                        variateurLog = variateurLogTemp;
                    }

                    if (conteurStart < 0)
                    {
                        conteurStart = 0;
                        conteurEnd   = 10;

                        variateurLog = variateurLogTemp;
                    }

                    variateurLogTemp = variateurLog;

                    // Create data
                    int sCount = 0;
                    activityForGameLogLabels = new string[10];
                    for (int iLog = conteurStart; iLog < conteurEnd; iLog++)
                    {
                        gameLogsDefinitive.Add(gameActivitiesDetails[iLog]);
                        activityForGameLogLabels[sCount] = Convert.ToDateTime(gameActivitiesDetails[iLog].Datelog).ToLocalTime().ToString(Playnite.Common.Constants.TimeUiFormat);
                        sCount += 1;
                    }
                }
                else
                {
                    gameLogsDefinitive = gameActivitiesDetails;

                    activityForGameLogLabels = new string[gameActivitiesDetails.Count];
                    for (int iLog = 0; iLog < gameActivitiesDetails.Count; iLog++)
                    {
                        activityForGameLogLabels[iLog] = Convert.ToDateTime(gameActivitiesDetails[iLog].Datelog).ToLocalTime().ToString(Playnite.Common.Constants.TimeUiFormat);
                    }
                }
            }
            else
            {
                return;
            }

            // Set data in graphic.
            ChartValues <int> CPUseries = new ChartValues <int>();
            ChartValues <int> GPUseries = new ChartValues <int>();
            ChartValues <int> RAMseries = new ChartValues <int>();
            ChartValues <int> FPSseries = new ChartValues <int>();

            for (int iLog = 0; iLog < gameLogsDefinitive.Count; iLog++)
            {
                CPUseries.Add(gameLogsDefinitive[iLog].CPU);
                GPUseries.Add(gameLogsDefinitive[iLog].GPU);
                RAMseries.Add(gameLogsDefinitive[iLog].RAM);
                FPSseries.Add(gameLogsDefinitive[iLog].FPS);
            }

            SeriesCollection activityForGameLogSeries = new SeriesCollection
            {
                new ColumnSeries
                {
                    Title  = "cpu usage (%)",
                    Values = CPUseries
                },
                new ColumnSeries
                {
                    Title  = "gpu usage (%)",
                    Values = GPUseries
                },
                new ColumnSeries
                {
                    Title  = "ram usage (%)",
                    Values = RAMseries
                },
                new LineSeries
                {
                    Title  = "fps",
                    Values = FPSseries
                }
            };
            Func <double, string> activityForGameLogFormatter = value => value.ToString("N");

            gameSeriesLog.DataTooltip                 = new LiveCharts.Wpf.DefaultTooltip();
            gameSeriesLog.DataTooltip.Background      = (Brush)resources.GetResource("CommonToolTipBackgroundBrush");
            gameSeriesLog.DataTooltip.Padding         = new Thickness(10);
            gameSeriesLog.DataTooltip.BorderThickness = (Thickness)resources.GetResource("CommonToolTipBorderThickness");
            gameSeriesLog.DataTooltip.BorderBrush     = (Brush)resources.GetResource("CommonToolTipBorderBrush");
            gameSeriesLog.DataTooltip.Foreground      = (Brush)resources.GetResource("CommonToolTipForeground");

            gameSeriesLog.Series       = activityForGameLogSeries;
            gameLabelsY.MinValue       = 0;
            gameLabelsX.Labels         = activityForGameLogLabels;
            gameLabelsY.LabelFormatter = activityForGameLogFormatter;

            if (withTitle)
            {
                lGameSeriesLog.Visibility = Visibility.Visible;
                lGameSeriesLog.Content    = resources.GetString("LOCGameActivityLogTitleDate") + " "
                                            + ((DateTime)gameActivitiesDetails[0].Datelog).ToString(Playnite.Common.Constants.DateUiFormat);
            }
        }
        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 GameActivityGameGraphicTime(GameActivitySettings settings, GameActivityClass gameActivity, int variateurTime = 0)
        {
            InitializeComponent();

            GetActivityForGamesTimeGraphics(gameActivity, variateurTime);
        }
Example #8
0
        private void Integration()
        {
            try
            {
                // Refresh database
                if (GameActivity.isFirstLoad)
                {
                    GameActivityDatabases = new GameActivityCollection();
                    GameActivityDatabases.InitializeCollection(this.GetPluginUserDataPath());
                    GameActivity.isFirstLoad = false;
                }


                GameActivityClass SelectedGameGameActivity = GameActivityDatabases.Get(GameSelected.Id);


                // Search game description
                if (PART_ElemDescription == null)
                {
                    foreach (StackPanel sp in Tools.FindVisualChildren <StackPanel>(Application.Current.MainWindow))
                    {
                        if (sp.Name == "PART_ElemDescription")
                        {
                            PART_ElemDescription = sp;
                            break;
                        }
                    }
                }


                // Delete
                logger.Info("GameActivity - Delete");
                ui.RemoveButtonInGameSelectedActionBarButtonOrToggleButton("PART_GaButton");
                ui.RemoveButtonInGameSelectedActionBarButtonOrToggleButton("PART_GaToggleButton");
                ui.RemoveElementInGameSelectedDescription("PART_GameActivity");
                ui.ClearElementInCustomTheme("PART_GameActivty_Graphic");
                ui.ClearElementInCustomTheme("PART_GameActivty_GraphicLog");


                // Reset resources
                //List<ResourcesList> resourcesLists = new List<ResourcesList>();
                //ui.AddResources(resourcesLists);


                // No game activity
                if (SelectedGameGameActivity == null)
                {
                    logger.Info("GameActivity - No activity for " + GameSelected.Name);
                    return;
                }


                // Add resources
                //ui.AddResources(resourcesLists);


                // Auto integration
                if (settings.EnableIntegrationInDescription || settings.EnableIntegrationInDescriptionWithToggle)
                {
                    if (settings.EnableIntegrationInDescriptionWithToggle)
                    {
                        ToggleButton tb = new ToggleButton();
                        if (settings.IntegrationToggleDetails)
                        {
                            tb = new GameActivityToggleButtonDetails(SelectedGameGameActivity.GetLastSessionActivity().ElapsedSeconds);
                        }
                        else
                        {
                            tb         = new GameActivityToggleButton();
                            tb.Content = resources.GetString("LOCGameActivityTitle");
                        }

                        tb.IsChecked           = false;
                        tb.Name                = "PART_GaToggleButton";
                        tb.Width               = 150;
                        tb.HorizontalAlignment = HorizontalAlignment.Right;
                        tb.VerticalAlignment   = VerticalAlignment.Stretch;
                        tb.Margin              = new Thickness(10, 0, 0, 0);
                        tb.Click              += OnGameSelectedToggleButtonClick;

                        ui.AddButtonInGameSelectedActionBarButtonOrToggleButton(tb);
                    }


                    // Add game activity elements
                    StackPanel GaSp = CreateGa(SelectedGameGameActivity, settings.IntegrationShowTitle, settings.IntegrationShowGraphic, settings.IntegrationShowGraphicLog, false);

                    if (settings.EnableIntegrationInDescriptionWithToggle)
                    {
                        GaSp.Visibility = Visibility.Collapsed;
                    }

                    ui.AddElementInGameSelectedDescription(GaSp, settings.IntegrationTopGameDetails);
                }


                // Auto adding button
                if (settings.EnableIntegrationButton || settings.EnableIntegrationButtonDetails)
                {
                    Button bt = new Button();
                    if (settings.EnableIntegrationButton)
                    {
                        bt.Content = resources.GetString("LOCGameActivityTitle");
                    }

                    if (settings.EnableIntegrationButtonDetails)
                    {
                        bt = new GameActivityButtonDetails(SelectedGameGameActivity.GetLastSessionActivity().ElapsedSeconds);
                    }

                    bt.Name  = "PART_GaButton";
                    bt.Width = 150;
                    bt.HorizontalAlignment = HorizontalAlignment.Right;
                    bt.VerticalAlignment   = VerticalAlignment.Stretch;
                    bt.Margin = new Thickness(10, 0, 0, 0);
                    bt.Click += OnBtGameSelectedActionBarClick;

                    ui.AddButtonInGameSelectedActionBarButtonOrToggleButton(bt);
                }


                // Custom theme
                if (settings.EnableIntegrationInCustomTheme)
                {
                    // Create
                    StackPanel spGaG = CreateGa(SelectedGameGameActivity, false, true, false, true);
                    ui.AddElementInCustomTheme(spGaG, "PART_GameActivty_Graphic");

                    StackPanel spGaGL = CreateGa(SelectedGameGameActivity, false, false, true, true);
                    ui.AddElementInCustomTheme(spGaGL, "PART_GameActivty_GraphicLog");
                }
            }
            catch (Exception ex)
            {
                Common.LogError(ex, "GameActivity", $"Impossible integration");
            }
        }
Example #9
0
        /// <summary>
        /// Get data for the selected game.
        /// </summary>
        /// <param name="gameID"></param>
        /// <param name="variateur"></param>
        public void getActivityForGamesTimeGraphics(string gameID)
        {
            DateTime dateStart = DateTime.Now.AddDays(variateurTime);

            string[] listDate = new string[10];
            ChartValues <CustomerForTime> series = new ChartValues <CustomerForTime>();

            // Periode data showned
            for (int iDay = 0; iDay < 10; iDay++)
            {
                listDate[iDay] = dateStart.AddDays(iDay - 9).ToString("yyyy-MM-dd");
                //series.Add(0);
                series.Add(new CustomerForTime
                {
                    Name   = dateStart.AddDays(iDay - 9).ToString("yyyy-MM-dd"),
                    Values = 0,
                    //ValuesFormat = (int)TimeSpan.FromSeconds(0).TotalHours + "h " + TimeSpan.FromSeconds(0).ToString(@"mm") + "min"
                });
            }


            // Search data in periode
            GameActivityClass gameActivity   = GameActivityDatabases.Get(Guid.Parse(gameID));
            List <Activity>   gameActivities = gameActivity.Activities;

            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;
                        double 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
                }
            };

            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);

            Func <double, string> activityForGameLogFormatter = value => (int)TimeSpan.FromSeconds(value).TotalHours + "h " + TimeSpan.FromSeconds(value).ToString(@"mm") + "min";

            gameLabelsY.LabelFormatter = activityForGameLogFormatter;

            gameSeries.DataTooltip = new CustomerToolTipForTime();
            gameLabelsY.MinValue   = 0;
            gameLabel.Content      = resources.GetString("LOCGameActivityTimeTitle");
            gameSeries.Series      = activityForGameSeries;
            gameLabelsX.Labels     = activityForGameLabels;
        }