mirror of
https://github.com/Ottermandias/Glamourer.git
synced 2025-12-12 10:17:23 +01:00
Improve reverting IPC a bit.
This commit is contained in:
parent
f4056d0b0c
commit
5b2cba451c
3 changed files with 53 additions and 12 deletions
|
|
@ -9,12 +9,14 @@ namespace Glamourer.Api;
|
||||||
|
|
||||||
public partial class GlamourerIpc
|
public partial class GlamourerIpc
|
||||||
{
|
{
|
||||||
public const string LabelRevert = "Glamourer.Revert";
|
public const string LabelRevert = "Glamourer.Revert";
|
||||||
public const string LabelRevertCharacter = "Glamourer.RevertCharacter";
|
public const string LabelRevertCharacter = "Glamourer.RevertCharacter";
|
||||||
public const string LabelRevertLock = "Glamourer.RevertLock";
|
public const string LabelRevertLock = "Glamourer.RevertLock";
|
||||||
public const string LabelRevertCharacterLock = "Glamourer.RevertCharacterLock";
|
public const string LabelRevertCharacterLock = "Glamourer.RevertCharacterLock";
|
||||||
public const string LabelUnlock = "Glamourer.Unlock";
|
public const string LabelRevertToAutomation = "Glamourer.RevertToAutomation";
|
||||||
public const string LabelRevertToAutomation = "Glamourer.RevertToAutomation";
|
public const string LabelRevertToAutomationCharacter = "Glamourer.RevertToAutomationCharacter";
|
||||||
|
public const string LabelUnlock = "Glamourer.Unlock";
|
||||||
|
public const string LabelUnlockName = "Glamourer.UnlockName";
|
||||||
|
|
||||||
private readonly ActionProvider<string> _revertProvider;
|
private readonly ActionProvider<string> _revertProvider;
|
||||||
private readonly ActionProvider<Character?> _revertCharacterProvider;
|
private readonly ActionProvider<Character?> _revertCharacterProvider;
|
||||||
|
|
@ -22,8 +24,10 @@ public partial class GlamourerIpc
|
||||||
private readonly ActionProvider<string, uint> _revertProviderLock;
|
private readonly ActionProvider<string, uint> _revertProviderLock;
|
||||||
private readonly ActionProvider<Character?, uint> _revertCharacterProviderLock;
|
private readonly ActionProvider<Character?, uint> _revertCharacterProviderLock;
|
||||||
|
|
||||||
private readonly FuncProvider<Character?, uint, bool> _revertToAutomationProvider;
|
private readonly FuncProvider<string, uint, bool> _revertToAutomationProvider;
|
||||||
|
private readonly FuncProvider<Character?, uint, bool> _revertToAutomationCharacterProvider;
|
||||||
|
|
||||||
|
private readonly FuncProvider<string, uint, bool> _unlockNameProvider;
|
||||||
private readonly FuncProvider<Character?, uint, bool> _unlockProvider;
|
private readonly FuncProvider<Character?, uint, bool> _unlockProvider;
|
||||||
|
|
||||||
public static ActionSubscriber<string> RevertSubscriber(DalamudPluginInterface pi)
|
public static ActionSubscriber<string> RevertSubscriber(DalamudPluginInterface pi)
|
||||||
|
|
@ -32,27 +36,45 @@ public partial class GlamourerIpc
|
||||||
public static ActionSubscriber<Character?> RevertCharacterSubscriber(DalamudPluginInterface pi)
|
public static ActionSubscriber<Character?> RevertCharacterSubscriber(DalamudPluginInterface pi)
|
||||||
=> new(pi, LabelRevertCharacter);
|
=> new(pi, LabelRevertCharacter);
|
||||||
|
|
||||||
|
public static ActionSubscriber<string> RevertLockSubscriber(DalamudPluginInterface pi)
|
||||||
|
=> new(pi, LabelRevertLock);
|
||||||
|
|
||||||
|
public static ActionSubscriber<Character?> RevertCharacterLockSubscriber(DalamudPluginInterface pi)
|
||||||
|
=> new(pi, LabelRevertCharacterLock);
|
||||||
|
|
||||||
|
public static FuncSubscriber<string, uint, bool> UnlockNameSubscriber(DalamudPluginInterface pi)
|
||||||
|
=> new(pi, LabelUnlockName);
|
||||||
|
|
||||||
public static FuncSubscriber<Character?, uint, bool> UnlockSubscriber(DalamudPluginInterface pi)
|
public static FuncSubscriber<Character?, uint, bool> UnlockSubscriber(DalamudPluginInterface pi)
|
||||||
=> new(pi, LabelUnlock);
|
=> new(pi, LabelUnlock);
|
||||||
|
|
||||||
public static FuncSubscriber<Character?, uint, bool> RevertToAutomationSubscriber(DalamudPluginInterface pi)
|
public static FuncSubscriber<string, uint, bool> RevertToAutomationSubscriber(DalamudPluginInterface pi)
|
||||||
=> new(pi, LabelRevertToAutomation);
|
=> new(pi, LabelRevertToAutomation);
|
||||||
|
|
||||||
|
public static FuncSubscriber<Character?, uint, bool> RevertToAutomationCharacterSubscriber(DalamudPluginInterface pi)
|
||||||
|
=> new(pi, LabelRevertToAutomationCharacter);
|
||||||
|
|
||||||
public void Revert(string characterName)
|
public void Revert(string characterName)
|
||||||
=> Revert(FindActors(characterName), 0);
|
=> Revert(FindActorsRevert(characterName), 0);
|
||||||
|
|
||||||
public void RevertCharacter(Character? character)
|
public void RevertCharacter(Character? character)
|
||||||
=> Revert(FindActors(character), 0);
|
=> Revert(FindActors(character), 0);
|
||||||
|
|
||||||
public void RevertLock(string characterName, uint lockCode)
|
public void RevertLock(string characterName, uint lockCode)
|
||||||
=> Revert(FindActors(characterName), lockCode);
|
=> Revert(FindActorsRevert(characterName), lockCode);
|
||||||
|
|
||||||
public void RevertCharacterLock(Character? character, uint lockCode)
|
public void RevertCharacterLock(Character? character, uint lockCode)
|
||||||
=> Revert(FindActors(character), lockCode);
|
=> Revert(FindActors(character), lockCode);
|
||||||
|
|
||||||
|
public bool Unlock(string characterName, uint lockCode)
|
||||||
|
=> Unlock(FindActorsRevert(characterName), lockCode);
|
||||||
|
|
||||||
public bool Unlock(Character? character, uint lockCode)
|
public bool Unlock(Character? character, uint lockCode)
|
||||||
=> Unlock(FindActors(character), lockCode);
|
=> Unlock(FindActors(character), lockCode);
|
||||||
|
|
||||||
|
public bool RevertToAutomation(string characterName, uint lockCode)
|
||||||
|
=> RevertToAutomation(FindActorsRevert(characterName), lockCode);
|
||||||
|
|
||||||
public bool RevertToAutomation(Character? character, uint lockCode)
|
public bool RevertToAutomation(Character? character, uint lockCode)
|
||||||
=> RevertToAutomation(FindActors(character), lockCode);
|
=> RevertToAutomation(FindActors(character), lockCode);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -67,8 +67,11 @@ public partial class GlamourerIpc : IDisposable
|
||||||
_revertCharacterProvider = new ActionProvider<Character?>(pi, LabelRevertCharacter, RevertCharacter);
|
_revertCharacterProvider = new ActionProvider<Character?>(pi, LabelRevertCharacter, RevertCharacter);
|
||||||
_revertProviderLock = new ActionProvider<string, uint>(pi, LabelRevertLock, RevertLock);
|
_revertProviderLock = new ActionProvider<string, uint>(pi, LabelRevertLock, RevertLock);
|
||||||
_revertCharacterProviderLock = new ActionProvider<Character?, uint>(pi, LabelRevertCharacterLock, RevertCharacterLock);
|
_revertCharacterProviderLock = new ActionProvider<Character?, uint>(pi, LabelRevertCharacterLock, RevertCharacterLock);
|
||||||
|
_unlockNameProvider = new FuncProvider<string, uint, bool>(pi, LabelUnlockName, Unlock);
|
||||||
_unlockProvider = new FuncProvider<Character?, uint, bool>(pi, LabelUnlock, Unlock);
|
_unlockProvider = new FuncProvider<Character?, uint, bool>(pi, LabelUnlock, Unlock);
|
||||||
_revertToAutomationProvider = new FuncProvider<Character?, uint, bool>(pi, LabelRevertToAutomation, RevertToAutomation);
|
_revertToAutomationProvider = new FuncProvider<string, uint, bool>(pi, LabelRevertToAutomation, RevertToAutomation);
|
||||||
|
_revertToAutomationCharacterProvider =
|
||||||
|
new FuncProvider<Character?, uint, bool>(pi, LabelRevertToAutomationCharacter, RevertToAutomation);
|
||||||
|
|
||||||
_stateChangedProvider = new EventProvider<StateChanged.Type, nint, Lazy<string>>(pi, LabelStateChanged);
|
_stateChangedProvider = new EventProvider<StateChanged.Type, nint, Lazy<string>>(pi, LabelStateChanged);
|
||||||
_gPoseChangedProvider = new EventProvider<bool>(pi, LabelGPoseChanged);
|
_gPoseChangedProvider = new EventProvider<bool>(pi, LabelGPoseChanged);
|
||||||
|
|
@ -102,8 +105,10 @@ public partial class GlamourerIpc : IDisposable
|
||||||
_revertCharacterProvider.Dispose();
|
_revertCharacterProvider.Dispose();
|
||||||
_revertProviderLock.Dispose();
|
_revertProviderLock.Dispose();
|
||||||
_revertCharacterProviderLock.Dispose();
|
_revertCharacterProviderLock.Dispose();
|
||||||
|
_unlockNameProvider.Dispose();
|
||||||
_unlockProvider.Dispose();
|
_unlockProvider.Dispose();
|
||||||
_revertToAutomationProvider.Dispose();
|
_revertToAutomationProvider.Dispose();
|
||||||
|
_revertToAutomationCharacterProvider.Dispose();
|
||||||
|
|
||||||
_stateChangedEvent.Unsubscribe(OnStateChanged);
|
_stateChangedEvent.Unsubscribe(OnStateChanged);
|
||||||
_stateChangedProvider.Dispose();
|
_stateChangedProvider.Dispose();
|
||||||
|
|
@ -121,6 +126,20 @@ public partial class GlamourerIpc : IDisposable
|
||||||
.Select(i => i.Key);
|
.Select(i => i.Key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private IEnumerable<ActorIdentifier> FindActorsRevert(string actorName)
|
||||||
|
{
|
||||||
|
if (actorName.Length == 0 || !ByteString.FromString(actorName, out var byteString))
|
||||||
|
yield break;
|
||||||
|
|
||||||
|
_objects.Update();
|
||||||
|
foreach (var id in _objects.Where(i => i.Key is { IsValid: true, Type: IdentifierType.Player } && i.Key.PlayerName == byteString)
|
||||||
|
.Select(i => i.Key))
|
||||||
|
yield return id;
|
||||||
|
|
||||||
|
foreach (var id in _stateManager.Keys.Where(s => s.Type is IdentifierType.Player && s.PlayerName == byteString))
|
||||||
|
yield return id;
|
||||||
|
}
|
||||||
|
|
||||||
private IEnumerable<ActorIdentifier> FindActors(Character? character)
|
private IEnumerable<ActorIdentifier> FindActors(Character? character)
|
||||||
{
|
{
|
||||||
var id = _actors.AwaitedService.FromObject(character, true, true, false);
|
var id = _actors.AwaitedService.FromObject(character, true, true, false);
|
||||||
|
|
|
||||||
|
|
@ -1692,7 +1692,7 @@ public unsafe class DebugTab : ITab
|
||||||
ImGuiUtil.DrawTableColumn(GlamourerIpc.LabelRevertToAutomation);
|
ImGuiUtil.DrawTableColumn(GlamourerIpc.LabelRevertToAutomation);
|
||||||
ImGui.TableNextColumn();
|
ImGui.TableNextColumn();
|
||||||
if (ImGui.Button("Revert##CustomizeCharacter"))
|
if (ImGui.Button("Revert##CustomizeCharacter"))
|
||||||
GlamourerIpc.RevertToAutomationSubscriber(_pluginInterface)
|
GlamourerIpc.RevertToAutomationCharacterSubscriber(_pluginInterface)
|
||||||
.Invoke(_objectManager.Objects[_gameObjectIndex] as Character, 1337);
|
.Invoke(_objectManager.Objects[_gameObjectIndex] as Character, 1337);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue