LenovoLegionToolkit
111 строк · 3.8 Кб
1using System;2using System.Collections.Generic;3using System.Threading.Tasks;4using LenovoLegionToolkit.Lib.Utils;5
6namespace LenovoLegionToolkit.Lib.Controllers.GodMode;7
8public class GodModeController : IGodModeController9{
10private readonly IGodModeController _controllerV1;11private readonly IGodModeController _controllerV2;12
13public event EventHandler<Guid>? PresetChanged14{15add16{17_controllerV1.PresetChanged += value;18_controllerV2.PresetChanged += value;19}20remove21{22_controllerV1.PresetChanged -= value;23_controllerV2.PresetChanged -= value;24}25}26
27public GodModeController(GodModeControllerV1 controllerV1, GodModeControllerV2 controllerV2)28{29_controllerV1 = controllerV1 ?? throw new ArgumentNullException(nameof(controllerV1));30_controllerV2 = controllerV2 ?? throw new ArgumentNullException(nameof(controllerV2));31}32
33public async Task<bool> NeedsVantageDisabledAsync()34{35var controller = await GetControllerAsync().ConfigureAwait(false);36return await controller.NeedsVantageDisabledAsync().ConfigureAwait(false);37}38
39public async Task<bool> NeedsLegionZoneDisabledAsync()40{41var controller = await GetControllerAsync().ConfigureAwait(false);42return await controller.NeedsLegionZoneDisabledAsync().ConfigureAwait(false);43}44
45public async Task<Guid> GetActivePresetIdAsync()46{47var controller = await GetControllerAsync().ConfigureAwait(false);48return await controller.GetActivePresetIdAsync().ConfigureAwait(false);49}50
51public async Task<string?> GetActivePresetNameAsync()52{53var controller = await GetControllerAsync().ConfigureAwait(false);54return await controller.GetActivePresetNameAsync().ConfigureAwait(false);55}56
57public async Task<GodModeState> GetStateAsync()58{59var controller = await GetControllerAsync().ConfigureAwait(false);60return await controller.GetStateAsync().ConfigureAwait(false);61}62
63public async Task SetStateAsync(GodModeState state)64{65var controller = await GetControllerAsync().ConfigureAwait(false);66await controller.SetStateAsync(state).ConfigureAwait(false);67}68
69public async Task ApplyStateAsync()70{71var controller = await GetControllerAsync().ConfigureAwait(false);72await controller.ApplyStateAsync().ConfigureAwait(false);73}74
75public async Task<FanTable> GetDefaultFanTableAsync()76{77var controller = await GetControllerAsync().ConfigureAwait(false);78return await controller.GetDefaultFanTableAsync().ConfigureAwait(false);79}80
81public async Task<FanTable> GetMinimumFanTableAsync()82{83var controller = await GetControllerAsync().ConfigureAwait(false);84return await controller.GetMinimumFanTableAsync().ConfigureAwait(false);85}86
87public async Task<Dictionary<PowerModeState, GodModeDefaults>> GetDefaultsInOtherPowerModesAsync()88{89var controller = await GetControllerAsync().ConfigureAwait(false);90return await controller.GetDefaultsInOtherPowerModesAsync().ConfigureAwait(false);91}92
93public async Task RestoreDefaultsInOtherPowerModeAsync(PowerModeState state)94{95var controller = await GetControllerAsync().ConfigureAwait(false);96await controller.RestoreDefaultsInOtherPowerModeAsync(state).ConfigureAwait(false);97}98
99private async Task<IGodModeController> GetControllerAsync()100{101var mi = await Compatibility.GetMachineInformationAsync().ConfigureAwait(false);102
103if (mi.Properties.SupportsGodModeV1)104return _controllerV1;105
106if (mi.Properties.SupportsGodModeV2)107return _controllerV2;108
109throw new InvalidOperationException("No supported version found.");110}111}
112