using Dalamud.Plugin;
using Glamourer.Api.Api;
using Glamourer.Api.Enums;
using Glamourer.Api.Helpers;
using Newtonsoft.Json.Linq;
namespace Glamourer.Api.IpcSubscribers;
///
public sealed class GetState(IDalamudPluginInterface pi)
: FuncSubscriber(pi, Label)
{
/// The label.
public const string Label = $"Glamourer.{nameof(GetState)}";
///
public new (GlamourerApiEc, JObject?) Invoke(int objectIndex, uint key = 0)
{
var (ec, data) = base.Invoke(objectIndex, key);
return ((GlamourerApiEc)ec, data);
}
/// Create a provider.
public static FuncProvider Provider(IDalamudPluginInterface pi, IGlamourerApiState api)
=> new(pi, Label, (a, b) =>
{
var (ec, data) = api.GetState(a, b);
return ((int)ec, data);
});
}
///
public sealed class GetStateName(IDalamudPluginInterface pi)
: FuncSubscriber(pi, Label)
{
/// The label.
public const string Label = $"Glamourer.{nameof(GetStateName)}";
///
public new (GlamourerApiEc, JObject?) Invoke(string objectName, uint key = 0)
{
var (ec, data) = base.Invoke(objectName, key);
return ((GlamourerApiEc)ec, data);
}
/// Create a provider.
public static FuncProvider Provider(IDalamudPluginInterface pi, IGlamourerApiState api)
=> new(pi, Label, (i, k) =>
{
var (ec, data) = api.GetStateName(i, k);
return ((int)ec, data);
});
}
///
public sealed class GetStateBase64(IDalamudPluginInterface pi)
: FuncSubscriber(pi, Label)
{
/// The label.
public const string Label = $"Glamourer.{nameof(GetStateBase64)}";
///
public new (GlamourerApiEc, string?) Invoke(int objectIndex, uint key = 0)
{
var (ec, data) = base.Invoke(objectIndex, key);
return ((GlamourerApiEc)ec, data);
}
/// Create a provider.
public static FuncProvider Provider(IDalamudPluginInterface pi, IGlamourerApiState api)
=> new(pi, Label, (a, b) =>
{
var (ec, data) = api.GetStateBase64(a, b);
return ((int)ec, data);
});
}
///
public sealed class GetStateBase64Name(IDalamudPluginInterface pi)
: FuncSubscriber(pi, Label)
{
/// The label.
public const string Label = $"Glamourer.{nameof(GetStateBase64Name)}";
///
public new (GlamourerApiEc, string?) Invoke(string objectName, uint key = 0)
{
var (ec, data) = base.Invoke(objectName, key);
return ((GlamourerApiEc)ec, data);
}
/// Create a provider.
public static FuncProvider Provider(IDalamudPluginInterface pi, IGlamourerApiState api)
=> new(pi, Label, (i, k) =>
{
var (ec, data) = api.GetStateBase64Name(i, k);
return ((int)ec, data);
});
}
///
public sealed class ApplyState(IDalamudPluginInterface pi)
: FuncSubscriber