mirror of
https://github.com/goatcorp/Dalamud.git
synced 2026-01-02 05:43:40 +01:00
Prototype, untested
This commit is contained in:
parent
fc2042ea4f
commit
4dabd07131
5 changed files with 393 additions and 46 deletions
|
|
@ -1,5 +1,7 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
using Dalamud.Game.AddonLifecycle;
|
||||
using Dalamud.Memory;
|
||||
using FFXIVClientStructs.FFXIV.Component.GUI;
|
||||
|
||||
|
|
@ -11,19 +13,73 @@ namespace Dalamud.Plugin.Services;
|
|||
public interface IAddonLifecycle
|
||||
{
|
||||
/// <summary>
|
||||
/// Event that fires before an addon is being setup.
|
||||
/// Delegate for receiving addon lifecycle event messages.
|
||||
/// </summary>
|
||||
public event Action<AddonArgs> AddonPreSetup;
|
||||
/// <param name="eventType">The event type that triggered the message.</param>
|
||||
/// <param name="addonInfo">Information about what addon triggered the message.</param>
|
||||
public delegate void AddonEventDelegate(AddonEvent eventType, AddonArgs addonInfo);
|
||||
|
||||
/// <summary>
|
||||
/// Event that fires after an addon is done being setup.
|
||||
/// Register a listener that will trigger on the specified event and any of the specified addons.
|
||||
/// </summary>
|
||||
public event Action<AddonArgs> AddonPostSetup;
|
||||
/// <param name="eventType">Event type to trigger on.</param>
|
||||
/// <param name="addonNames">Addon names that will trigger the handler to be invoked.</param>
|
||||
/// <param name="handler">The handler to invoke.</param>
|
||||
void RegisterListener(AddonEvent eventType, IEnumerable<string> addonNames, AddonEventDelegate handler);
|
||||
|
||||
/// <summary>
|
||||
/// Event that fires before an addon is being finalized.
|
||||
/// Register a listener that will trigger on the specified event only for the specified addon.
|
||||
/// </summary>
|
||||
public event Action<AddonArgs> AddonPreFinalize;
|
||||
/// <param name="eventType">Event type to trigger on.</param>
|
||||
/// <param name="addonName">The addon name that will trigger the handler to be invoked.</param>
|
||||
/// <param name="handler">The handler to invoke.</param>
|
||||
void RegisterListener(AddonEvent eventType, string addonName, AddonEventDelegate handler);
|
||||
|
||||
/// <summary>
|
||||
/// Register a listener that will trigger on the specified event for any addon.
|
||||
/// </summary>
|
||||
/// <param name="eventType">Event type to trigger on.</param>
|
||||
/// <param name="handler">The handler to invoke.</param>
|
||||
void RegisterListener(AddonEvent eventType, AddonEventDelegate handler);
|
||||
|
||||
/// <summary>
|
||||
/// Unregister listener from specified event type and specified addon names.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// If a specific handler is not provided, all handlers for the event type and addon names will be unregistered.
|
||||
/// </remarks>
|
||||
/// <param name="eventType">Event type to deregister.</param>
|
||||
/// <param name="addonNames">Addon names to deregister.</param>
|
||||
/// <param name="handler">Optional specific handler to remove.</param>
|
||||
void UnregisterListener(AddonEvent eventType, IEnumerable<string> addonNames, [Optional] AddonEventDelegate handler);
|
||||
|
||||
/// <summary>
|
||||
/// Unregister all listeners for the specified event type and addon name.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// If a specific handler is not provided, all handlers for the event type and addons will be unregistered.
|
||||
/// </remarks>
|
||||
/// <param name="eventType">Event type to deregister.</param>
|
||||
/// <param name="addonName">Addon name to deregister.</param>
|
||||
/// <param name="handler">Optional specific handler to remove.</param>
|
||||
void UnregisterListener(AddonEvent eventType, string addonName, [Optional] AddonEventDelegate handler);
|
||||
|
||||
/// <summary>
|
||||
/// Unregister an event type handler.<br/>This will only remove a handler that is added via <see cref="RegisterListener(AddonEvent, AddonEventDelegate)"/>.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// If a specific handler is not provided, all handlers for the event type and addons will be unregistered.
|
||||
/// </remarks>
|
||||
/// <param name="eventType">Event type to deregister.</param>
|
||||
/// <param name="handler">Optional specific handler to remove.</param>
|
||||
void UnregisterListener(AddonEvent eventType, [Optional] AddonEventDelegate handler);
|
||||
|
||||
/// <summary>
|
||||
/// Unregister all events that use the specified handlers.
|
||||
/// </summary>
|
||||
/// <param name="handler">Event handler to remove.</param>
|
||||
/// <param name="handlers">Additional handlers to remove.</param>
|
||||
void UnregisterListener(AddonEventDelegate handler, params AddonEventDelegate[] handlers);
|
||||
|
||||
/// <summary>
|
||||
/// Addon argument data for use in event subscribers.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue