using Dalamud.Plugin;
using Penumbra.Api.Api;
using Penumbra.Api.Enums;
using Penumbra.Api.Helpers;
namespace Penumbra.Api.IpcSubscribers;
///
public sealed class RedrawObject(IDalamudPluginInterface pi)
: ActionSubscriber(pi, Label)
{
/// The label.
public const string Label = $"Penumbra.{nameof(RedrawObject)}.V5";
///
public void Invoke(int gameObjectIndex, RedrawType setting = RedrawType.Redraw)
=> base.Invoke(gameObjectIndex, (int)setting);
/// Create a provider.
public static ActionProvider Provider(IDalamudPluginInterface pi, IPenumbraApiRedraw api)
=> new(pi, Label, (a, b) => api.RedrawObject(a, (RedrawType)b));
}
///
public sealed class RedrawAll(IDalamudPluginInterface pi)
: ActionSubscriber(pi, Label)
{
/// The label.
public const string Label = $"Penumbra.{nameof(RedrawAll)}.V5";
///
public void Invoke(RedrawType setting = RedrawType.Redraw)
=> base.Invoke((int)setting);
/// Create a provider.
public static ActionProvider Provider(IDalamudPluginInterface pi, IPenumbraApiRedraw api)
=> new(pi, Label, a => api.RedrawAll((RedrawType)a));
}
///
public static class GameObjectRedrawn
{
/// The label.
public const string Label = $"Penumbra.{nameof(GameObjectRedrawn)}";
/// Create a new event subscriber.
public static EventSubscriber Subscriber(IDalamudPluginInterface pi, params Action[] actions)
=> new(pi, Label, actions);
/// Create a provider.
public static EventProvider Provider(IDalamudPluginInterface pi, IPenumbraApiRedraw api)
=> new(pi, Label, t => api.GameObjectRedrawn += t.Invoke, t => api.GameObjectRedrawn -= t.Invoke);
}