Add 'compact' turn-in UI

This commit is contained in:
Liza 2024-12-22 16:07:55 +01:00
parent 03aec55fbe
commit 0cbde57b79
Signed by: liza
GPG Key ID: 2C41B84815CF6445
4 changed files with 90 additions and 48 deletions

View File

@ -29,7 +29,7 @@ internal sealed class Configuration : IPluginConfiguration
public bool UncapFrameRate { get; set; }
public VirtualKey QuickTurnInKey { get; set; } = VirtualKey.SHIFT;
public WindowConfig TurnInWindowConfig { get; } = new();
public MinimizableWindowConfig TurnInWindowConfig { get; } = new();
public WindowConfig ConfigWindowConfig { get; } = new();
internal sealed class PurchaseOption
@ -84,4 +84,9 @@ internal sealed class Configuration : IPluginConfiguration
Warning,
DisableTurnIn,
}
internal sealed class MinimizableWindowConfig : WindowConfig
{
public bool IsMinimized { get; set; }
}
}

View File

@ -1,6 +1,6 @@
<Project Sdk="Dalamud.NET.Sdk/11.0.0">
<PropertyGroup>
<Version>6.2</Version>
<Version>6.3</Version>
<OutputPath>dist</OutputPath>
</PropertyGroup>

View File

@ -10,6 +10,7 @@ using Dalamud.Interface.Colors;
using Dalamud.Interface.Components;
using Dalamud.Interface.Textures.TextureWraps;
using Dalamud.Interface.Utility;
using Dalamud.Interface.Utility.Raii;
using Dalamud.Plugin;
using Dalamud.Plugin.Services;
using Deliveroo.GameData;
@ -21,7 +22,7 @@ using LLib.ImGui;
namespace Deliveroo.Windows;
internal sealed class TurnInWindow : LWindow, IPersistableWindowConfig
internal sealed class TurnInWindow : LWindow, IPersistableWindowConfig<Configuration.MinimizableWindowConfig>
{
private static readonly IReadOnlyList<InventoryType> InventoryTypes = new[]
{
@ -55,6 +56,7 @@ internal sealed class TurnInWindow : LWindow, IPersistableWindowConfig
private readonly IconCache _iconCache;
private readonly IKeyState _keyState;
private readonly GameFunctions _gameFunctions;
private readonly TitleBarButton _minimizeButton;
private bool _state;
private Guid? _draggedItem;
@ -88,6 +90,20 @@ internal sealed class TurnInWindow : LWindow, IPersistableWindowConfig
ShowCloseButton = false;
AllowClickthrough = false;
_minimizeButton = new TitleBarButton
{
Icon = FontAwesomeIcon.Minus,
Priority = int.MinValue,
IconOffset = new Vector2(1.5f, 1),
Click = _ =>
{
IsMinimized = !IsMinimized;
_minimizeButton!.Icon = IsMinimized ? FontAwesomeIcon.WindowMaximize : FontAwesomeIcon.Minus;
},
AvailableClickthrough = true,
};
TitleBarButtons.Insert(0, _minimizeButton);
TitleBarButtons.Add(new TitleBarButton
{
Icon = FontAwesomeIcon.Cog,
@ -103,7 +119,17 @@ internal sealed class TurnInWindow : LWindow, IPersistableWindowConfig
});
}
public WindowConfig WindowConfig => _configuration.TurnInWindowConfig;
public Configuration.MinimizableWindowConfig WindowConfig => _configuration.TurnInWindowConfig;
private bool IsMinimized
{
get => WindowConfig.IsMinimized;
set
{
WindowConfig.IsMinimized = value;
SaveWindowConfig();
}
}
public bool State
{
@ -218,14 +244,17 @@ internal sealed class TurnInWindow : LWindow, IPersistableWindowConfig
}
float indentSize = ImGui.GetFrameHeight() + ImGui.GetStyle().ItemInnerSpacing.X;
ImGui.Indent(indentSize);
if (!string.IsNullOrEmpty(Error))
{
using (ImRaii.PushIndent(indentSize))
ImGui.TextColored(ImGuiColors.DalamudRed, Error);
}
else
{
if (_configuration.BehaviorOnOtherWorld == Configuration.EBehaviorOnOtherWorld.Warning && !IsOnHomeWorld)
using (ImRaii.PushIndent(indentSize))
{
if (_configuration.BehaviorOnOtherWorld == Configuration.EBehaviorOnOtherWorld.Warning &&
!IsOnHomeWorld)
{
ImGui.TextColored(ImGuiColors.DalamudRed,
"You are not on your home world and will not earn FC points.");
@ -249,7 +278,8 @@ internal sealed class TurnInWindow : LWindow, IPersistableWindowConfig
ImGui.BeginDisabled(_condition[ConditionFlag.OccupiedInQuestEvent] ||
_condition[ConditionFlag.Casting] ||
agentInventoryContext == null);
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Bolt, "Use Priority Seal Allowance (15%)"))
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Bolt,
"Use Priority Seal Allowance (15%)"))
{
agentInventoryContext->UseItem(ItemIds.PrioritySealAllowance);
}
@ -257,17 +287,16 @@ internal sealed class TurnInWindow : LWindow, IPersistableWindowConfig
ImGui.EndDisabled();
}
}
ImGui.Unindent(indentSize);
ImGui.Separator();
ImGui.BeginDisabled(state);
DrawItemsToBuy(grandCompany);
ImGui.EndDisabled();
}
if (!IsMinimized)
{
ImGui.Separator();
using (ImRaii.Disabled(state))
DrawItemsToBuy(grandCompany);
}
}
if (_configuration.QuickTurnInKey != VirtualKey.NO_KEY)
{
var key = _configuration.QuickTurnInKey switch
@ -278,15 +307,23 @@ internal sealed class TurnInWindow : LWindow, IPersistableWindowConfig
_ => _configuration.QuickTurnInKey.ToString()
};
if (!State && _keyState[_configuration.QuickTurnInKey])
ImGui.TextColored(ImGuiColors.HealerGreen, "Click an item to turn it in without confirmation");
else
ImGui.Text($"Hold '{key}' when clicking an item to turn it in without confirmation.");
{
ImGui.Separator();
ImGui.TextColored(ImGuiColors.HealerGreen, "Click an item to turn it in without confirmation");
}
else if (!IsMinimized)
{
ImGui.Separator();
ImGui.Text($"Hold '{key}' when clicking an item to turn it in without confirmation.");
}
}
if (!IsMinimized)
{
ImGui.Separator();
ImGui.Text($"Debug (State): {_plugin.CurrentStage}");
}
}
private unsafe void DrawNextRankPrequesites()
{

2
LLib

@ -1 +1 @@
Subproject commit 2d214b133847130d3382c0baaff26b32332a8f2d
Subproject commit b581e2ea2a61f44ed3f0cb4f6ea8cc1595525544