/// <summary> /// Event excuted with the timer. /// </summary> /// <param name="source"></param> /// <param name="e"></param> private async void OnTimedEvent(Object source, ElapsedEventArgs e) { int fpsValue = 0; int cpuValue = PerfCounter.GetCpuPercentage(); int gpuValue = PerfCounter.GetGpuPercentage(); int ramValue = PerfCounter.GetRamPercentage(); int gpuTValue = PerfCounter.GetGpuTemperature(); int cpuTValue = PerfCounter.GetCpuTemperature(); if (settings.UseMsiAfterburner && CheckGoodForLogging()) { MSIAfterburnerNET.HM.HardwareMonitor MSIAfterburner = null; try { MSIAfterburner = new MSIAfterburnerNET.HM.HardwareMonitor(); } catch (Exception ex) { logger.Warn("GameActivity - Fail initialize MSIAfterburnerNET"); #if DEBUG Common.LogError(ex, "GameActivity [Ignored]", "Fail initialize MSIAfterburnerNET"); #endif } if (MSIAfterburner != null) { try { fpsValue = (int)MSIAfterburner.GetEntry(MONITORING_SOURCE_ID.FRAMERATE).Data; } catch (Exception ex) { logger.Warn("GameActivity - Fail get fpsValue"); #if DEBUG Common.LogError(ex, "GameActivity [Ignored]", "Fail get fpsValue"); #endif } try { if (gpuValue == 0) { gpuValue = (int)MSIAfterburner.GetEntry(MONITORING_SOURCE_ID.GPU_USAGE).Data; } } catch (Exception ex) { logger.Warn("GameActivity - Fail get gpuValue"); #if DEBUG Common.LogError(ex, "GameActivity [Ignored]", "Fail get gpuValue"); #endif } try { if (gpuTValue == 0) { gpuTValue = (int)MSIAfterburner.GetEntry(MONITORING_SOURCE_ID.GPU_TEMPERATURE).Data; } } catch (Exception ex) { logger.Warn("GameActivity - Fail get gpuTValue"); #if DEBUG Common.LogError(ex, "GameActivity [Ignored]", "Fail get gpuTValue"); #endif } try { if (cpuTValue == 0) { cpuTValue = (int)MSIAfterburner.GetEntry(MONITORING_SOURCE_ID.CPU_TEMPERATURE).Data; } } catch (Exception ex) { logger.Warn("GameActivity - Fail get cpuTValue"); #if DEBUG Common.LogError(ex, "GameActivity [Ignored]", "Fail get cpuTValue"); #endif } } } else if (settings.UseHWiNFO && CheckGoodForLogging()) { HWiNFODumper HWinFO = null; List <HWiNFODumper.JsonObj> dataHWinfo = null; try { HWinFO = new HWiNFODumper(); dataHWinfo = HWinFO.ReadMem(); } catch (Exception ex) { logger.Warn("GameActivity - Fail initialize HWiNFODumper"); #if DEBUG Common.LogError(ex, "GameActivity [Ignored]", "Fail initialize HWiNFODumper"); #endif } if (HWinFO != null && dataHWinfo != null) { try { foreach (var sensorItems in dataHWinfo) { JObject sensorItemsOBJ = JObject.Parse(JsonConvert.SerializeObject(sensorItems)); string sensorsID = "0x" + ((uint)sensorItemsOBJ["szSensorSensorID"]).ToString("X"); // Find sensors fps if (sensorsID.ToLower() == settings.HWiNFO_fps_sensorsID.ToLower()) { // Find data fps foreach (var items in sensorItemsOBJ["sensors"]) { JObject itemOBJ = JObject.Parse(JsonConvert.SerializeObject(items)); string dataID = "0x" + ((uint)itemOBJ["dwSensorID"]).ToString("X"); if (dataID.ToLower() == settings.HWiNFO_fps_elementID.ToLower()) { fpsValue = (int)Math.Round((Double)itemOBJ["Value"]); } } } // Find sensors gpu usage if (sensorsID.ToLower() == settings.HWiNFO_gpu_sensorsID.ToLower()) { // Find data gpu foreach (var items in sensorItemsOBJ["sensors"]) { JObject itemOBJ = JObject.Parse(JsonConvert.SerializeObject(items)); string dataID = "0x" + ((uint)itemOBJ["dwSensorID"]).ToString("X"); if (dataID.ToLower() == settings.HWiNFO_gpu_elementID.ToLower()) { gpuValue = (int)Math.Round((Double)itemOBJ["Value"]); } } } // Find sensors gpu temp if (sensorsID.ToLower() == settings.HWiNFO_gpuT_sensorsID.ToLower()) { // Find data gpu foreach (var items in sensorItemsOBJ["sensors"]) { JObject itemOBJ = JObject.Parse(JsonConvert.SerializeObject(items)); string dataID = "0x" + ((uint)itemOBJ["dwSensorID"]).ToString("X"); if (dataID.ToLower() == settings.HWiNFO_gpuT_elementID.ToLower()) { gpuTValue = (int)Math.Round((Double)itemOBJ["Value"]); } } } // Find sensors cpu temp if (sensorsID.ToLower() == settings.HWiNFO_cpuT_sensorsID.ToLower()) { // Find data gpu foreach (var items in sensorItemsOBJ["sensors"]) { JObject itemOBJ = JObject.Parse(JsonConvert.SerializeObject(items)); string dataID = "0x" + ((uint)itemOBJ["dwSensorID"]).ToString("X"); if (dataID.ToLower() == settings.HWiNFO_cpuT_elementID.ToLower()) { cpuTValue = (int)Math.Round((Double)itemOBJ["Value"]); } } } } } catch (Exception ex) { logger.Warn("GameActivity - Fail get HWiNFO"); #if DEBUG Common.LogError(ex, "GameActivity [Ignored]", "Fail get HWiNFO"); #endif } } } // Listing warnings bool WarningMinFps = false; bool WarningMaxCpuTemp = false; bool WarningMaxGpuTemp = false; bool WarningMaxCpuUsage = false; bool WarningMaxGpuUsage = false; bool WarningMaxRamUsage = false; if (settings.EnableWarning) { if (settings.MinFps != 0 && settings.MinFps >= fpsValue) { WarningMinFps = true; } if (settings.MaxCpuTemp != 0 && settings.MaxCpuTemp <= cpuTValue) { WarningMaxCpuTemp = true; } if (settings.MaxGpuTemp != 0 && settings.MaxGpuTemp <= gpuTValue) { WarningMaxGpuTemp = true; } if (settings.MaxCpuUsage != 0 && settings.MaxCpuUsage <= cpuValue) { WarningMaxCpuUsage = true; } if (settings.MaxGpuUsage != 0 && settings.MaxGpuUsage <= gpuValue) { WarningMaxGpuUsage = true; } if (settings.MaxRamUsage != 0 && settings.MaxRamUsage <= ramValue) { WarningMaxRamUsage = true; } WarningData Message = new WarningData { At = resources.GetString("LOCGameActivityWarningAt") + " " + DateTime.Now.ToString("HH:mm"), FpsData = new Data { Name = resources.GetString("LOCGameActivityFps"), Value = fpsValue, IsWarm = WarningMinFps }, CpuTempData = new Data { Name = resources.GetString("LOCGameActivityCpuTemp"), Value = cpuTValue, IsWarm = WarningMaxCpuTemp }, GpuTempData = new Data { Name = resources.GetString("LOCGameActivityGpuTemp"), Value = gpuTValue, IsWarm = WarningMaxGpuTemp }, CpuUsageData = new Data { Name = resources.GetString("LOCGameActivityCpuUsage"), Value = cpuValue, IsWarm = WarningMaxCpuUsage }, GpuUsageData = new Data { Name = resources.GetString("LOCGameActivityGpuUsage"), Value = gpuValue, IsWarm = WarningMaxGpuUsage }, RamUsageData = new Data { Name = resources.GetString("LOCGameActivityRamUsage"), Value = ramValue, IsWarm = WarningMaxRamUsage }, }; if (WarningMinFps || WarningMaxCpuTemp || WarningMaxGpuTemp || WarningMaxCpuUsage || WarningMaxGpuUsage) { WarningsMessage.Add(Message); } } List <ActivityDetailsData> ActivitiesDetailsData = GameActivitiesLog.ItemsDetails.Get(GameActivitiesLog.GetLastSession()); ActivitiesDetailsData.Add(new ActivityDetailsData { Datelog = DateTime.Now.ToUniversalTime(), FPS = fpsValue, CPU = cpuValue, CPUT = cpuTValue, GPU = gpuValue, GPUT = gpuTValue, RAM = ramValue }); }
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); }