From b9654dfb214d4c2a3f7c9cffc0e6a4fad0d78027 Mon Sep 17 00:00:00 2001 From: Zeffuro Date: Sat, 3 Jan 2026 09:50:40 +0100 Subject: [PATCH] Misc fixes and tweaks --- AetherBags/Addons/AddonInventoryWindow.cs | 2 +- AetherBags/Addons/InventoryAddonBase.cs | 2 +- AetherBags/Extensions/AtkResNodeExtensions.cs | 16 ---------------- AetherBags/Helpers/InventoryMoveHelper.cs | 2 +- .../Inventory/Scanning/InventoryScanner.cs | 4 +++- AetherBags/Inventory/Scanning/InventorySource.cs | 2 +- AetherBags/Nodes/Color/ColorInputRow.cs | 4 ++-- .../Category/CategoryGeneralConfigurationNode.cs | 2 ++ .../Currency/CurrencyGeneralConfigurationNode.cs | 3 +++ .../General/FunctionalConfigurationNode.cs | 7 +++++++ .../General/GeneralScrollingAreaNode.cs | 2 +- .../Nodes/Inventory/InventoryFooterNode.cs | 4 ++-- KamiToolKit | 2 +- 13 files changed, 25 insertions(+), 27 deletions(-) delete mode 100644 AetherBags/Extensions/AtkResNodeExtensions.cs diff --git a/AetherBags/Addons/AddonInventoryWindow.cs b/AetherBags/Addons/AddonInventoryWindow.cs index 5699ee3..8348b7b 100644 --- a/AetherBags/Addons/AddonInventoryWindow.cs +++ b/AetherBags/Addons/AddonInventoryWindow.cs @@ -90,7 +90,7 @@ public unsafe class AddonInventoryWindow : InventoryAddonBase Services.Framework.RunOnTick(() => { if (IsOpen) _notificationNode.NotificationInfo = info; - }, delayTicks: 1); + }, delayTicks: 3); } protected override void OnFinalize(AtkUnitBase* addon) diff --git a/AetherBags/Addons/InventoryAddonBase.cs b/AetherBags/Addons/InventoryAddonBase.cs index 678c52b..b516d7e 100644 --- a/AetherBags/Addons/InventoryAddonBase.cs +++ b/AetherBags/Addons/InventoryAddonBase.cs @@ -88,7 +88,7 @@ public abstract unsafe class InventoryAddonBase : NativeAddon, IInventoryWindow { if (IsOpen) SearchInputNode.SearchString = searchText; RefreshCategoriesCore(autosize: true); - }, delayTicks: 1); + }, delayTicks: 3); } public void RefreshFromLifecycle() diff --git a/AetherBags/Extensions/AtkResNodeExtensions.cs b/AetherBags/Extensions/AtkResNodeExtensions.cs deleted file mode 100644 index f5da790..0000000 --- a/AetherBags/Extensions/AtkResNodeExtensions.cs +++ /dev/null @@ -1,16 +0,0 @@ -using FFXIVClientStructs.FFXIV.Client.Game; -using FFXIVClientStructs.FFXIV.Component.GUI; - -namespace AetherBags.Extensions; - -public static unsafe class AtkResNodeExtensions -{ - extension(ref AtkResNode node) - { - public void ShowInventoryItemTooltip(InventoryType container, short slot) { - fixed (AtkResNode* nodePointer = &node) { - AtkStage.Instance()->ShowInventoryItemTooltip(nodePointer, container, slot); - } - } - } -} \ No newline at end of file diff --git a/AetherBags/Helpers/InventoryMoveHelper.cs b/AetherBags/Helpers/InventoryMoveHelper.cs index 0bdfd6d..4523303 100644 --- a/AetherBags/Helpers/InventoryMoveHelper.cs +++ b/AetherBags/Helpers/InventoryMoveHelper.cs @@ -14,7 +14,7 @@ public static unsafe class InventoryMoveHelper { Services.Logger.DebugOnly($"[MoveItem] {sourceContainer}@{sourceSlot} -> {destContainer}@{destSlot}"); InventoryManager.Instance()->MoveItemSlot(sourceContainer, sourceSlot, destContainer, destSlot, true); - Services.Framework.DelayTicks(2); + Services.Framework.DelayTicks(3); Services.Framework.RunOnFrameworkThread(System.AddonInventoryWindow.ManualRefresh); } diff --git a/AetherBags/Inventory/Scanning/InventoryScanner.cs b/AetherBags/Inventory/Scanning/InventoryScanner.cs index c6a0971..286d698 100644 --- a/AetherBags/Inventory/Scanning/InventoryScanner.cs +++ b/AetherBags/Inventory/Scanning/InventoryScanner.cs @@ -203,8 +203,10 @@ public static unsafe class InventoryScanner foreach (var inv in inventories) { var container = inventoryManager->GetInventoryContainer(inv); + var containerSize = container->Size; + if (container == null) continue; - for (int i = 0; i < container->Size; i++) + for (int i = 0; i < containerSize; i++) { if (container->Items[i]. ItemId == 0) empty++; diff --git a/AetherBags/Inventory/Scanning/InventorySource.cs b/AetherBags/Inventory/Scanning/InventorySource.cs index 027d641..8bdc8a5 100644 --- a/AetherBags/Inventory/Scanning/InventorySource.cs +++ b/AetherBags/Inventory/Scanning/InventorySource.cs @@ -76,7 +76,7 @@ public static class InventorySourceDefinitions InventorySourceType.SaddleBag => 70, // 2 * 35 InventorySourceType.PremiumSaddleBag => 70, // 2 * 35 InventorySourceType.AllSaddleBags => 140, // 2 * 35 - InventorySourceType.Retainer => Retainer.Length * 35, // 7 * 25 + InventorySourceType.Retainer => Retainer.Length * 25, // 7 * 25 _ => 140, }; } \ No newline at end of file diff --git a/AetherBags/Nodes/Color/ColorInputRow.cs b/AetherBags/Nodes/Color/ColorInputRow.cs index 18e4cb8..1eb082f 100644 --- a/AetherBags/Nodes/Color/ColorInputRow.cs +++ b/AetherBags/Nodes/Color/ColorInputRow.cs @@ -58,8 +58,8 @@ public class ColorInputRow : HorizontalListNode if (_colorPickerAddon is not null) return; _colorPickerAddon = new ColorPickerAddon { - InternalName = "ColorPicker", - Title = "ColorPicker_AetherBags", + InternalName = "ColorPicker_AetherBags", + Title = "Pick a color", }; } diff --git a/AetherBags/Nodes/Configuration/Category/CategoryGeneralConfigurationNode.cs b/AetherBags/Nodes/Configuration/Category/CategoryGeneralConfigurationNode.cs index 01e69c1..4752f5f 100644 --- a/AetherBags/Nodes/Configuration/Category/CategoryGeneralConfigurationNode.cs +++ b/AetherBags/Nodes/Configuration/Category/CategoryGeneralConfigurationNode.cs @@ -19,6 +19,8 @@ public sealed class CategoryGeneralConfigurationNode : TabbedVerticalListNode { CategorySettings config = System.Config.Categories; + ItemVerticalSpacing = 2; + LabelTextNode titleNode = new LabelTextNode { Size = Size with { Y = 18 }, diff --git a/AetherBags/Nodes/Configuration/Currency/CurrencyGeneralConfigurationNode.cs b/AetherBags/Nodes/Configuration/Currency/CurrencyGeneralConfigurationNode.cs index 4994b2c..e709455 100644 --- a/AetherBags/Nodes/Configuration/Currency/CurrencyGeneralConfigurationNode.cs +++ b/AetherBags/Nodes/Configuration/Currency/CurrencyGeneralConfigurationNode.cs @@ -12,6 +12,8 @@ public sealed class CurrencyGeneralConfigurationNode : TabbedVerticalListNode { CurrencySettings config = System.Config.Currency; + ItemVerticalSpacing = 2; + LabelTextNode titleNode = new LabelTextNode { Size = Size with { Y = 18 }, @@ -68,6 +70,7 @@ public sealed class CurrencyGeneralConfigurationNode : TabbedVerticalListNode AddTab(1); + ColorInputRow cappedCurrencyColorNode = new ColorInputRow { Label = "Weekly Cap Color", diff --git a/AetherBags/Nodes/Configuration/General/FunctionalConfigurationNode.cs b/AetherBags/Nodes/Configuration/General/FunctionalConfigurationNode.cs index e0a6342..825af76 100644 --- a/AetherBags/Nodes/Configuration/General/FunctionalConfigurationNode.cs +++ b/AetherBags/Nodes/Configuration/General/FunctionalConfigurationNode.cs @@ -20,6 +20,8 @@ internal sealed class FunctionalConfigurationNode : TabbedVerticalListNode { GeneralSettings config = System.Config.General; + ItemVerticalSpacing = 2; + var titleNode = new CategoryTextNode { Height = 18, @@ -132,6 +134,11 @@ internal sealed class FunctionalConfigurationNode : TabbedVerticalListNode }; AddNode(linkItemCheckBox); + AddNode(new ResNode + { + Height = 6 + }); + var searchModeDropDown = new LabeledDropdownNode { Size = new Vector2(300, 20), diff --git a/AetherBags/Nodes/Configuration/General/GeneralScrollingAreaNode.cs b/AetherBags/Nodes/Configuration/General/GeneralScrollingAreaNode.cs index 73c04ed..f9d4e53 100644 --- a/AetherBags/Nodes/Configuration/General/GeneralScrollingAreaNode.cs +++ b/AetherBags/Nodes/Configuration/General/GeneralScrollingAreaNode.cs @@ -13,7 +13,7 @@ public sealed class GeneralScrollingAreaNode : ScrollingListNode new ImportExportResetNode().AttachNode(this); - ItemSpacing = 32; + ItemSpacing = 10; AddNode(new FunctionalConfigurationNode()); diff --git a/AetherBags/Nodes/Inventory/InventoryFooterNode.cs b/AetherBags/Nodes/Inventory/InventoryFooterNode.cs index 5649a28..48024e3 100644 --- a/AetherBags/Nodes/Inventory/InventoryFooterNode.cs +++ b/AetherBags/Nodes/Inventory/InventoryFooterNode.cs @@ -47,8 +47,8 @@ public sealed class InventoryFooterNode : SimpleComponentNode IReadOnlyList currencyInfoList = InventoryState.GetCurrencyInfoList([1, 28, 0xFFFF_FFFE, 0xFFFF_FFFD]); _currencyListNode.SyncWithListDataByKey( dataList: currencyInfoList, - getKeyFromData: c => c.ItemId, - getKeyFromNode: n => n.Currency.ItemId, + getKeyFromData: currencyInfo => currencyInfo.ItemId, + getKeyFromNode: node => node.Currency.ItemId, updateNode: (node, data) => { node.Currency = data; diff --git a/KamiToolKit b/KamiToolKit index e6ff0f7..ef8ad50 160000 --- a/KamiToolKit +++ b/KamiToolKit @@ -1 +1 @@ -Subproject commit e6ff0f781b4c1d23f948b73bf22419e1a4240e94 +Subproject commit ef8ad50d2025d58a8c1cc677263d0870f59c2345