(2.x) Improve chat feedback
This commit is contained in:
parent
fe29867929
commit
fbba9244a6
@ -65,7 +65,6 @@
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
|
||||
<Target Name="RenameLatestZip" AfterTargets="PackagePlugin">
|
||||
<Exec Command="rename $(OutDir)$(AssemblyName)\latest.zip $(AssemblyName)-$(Version).zip"/>
|
||||
</Target>
|
||||
|
@ -6,6 +6,9 @@ using ARControl.GameData;
|
||||
using ARControl.Windows;
|
||||
using AutoRetainerAPI;
|
||||
using Dalamud.Game.Command;
|
||||
using Dalamud.Game.Text;
|
||||
using Dalamud.Game.Text.SeStringHandling;
|
||||
using Dalamud.Game.Text.SeStringHandling.Payloads;
|
||||
using Dalamud.Interface;
|
||||
using Dalamud.Interface.Windowing;
|
||||
using Dalamud.Plugin;
|
||||
@ -51,7 +54,8 @@ public sealed partial class AutoRetainerControlPlugin : IDalamudPlugin
|
||||
_iconCache = new IconCache(textureProvider);
|
||||
_ventureResolver = new VentureResolver(_gameCache, _pluginLog);
|
||||
_configWindow =
|
||||
new ConfigWindow(_pluginInterface, _configuration, _gameCache, _clientState, _commandManager, _iconCache, _pluginLog)
|
||||
new ConfigWindow(_pluginInterface, _configuration, _gameCache, _clientState, _commandManager, _iconCache,
|
||||
_pluginLog)
|
||||
{ IsOpen = true };
|
||||
_windowSystem.AddWindow(_configWindow);
|
||||
|
||||
@ -161,7 +165,9 @@ public sealed partial class AutoRetainerControlPlugin : IDalamudPlugin
|
||||
{
|
||||
QueuedItem = x,
|
||||
InventoryCount = inventoryManager->GetInventoryItemCount(x.ItemId) +
|
||||
(venturesInProgress.TryGetValue(x.ItemId, out int inProgress) ? inProgress : 0),
|
||||
(venturesInProgress.TryGetValue(x.ItemId, out int inProgress)
|
||||
? inProgress
|
||||
: 0),
|
||||
})
|
||||
.Where(x => x.InventoryCount <= x.RequestedCount)
|
||||
.ToList()
|
||||
@ -188,7 +194,25 @@ public sealed partial class AutoRetainerControlPlugin : IDalamudPlugin
|
||||
else
|
||||
{
|
||||
_chatGui.Print(
|
||||
$"[ARC] Sending retainer {retainerName} to collect {reward.Quantity}x {venture.Name}.");
|
||||
new SeString(new UIForegroundPayload(579))
|
||||
.Append(SeIconChar.Collectible.ToIconString())
|
||||
.Append(new UIForegroundPayload(0))
|
||||
.Append($" Sending retainer ")
|
||||
.Append(new UIForegroundPayload(1))
|
||||
.Append(retainerName)
|
||||
.Append(new UIForegroundPayload(0))
|
||||
.Append(" to collect ")
|
||||
.Append(new UIForegroundPayload(1))
|
||||
.Append($"{reward.Quantity}x ")
|
||||
.Append(new ItemPayload(venture.ItemId))
|
||||
.Append(venture.Name)
|
||||
.Append(RawPayload.LinkTerminator)
|
||||
.Append(new UIForegroundPayload(0))
|
||||
.Append(" for ")
|
||||
.Append(new UIForegroundPayload(1))
|
||||
.Append($"{list.Name} {list.GetIcon()}")
|
||||
.Append(new UIForegroundPayload(0))
|
||||
.Append("."));
|
||||
_pluginLog.Information(
|
||||
$"Setting AR to use venture {venture.RowId}, which should retrieve {reward.Quantity}x {venture.Name}");
|
||||
|
||||
@ -209,13 +233,24 @@ public sealed partial class AutoRetainerControlPlugin : IDalamudPlugin
|
||||
return venture.RowId;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// fallback: managed but no venture found
|
||||
if (retainer.LastVenture != QuickVentureId)
|
||||
{
|
||||
_chatGui.Print($"[ARC] No tasks left for retainer {retainerName}, sending to Quick Venture.");
|
||||
_chatGui.Print(
|
||||
new SeString(new UIForegroundPayload(579))
|
||||
.Append(SeIconChar.Collectible.ToIconString())
|
||||
.Append(new UIForegroundPayload(0))
|
||||
.Append($" No tasks left for retainer ")
|
||||
.Append(new UIForegroundPayload(1))
|
||||
.Append(retainerName)
|
||||
.Append(new UIForegroundPayload(0))
|
||||
.Append(", sending to ")
|
||||
.Append(new UIForegroundPayload(1))
|
||||
.Append("Quick Venture")
|
||||
.Append(new UIForegroundPayload(0))
|
||||
.Append("."));
|
||||
_pluginLog.Information($"No tasks left (previous venture = {retainer.LastVenture}), using QC");
|
||||
|
||||
if (!dryRun)
|
||||
@ -318,7 +353,8 @@ public sealed partial class AutoRetainerControlPlugin : IDalamudPlugin
|
||||
if (venture == QuickVentureId)
|
||||
_chatGui.Print($"Next venture for {retainerName} is Quick Venture.");
|
||||
else if (venture.HasValue)
|
||||
_chatGui.Print($"Next venture for {retainerName} is {_gameCache.Ventures.First(x => x.RowId == venture.Value).Name}.");
|
||||
_chatGui.Print(
|
||||
$"Next venture for {retainerName} is {_gameCache.Ventures.First(x => x.RowId == venture.Value).Name}.");
|
||||
else
|
||||
_chatGui.Print($"Next venture for {retainerName} is (none).");
|
||||
}
|
||||
@ -345,6 +381,7 @@ public sealed partial class AutoRetainerControlPlugin : IDalamudPlugin
|
||||
public required Configuration.QueuedItem QueuedItem { get; set; }
|
||||
public required int InventoryCount { get; set; }
|
||||
public uint ItemId => QueuedItem.ItemId;
|
||||
|
||||
public int RequestedCount
|
||||
{
|
||||
get => QueuedItem.RemainingQuantity;
|
||||
|
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Numerics;
|
||||
using ARControl.GameData;
|
||||
using Dalamud.Game.Text;
|
||||
using Dalamud.Interface;
|
||||
using Dalamud.Interface.Colors;
|
||||
using Dalamud.Interface.Components;
|
||||
@ -26,7 +27,9 @@ internal sealed class ConfigWindow : Window
|
||||
private static readonly Vector4 ColorRed = ImGuiColors.DalamudRed;
|
||||
private static readonly Vector4 ColorGrey = ImGuiColors.DalamudGrey;
|
||||
private static readonly string[] StockingTypeLabels = { "Collect Once", "Keep in Stock" };
|
||||
private static readonly string[] PriorityLabels = { "Collect in order of the list", "Collect item with lowest inventory first" };
|
||||
|
||||
private static readonly string[] PriorityLabels =
|
||||
{ "Collect in order of the list", "Collect item with lowest inventory first" };
|
||||
|
||||
private readonly DalamudPluginInterface _pluginInterface;
|
||||
private readonly Configuration _configuration;
|
||||
@ -39,12 +42,14 @@ internal sealed class ConfigWindow : Window
|
||||
private readonly Dictionary<Guid, TemporaryConfig> _currentEditPopups = new();
|
||||
private string _searchString = string.Empty;
|
||||
private TemporaryConfig _newGroup = new() { Name = string.Empty };
|
||||
|
||||
private TemporaryConfig _newList = new()
|
||||
{
|
||||
Name = string.Empty,
|
||||
ListType = Configuration.ListType.CollectOneTime,
|
||||
ListPriority = Configuration.ListPriority.InOrder
|
||||
};
|
||||
|
||||
private bool _checkPerCharacter = true;
|
||||
private bool _onlyShowMissing = true;
|
||||
|
||||
@ -56,7 +61,7 @@ internal sealed class ConfigWindow : Window
|
||||
ICommandManager commandManager,
|
||||
IconCache iconCache,
|
||||
IPluginLog pluginLog)
|
||||
: base("ARC###ARControlConfig")
|
||||
: base($"ARC {SeIconChar.Collectible.ToIconString()}###ARControlConfig")
|
||||
{
|
||||
_pluginInterface = pluginInterface;
|
||||
_configuration = configuration;
|
||||
@ -106,6 +111,7 @@ internal sealed class ConfigWindow : Window
|
||||
};
|
||||
ImGui.OpenPopup($"##EditList{list.Id}");
|
||||
}
|
||||
|
||||
DrawVentureListEditorPopup(list, ref listToDelete);
|
||||
|
||||
ImGui.SameLine();
|
||||
@ -118,6 +124,7 @@ internal sealed class ConfigWindow : Window
|
||||
DrawVentureListItemSelection(list);
|
||||
ImGui.Unindent(30);
|
||||
}
|
||||
|
||||
ImGui.PopID();
|
||||
}
|
||||
|
||||
@ -233,7 +240,8 @@ internal sealed class ConfigWindow : Window
|
||||
}
|
||||
}
|
||||
|
||||
private (bool Save, bool CanSave) DrawVentureListEditor(TemporaryConfig temporaryConfig, Configuration.ItemList? list)
|
||||
private (bool Save, bool CanSave) DrawVentureListEditor(TemporaryConfig temporaryConfig,
|
||||
Configuration.ItemList? list)
|
||||
{
|
||||
string listName = temporaryConfig.Name;
|
||||
bool save = ImGui.InputTextWithHint("", "List Name...", ref listName, 64,
|
||||
@ -339,6 +347,7 @@ internal sealed class ConfigWindow : Window
|
||||
itemToAdd = item;
|
||||
indexToAdd = i - 1;
|
||||
}
|
||||
|
||||
ImGui.EndDisabled();
|
||||
|
||||
ImGui.SameLine(0, 0);
|
||||
@ -348,6 +357,7 @@ internal sealed class ConfigWindow : Window
|
||||
itemToAdd = item;
|
||||
indexToAdd = i + 1;
|
||||
}
|
||||
|
||||
ImGui.EndDisabled();
|
||||
|
||||
ImGui.SameLine();
|
||||
@ -380,8 +390,10 @@ internal sealed class ConfigWindow : Window
|
||||
list.Items.RemoveAll(q => q.RemainingQuantity <= 0);
|
||||
Save();
|
||||
}
|
||||
|
||||
ImGui.EndDisabled();
|
||||
}
|
||||
|
||||
ImGui.Spacing();
|
||||
}
|
||||
|
||||
@ -443,7 +455,8 @@ internal sealed class ConfigWindow : Window
|
||||
|
||||
if (ImGui.BeginTabBar("CharOptions"))
|
||||
{
|
||||
if (character.Type != Configuration.CharacterType.NotManaged && ImGui.BeginTabItem("Venture Lists"))
|
||||
if (character.Type != Configuration.CharacterType.NotManaged &&
|
||||
ImGui.BeginTabItem("Venture Lists"))
|
||||
{
|
||||
int groupIndex = 0;
|
||||
if (character.Type == Configuration.CharacterType.PartOfCharacterGroup)
|
||||
@ -461,6 +474,7 @@ internal sealed class ConfigWindow : Window
|
||||
character.Type = Configuration.CharacterType.PartOfCharacterGroup;
|
||||
character.CharacterGroupId = groups[groupIndex].Id;
|
||||
}
|
||||
|
||||
Save();
|
||||
}
|
||||
|
||||
@ -470,14 +484,16 @@ internal sealed class ConfigWindow : Window
|
||||
// ReSharper disable once ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract
|
||||
if (character.ItemListIds == null)
|
||||
character.ItemListIds = new();
|
||||
DrawVentureListSelection(character.LocalContentId.ToString(), character.ItemListIds);
|
||||
DrawVentureListSelection(character.LocalContentId.ToString(),
|
||||
character.ItemListIds);
|
||||
}
|
||||
else
|
||||
{
|
||||
ImGui.TextWrapped($"Retainers will participate in the following lists:");
|
||||
ImGui.Indent(30);
|
||||
|
||||
var group = _configuration.CharacterGroups.Single(x => x.Id == groups[groupIndex].Id);
|
||||
var group = _configuration.CharacterGroups.Single(
|
||||
x => x.Id == groups[groupIndex].Id);
|
||||
var lists = group.ItemListIds
|
||||
.Where(listId => listId != Guid.Empty)
|
||||
.Select(listId => _configuration.ItemLists.SingleOrDefault(x => x.Id == listId))
|
||||
@ -495,11 +511,14 @@ internal sealed class ConfigWindow : Window
|
||||
ImGui.Unindent(30);
|
||||
ImGui.Spacing();
|
||||
}
|
||||
|
||||
ImGui.EndTabItem();
|
||||
}
|
||||
|
||||
if (ImGui.BeginTabItem("Retainers"))
|
||||
{
|
||||
foreach (var retainer in character.Retainers.Where(x => x.Job > 0).OrderBy(x => x.DisplayOrder))
|
||||
foreach (var retainer in character.Retainers.Where(x => x.Job > 0)
|
||||
.OrderBy(x => x.DisplayOrder))
|
||||
{
|
||||
ImGui.BeginDisabled(retainer.Level < MinLevel);
|
||||
|
||||
@ -512,7 +531,8 @@ internal sealed class ConfigWindow : Window
|
||||
ImGui.SameLine();
|
||||
}
|
||||
|
||||
if (ImGui.Checkbox($"{retainer.Name}###Retainer{retainer.Name}{retainer.DisplayOrder}",
|
||||
if (ImGui.Checkbox(
|
||||
$"{retainer.Name}###Retainer{retainer.Name}{retainer.DisplayOrder}",
|
||||
ref managed))
|
||||
{
|
||||
retainer.Managed = managed;
|
||||
@ -521,8 +541,10 @@ internal sealed class ConfigWindow : Window
|
||||
|
||||
ImGui.EndDisabled();
|
||||
}
|
||||
|
||||
ImGui.EndTabItem();
|
||||
}
|
||||
|
||||
ImGui.EndTabBar();
|
||||
}
|
||||
|
||||
@ -575,7 +597,9 @@ internal sealed class ConfigWindow : Window
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawCharacterGroupEditorPopup(Configuration.CharacterGroup group, out List<Configuration.CharacterConfiguration> assignedCharacters, ref Configuration.CharacterGroup? groupToDelete)
|
||||
private void DrawCharacterGroupEditorPopup(Configuration.CharacterGroup group,
|
||||
out List<Configuration.CharacterConfiguration> assignedCharacters,
|
||||
ref Configuration.CharacterGroup? groupToDelete)
|
||||
{
|
||||
assignedCharacters = _configuration.Characters
|
||||
.Where(x => x.Type == Configuration.CharacterType.PartOfCharacterGroup &&
|
||||
@ -583,7 +607,8 @@ internal sealed class ConfigWindow : Window
|
||||
.OrderBy(x => x.WorldName)
|
||||
.ThenBy(x => x.LocalContentId)
|
||||
.ToList();
|
||||
if (_currentEditPopups.TryGetValue(group.Id, out TemporaryConfig? temporaryConfig) && ImGui.BeginPopup($"##EditGroup{group.Id}"))
|
||||
if (_currentEditPopups.TryGetValue(group.Id, out TemporaryConfig? temporaryConfig) &&
|
||||
ImGui.BeginPopup($"##EditGroup{group.Id}"))
|
||||
{
|
||||
(bool save, bool canSave) = DrawGroupEditor(temporaryConfig, group);
|
||||
|
||||
@ -607,6 +632,7 @@ internal sealed class ConfigWindow : Window
|
||||
groupToDelete = group;
|
||||
ImGui.CloseCurrentPopup();
|
||||
}
|
||||
|
||||
ImGui.EndDisabled();
|
||||
if (assignedCharacters.Count > 0 && ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled))
|
||||
{
|
||||
@ -618,11 +644,13 @@ internal sealed class ConfigWindow : Window
|
||||
ImGui.EndTooltip();
|
||||
}
|
||||
}
|
||||
|
||||
ImGui.EndPopup();
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawCharacterGroup(Configuration.CharacterGroup group, List<Configuration.CharacterConfiguration> assignedCharacters)
|
||||
private void DrawCharacterGroup(Configuration.CharacterGroup group,
|
||||
List<Configuration.CharacterConfiguration> assignedCharacters)
|
||||
{
|
||||
string countLabel = assignedCharacters.Count == 0 ? "no characters"
|
||||
: assignedCharacters.Count == 1 ? "1 character"
|
||||
@ -687,7 +715,8 @@ internal sealed class ConfigWindow : Window
|
||||
}
|
||||
}
|
||||
|
||||
private (bool Save, bool CanSave) DrawGroupEditor(TemporaryConfig group, Configuration.CharacterGroup? existingGroup)
|
||||
private (bool Save, bool CanSave) DrawGroupEditor(TemporaryConfig group,
|
||||
Configuration.CharacterGroup? existingGroup)
|
||||
{
|
||||
string name = group.Name;
|
||||
bool save = ImGui.InputTextWithHint("", "Group Name...", ref name, 64, ImGuiInputTextFlags.EnterReturnsTrue);
|
||||
@ -870,6 +899,7 @@ internal sealed class ConfigWindow : Window
|
||||
itemToAdd = i;
|
||||
indexToAdd = i - 1;
|
||||
}
|
||||
|
||||
ImGui.EndDisabled();
|
||||
|
||||
ImGui.SameLine(0, 0);
|
||||
@ -879,6 +909,7 @@ internal sealed class ConfigWindow : Window
|
||||
itemToAdd = i;
|
||||
indexToAdd = i + 1;
|
||||
}
|
||||
|
||||
ImGui.EndDisabled();
|
||||
|
||||
ImGui.SameLine();
|
||||
@ -946,6 +977,7 @@ internal sealed class ConfigWindow : Window
|
||||
|
||||
ImGui.EndPopup();
|
||||
}
|
||||
|
||||
ImGui.EndDisabled();
|
||||
|
||||
ImGui.PopID();
|
||||
|
Loading…
Reference in New Issue
Block a user