-
-
Notifications
You must be signed in to change notification settings - Fork 4
/
UniversalGamePriorityMod.cs
47 lines (39 loc) · 1.66 KB
/
UniversalGamePriorityMod.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System;
using MelonLoader;
using System.Diagnostics;
using System.Threading.Tasks;
namespace GamePriority;
public class GamePriorityChanger : MelonMod {
public static class BuildInfo {
public const string Name = "GamePriority";
public const string Author = "Lily";
public const string Company = "Minty Labs";
public const string Version = "2.0.1";
public const string DownloadLink = "https://github.com/MintLily/GamePriority";
}
private MelonPreferences_Category _modCategory;
private MelonPreferences_Entry<bool> _isSetToHigh;
private const string ModCategory = "GamePriority";
private const string SetGamePriority = "SetGamePriorityToHigh";
private int _failedProcessPriorityChange;
public override void OnApplicationStart() {
_modCategory = MelonPreferences.CreateCategory(ModCategory, "Game Priority");
_isSetToHigh = _modCategory.CreateEntry(SetGamePriority, false, "Set game priority to high");
ApplyChanges();
}
private void ApplyChanges() => Task.Run(async () => await DelayedRun());
private async Task DelayedRun() {
await Task.Delay(5000);
try {
using var p = Process.GetCurrentProcess();
p.PriorityClass = _isSetToHigh.Value ? ProcessPriorityClass.High : ProcessPriorityClass.Normal;
}
catch (Exception e) {
MelonLogger.Error($"Failed to change ProcessPriority, retying ...\nEXCEPTION:\n{e}\nSTACK TRACE:\n{e.StackTrace}");
if (_failedProcessPriorityChange >= 5)
return;
ApplyChanges();
_failedProcessPriorityChange += 1;
}
}
}