LenovoLegionToolkit
46 строк · 1.5 Кб
1using System;2using System.Threading.Tasks;3using LenovoLegionToolkit.Lib.Controllers.GodMode;4using LenovoLegionToolkit.Lib.Features;5using LenovoLegionToolkit.Lib.Utils;6using Newtonsoft.Json;7
8namespace LenovoLegionToolkit.Lib.Automation.Steps;9
10public class GodModePresetAutomationStep : IAutomationStep11{
12private readonly PowerModeFeature _feature = IoCContainer.Resolve<PowerModeFeature>();13private readonly GodModeController _controller = IoCContainer.Resolve<GodModeController>();14
15public Guid PresetId { get; }16
17[JsonConstructor]18public GodModePresetAutomationStep(Guid presetId)19{20PresetId = presetId;21}22
23public async Task<bool> IsSupportedAsync()24{25var mi = await Compatibility.GetMachineInformationAsync().ConfigureAwait(false);26return mi.Properties.SupportsGodMode;27}28
29public Task<GodModeState> GetStateAsync() => _controller.GetStateAsync();30
31public async Task RunAsync(AutomationEnvironment _)32{33var state = await _controller.GetStateAsync().ConfigureAwait(false);34if (!state.Presets.ContainsKey(PresetId))35return;36
37var newState = state with { ActivePresetId = PresetId };38
39await _controller.SetStateAsync(newState).ConfigureAwait(false);40
41if (await _feature.GetStateAsync().ConfigureAwait(false) == PowerModeState.GodMode)42await _controller.ApplyStateAsync().ConfigureAwait(false);43}44
45public IAutomationStep DeepCopy() => new GodModePresetAutomationStep(PresetId);46}
47