mirror of
https://github.com/Ottermandias/Glamourer.git
synced 2025-12-12 10:17:23 +01:00
Penumbra attachment made semi-optional and restartable.
This commit is contained in:
parent
dbccddcc39
commit
cd1a39ffe4
4 changed files with 78 additions and 45 deletions
|
|
@ -13,6 +13,7 @@ namespace Glamourer
|
|||
public bool FoldersFirst { get; set; } = false;
|
||||
public bool ColorDesigns { get; set; } = true;
|
||||
public bool ShowLocks { get; set; } = true;
|
||||
public bool AttachToPenumbra { get; set; } = true;
|
||||
|
||||
public uint CustomizationColor { get; set; } = DefaultCustomizationColor;
|
||||
public uint StateColor { get; set; } = DefaultStateColor;
|
||||
|
|
|
|||
|
|
@ -43,6 +43,27 @@ namespace Glamourer.Gui
|
|||
ImGui.SetTooltip(tooltip);
|
||||
}
|
||||
|
||||
private void DrawRestorePenumbraButton()
|
||||
{
|
||||
const string buttonLabel = "Re-Register Penumbra";
|
||||
if (!Glamourer.Config.AttachToPenumbra)
|
||||
{
|
||||
using var raii = new ImGuiRaii().PushStyle(ImGuiStyleVar.Alpha, 0.5f);
|
||||
ImGui.Button(buttonLabel);
|
||||
return;
|
||||
}
|
||||
|
||||
if (ImGui.Button(buttonLabel) && _plugin.GetPenumbra())
|
||||
{
|
||||
_plugin.UnregisterFunctions();
|
||||
_plugin.RegisterFunctions();
|
||||
}
|
||||
|
||||
if (ImGui.IsItemHovered())
|
||||
ImGui.SetTooltip(
|
||||
"If Penumbra did not register the functions for some reason, pressing this button might help restore functionality.");
|
||||
}
|
||||
|
||||
private void DrawConfigTab()
|
||||
{
|
||||
using var raii = new ImGuiRaii();
|
||||
|
|
@ -59,6 +80,24 @@ namespace Glamourer.Gui
|
|||
v => cfg.ColorDesigns = v);
|
||||
DrawConfigCheckMark("Show Locks", "Write-protected Designs show a lock besides their name in the selector.", cfg.ShowLocks,
|
||||
v => cfg.ShowLocks = v);
|
||||
DrawConfigCheckMark("Attach to Penumbra",
|
||||
"Allows you to right-click items in the Changed Items tab of a mod in Penumbra to apply them to your player character.",
|
||||
cfg.AttachToPenumbra,
|
||||
v =>
|
||||
{
|
||||
cfg.AttachToPenumbra = v;
|
||||
if (v)
|
||||
{
|
||||
if (_plugin.GetPenumbra())
|
||||
_plugin.RegisterFunctions();
|
||||
}
|
||||
else
|
||||
{
|
||||
_plugin.UnregisterFunctions();
|
||||
}
|
||||
});
|
||||
ImGui.SameLine();
|
||||
DrawRestorePenumbraButton();
|
||||
|
||||
ImGui.Dummy(Vector2.UnitY * ImGui.GetTextLineHeightWithSpacing() / 2);
|
||||
|
||||
|
|
|
|||
|
|
@ -387,13 +387,15 @@ namespace Glamourer.Gui
|
|||
case CharaMakeParams.MenuType.ListSelector: return DrawListSelector(set.OptionName[(int) id], "", ref customization, id, set);
|
||||
case CharaMakeParams.MenuType.IconSelector: return DrawIconSelector(set.OptionName[(int) id], "", ref customization, id, set);
|
||||
case CharaMakeParams.MenuType.MultiIconSelector: return DrawMultiSelector(ref customization, set);
|
||||
case CharaMakeParams.MenuType.Percentage: return DrawPercentageSelector(set.OptionName[(int)id], "", ref customization, id, set);
|
||||
case CharaMakeParams.MenuType.Percentage:
|
||||
return DrawPercentageSelector(set.OptionName[(int) id], "", ref customization, id, set);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private static readonly CustomizationId[] AllCustomizations = (CustomizationId[]) Enum.GetValues(typeof(CustomizationId));
|
||||
|
||||
private bool DrawCustomization(ref ActorCustomization custom)
|
||||
{
|
||||
if (!ImGui.CollapsingHeader("Character Customization"))
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ namespace Glamourer
|
|||
}
|
||||
}
|
||||
|
||||
private void RegisterFunctions()
|
||||
public void RegisterFunctions()
|
||||
{
|
||||
if (Penumbra == null || !Penumbra.Valid)
|
||||
return;
|
||||
|
|
@ -84,7 +84,7 @@ namespace Glamourer
|
|||
Penumbra!.ChangedItemClicked += PenumbraRightClick;
|
||||
}
|
||||
|
||||
private void UnregisterFunctions()
|
||||
public void UnregisterFunctions()
|
||||
{
|
||||
if (Penumbra == null || !Penumbra.Valid)
|
||||
return;
|
||||
|
|
@ -111,7 +111,7 @@ namespace Glamourer
|
|||
_plugins = pluginsList ?? throw new Exception("Could not obtain Dalamud.");
|
||||
}
|
||||
|
||||
private bool GetPenumbra()
|
||||
public bool GetPenumbra()
|
||||
{
|
||||
if (Penumbra?.Valid ?? false)
|
||||
return true;
|
||||
|
|
@ -123,14 +123,9 @@ namespace Glamourer
|
|||
var penumbra = (IPenumbraApiBase?) plugin?.GetType().GetProperty("Api", BindingFlags.Instance | BindingFlags.Public)
|
||||
?.GetValue(plugin);
|
||||
if (penumbra != null && penumbra.Valid && penumbra.ApiVersion >= RequiredPenumbraShareVersion)
|
||||
{
|
||||
Penumbra = (IPenumbraApi) penumbra!;
|
||||
RegisterFunctions();
|
||||
}
|
||||
else
|
||||
{
|
||||
Penumbra = null;
|
||||
}
|
||||
|
||||
return Penumbra != null;
|
||||
}
|
||||
|
|
@ -144,7 +139,8 @@ namespace Glamourer
|
|||
SetDalamud(PluginInterface);
|
||||
SetPlugins(PluginInterface);
|
||||
Designs = new DesignManager(PluginInterface);
|
||||
GetPenumbra();
|
||||
if (GetPenumbra() && Config.AttachToPenumbra)
|
||||
RegisterFunctions();
|
||||
PlayerWatcher = PlayerWatchFactory.Create(PluginInterface);
|
||||
|
||||
PluginInterface.CommandManager.AddHandler("/glamourer", new CommandInfo(OnGlamourer)
|
||||
|
|
@ -181,7 +177,6 @@ namespace Glamourer
|
|||
};
|
||||
}
|
||||
|
||||
|
||||
public void CopyToClipboard(Actor actor)
|
||||
{
|
||||
var save = new CharacterSave();
|
||||
|
|
@ -193,7 +188,6 @@ namespace Glamourer
|
|||
{
|
||||
CharacterSave? save = null;
|
||||
if (target.ToLowerInvariant() == "clipboard")
|
||||
{
|
||||
try
|
||||
{
|
||||
save = CharacterSave.FromString(Clipboard.GetText());
|
||||
|
|
@ -202,15 +196,10 @@ namespace Glamourer
|
|||
{
|
||||
PluginInterface.Framework.Gui.Chat.PrintError("Clipboard does not contain a valid customization string.");
|
||||
}
|
||||
}
|
||||
else if (!Designs.FileSystem.Find(target, out var child) || child is not Design d)
|
||||
{
|
||||
PluginInterface.Framework.Gui.Chat.PrintError("The given path to a saved design does not exist or does not point to a design.");
|
||||
}
|
||||
else
|
||||
{
|
||||
save = d.Data;
|
||||
}
|
||||
|
||||
save?.Apply(actor);
|
||||
UpdateActors(actor);
|
||||
|
|
@ -280,6 +269,7 @@ namespace Glamourer
|
|||
PluginInterface.Framework.Gui.Chat.Print("Applying requires a name for the save to be applied or 'clipboard'.");
|
||||
return;
|
||||
}
|
||||
|
||||
ApplyCommand(actor, split[2]);
|
||||
|
||||
return;
|
||||
|
|
@ -291,6 +281,7 @@ namespace Glamourer
|
|||
PluginInterface.Framework.Gui.Chat.Print("Saving requires a name for the save.");
|
||||
return;
|
||||
}
|
||||
|
||||
SaveCommand(actor, split[2]);
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue