LenovoLegionToolkit

Форк
0
46 строк · 1.5 Кб
1
using System;
2
using System.Threading.Tasks;
3
using LenovoLegionToolkit.Lib.Controllers.GodMode;
4
using LenovoLegionToolkit.Lib.Features;
5
using LenovoLegionToolkit.Lib.Utils;
6
using Newtonsoft.Json;
7

8
namespace LenovoLegionToolkit.Lib.Automation.Steps;
9

10
public class GodModePresetAutomationStep : IAutomationStep
11
{
12
    private readonly PowerModeFeature _feature = IoCContainer.Resolve<PowerModeFeature>();
13
    private readonly GodModeController _controller = IoCContainer.Resolve<GodModeController>();
14

15
    public Guid PresetId { get; }
16

17
    [JsonConstructor]
18
    public GodModePresetAutomationStep(Guid presetId)
19
    {
20
        PresetId = presetId;
21
    }
22

23
    public async Task<bool> IsSupportedAsync()
24
    {
25
        var mi = await Compatibility.GetMachineInformationAsync().ConfigureAwait(false);
26
        return mi.Properties.SupportsGodMode;
27
    }
28

29
    public Task<GodModeState> GetStateAsync() => _controller.GetStateAsync();
30

31
    public async Task RunAsync(AutomationEnvironment _)
32
    {
33
        var state = await _controller.GetStateAsync().ConfigureAwait(false);
34
        if (!state.Presets.ContainsKey(PresetId))
35
            return;
36

37
        var newState = state with { ActivePresetId = PresetId };
38

39
        await _controller.SetStateAsync(newState).ConfigureAwait(false);
40

41
        if (await _feature.GetStateAsync().ConfigureAwait(false) == PowerModeState.GodMode)
42
            await _controller.ApplyStateAsync().ConfigureAwait(false);
43
    }
44

45
    public IAutomationStep DeepCopy() => new GodModePresetAutomationStep(PresetId);
46
}
47

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.