52 lines
1.8 KiB
C#
52 lines
1.8 KiB
C#
using System;
|
|
using Dalamud.Game.Addon.Lifecycle;
|
|
using Dalamud.Game.Addon.Lifecycle.AddonArgTypes;
|
|
using Dalamud.Plugin.Services;
|
|
using FFXIVClientStructs.FFXIV.Component.GUI;
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
namespace Questionable.Controller.GameUi;
|
|
|
|
internal sealed class CreditsController : IDisposable
|
|
{
|
|
private readonly IAddonLifecycle _addonLifecycle;
|
|
|
|
private readonly ILogger<CreditsController> _logger;
|
|
|
|
public CreditsController(IAddonLifecycle addonLifecycle, ILogger<CreditsController> logger)
|
|
{
|
|
_addonLifecycle = addonLifecycle;
|
|
_logger = logger;
|
|
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "CreditScroll", CreditScrollPostSetup);
|
|
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "Credit", CreditPostSetup);
|
|
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "CreditPlayer", CreditPlayerPostSetup);
|
|
}
|
|
|
|
private unsafe void CreditScrollPostSetup(AddonEvent type, AddonArgs args)
|
|
{
|
|
_logger.LogInformation("Closing Credits sequence");
|
|
AtkUnitBase* address = (AtkUnitBase*)args.Addon.Address;
|
|
address->FireCallbackInt(-2);
|
|
}
|
|
|
|
private unsafe void CreditPostSetup(AddonEvent type, AddonArgs args)
|
|
{
|
|
_logger.LogInformation("Closing Credits sequence");
|
|
AtkUnitBase* address = (AtkUnitBase*)args.Addon.Address;
|
|
address->FireCallbackInt(-2);
|
|
}
|
|
|
|
private unsafe void CreditPlayerPostSetup(AddonEvent type, AddonArgs args)
|
|
{
|
|
_logger.LogInformation("Closing CreditPlayer");
|
|
AtkUnitBase* address = (AtkUnitBase*)args.Addon.Address;
|
|
address->Close(fireCallback: true);
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "CreditPlayer", CreditPlayerPostSetup);
|
|
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "Credit", CreditPostSetup);
|
|
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "CreditScroll", CreditScrollPostSetup);
|
|
}
|
|
}
|