Fix some shutdown logic

This commit is contained in:
Liza 2024-03-10 16:38:09 +01:00
parent 3c7e5fe8c9
commit c512934ba2
Signed by: liza
GPG Key ID: 7199F8D727D55F67
2 changed files with 18 additions and 9 deletions

View File

@ -1,9 +1,12 @@
using System; using System;
using System.Diagnostics;
using System.Reflection; using System.Reflection;
using System.Windows.Forms;
using AutoRetainerAPI; using AutoRetainerAPI;
using Dalamud.Plugin; using Dalamud.Plugin;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using ECommons; using ECommons;
using FFXIVClientStructs.FFXIV.Client.System.Framework;
using LLib; using LLib;
namespace AutoShutdown; namespace AutoShutdown;
@ -15,7 +18,8 @@ public class Plogon : IDalamudPlugin
private readonly IPluginLog _pluginLog; private readonly IPluginLog _pluginLog;
private readonly IClientState _clientState; private readonly IClientState _clientState;
public Plogon(DalamudPluginInterface pluginInterface, IFramework framework, IPluginLog pluginLog, IClientState clientState) public Plogon(DalamudPluginInterface pluginInterface, IFramework framework, IPluginLog pluginLog,
IClientState clientState)
{ {
ECommonsMain.Init(pluginInterface, this); ECommonsMain.Init(pluginInterface, this);
_autoRetainerApi = new AutoRetainerApi(); _autoRetainerApi = new AutoRetainerApi();
@ -23,13 +27,13 @@ public class Plogon : IDalamudPlugin
_pluginLog = pluginLog; _pluginLog = pluginLog;
_clientState = clientState; _clientState = clientState;
_clientState.Login += SetupShutdown; _clientState.Logout += SetupShutdown;
framework.RunOnTick(SetupShutdown, TimeSpan.FromSeconds(5)); framework.RunOnTick(() => SetupShutdown(), TimeSpan.FromSeconds(10));
} }
private long StartedAt { get; } = Environment.TickCount64; private long StartedAt { get; } = Environment.TickCount64;
private long ShutdownAt => StartedAt + TimeSpan.FromDays(2).Ticks; private long ShutdownAt => StartedAt + (long)TimeSpan.FromDays(2).TotalMilliseconds;
private void SetupShutdown() private void SetupShutdown()
{ {
@ -43,20 +47,25 @@ public class Plogon : IDalamudPlugin
var currentShutdownAt = (long?)shutdownAt.GetValue(null) ?? 0; var currentShutdownAt = (long?)shutdownAt.GetValue(null) ?? 0;
if (currentShutdownAt == 0) if (currentShutdownAt == 0)
{ {
_pluginLog.Information($"Setting shutdown date to {new DateTime(ShutdownAt)}"); _pluginLog.Information(
$"Setting shutdown date to {new DateTime(TimeSpan.FromMilliseconds(ShutdownAt).Ticks)}");
shutdownAt.SetValue(null, ShutdownAt); shutdownAt.SetValue(null, ShutdownAt);
forceShutdownAt.SetValue(null, ShutdownAt + TimeSpan.FromMinutes(10).Ticks); forceShutdownAt.SetValue(null, ShutdownAt + (long)TimeSpan.FromMinutes(10).TotalMilliseconds);
} }
else else
{ {
_pluginLog.Information($"Shutdown is already set to {new DateTime(currentShutdownAt)}"); _pluginLog.Information(
$"Shutdown is already set to {new DateTime(TimeSpan.FromMilliseconds(currentShutdownAt).Ticks)}");
} }
} }
// move to background using alt+esc
SendKeys.SendWait("%({esc})");
} }
public void Dispose() public void Dispose()
{ {
_clientState.Login -= SetupShutdown; _clientState.Logout -= SetupShutdown;
_reflector.Dispose(); _reflector.Dispose();
_autoRetainerApi.Dispose(); _autoRetainerApi.Dispose();
ECommonsMain.Dispose(); ECommonsMain.Dispose();