More fixes
This commit is contained in:
@@ -118,7 +118,7 @@ public class AddonCategoryConfigurationWindow : NativeAddon
|
|||||||
listNode.AddOption(newWrapper);
|
listNode.AddOption(newWrapper);
|
||||||
|
|
||||||
RefreshSelectionList();
|
RefreshSelectionList();
|
||||||
System.AddonInventoryWindow.ManualInventoryRefresh();
|
System.AddonInventoryWindow.ManualRefresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnRemoveCategory(CategoryWrapper categoryWrapper)
|
private void OnRemoveCategory(CategoryWrapper categoryWrapper)
|
||||||
@@ -134,7 +134,7 @@ public class AddonCategoryConfigurationWindow : NativeAddon
|
|||||||
{
|
{
|
||||||
OnOptionChanged(null);
|
OnOptionChanged(null);
|
||||||
}
|
}
|
||||||
System.AddonInventoryWindow.ManualInventoryRefresh();
|
System.AddonInventoryWindow.ManualRefresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RefreshSelectionList()
|
private void RefreshSelectionList()
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Numerics;
|
using System.Numerics;
|
||||||
using AetherBags;
|
|
||||||
using AetherBags.Inventory;
|
|
||||||
using AetherBags.Inventory.Categories;
|
using AetherBags.Inventory.Categories;
|
||||||
using AetherBags.Inventory.State;
|
using AetherBags.Inventory.State;
|
||||||
using AetherBags.Nodes.Input;
|
using AetherBags.Nodes.Input;
|
||||||
@@ -12,6 +10,8 @@ using FFXIVClientStructs.FFXIV.Component.GUI;
|
|||||||
using KamiToolKit;
|
using KamiToolKit;
|
||||||
using KamiToolKit.Nodes;
|
using KamiToolKit.Nodes;
|
||||||
|
|
||||||
|
namespace AetherBags.Addons;
|
||||||
|
|
||||||
public abstract unsafe class InventoryAddonBase : NativeAddon
|
public abstract unsafe class InventoryAddonBase : NativeAddon
|
||||||
{
|
{
|
||||||
protected readonly InventoryCategoryHoverCoordinator HoverCoordinator = new();
|
protected readonly InventoryCategoryHoverCoordinator HoverCoordinator = new();
|
||||||
@@ -37,6 +37,7 @@ public abstract unsafe class InventoryAddonBase : NativeAddon
|
|||||||
|
|
||||||
protected bool RefreshQueued;
|
protected bool RefreshQueued;
|
||||||
protected bool RefreshAutosizeQueued;
|
protected bool RefreshAutosizeQueued;
|
||||||
|
private bool _isRefreshing;
|
||||||
|
|
||||||
protected abstract InventoryStateBase InventoryState { get; }
|
protected abstract InventoryStateBase InventoryState { get; }
|
||||||
|
|
||||||
@@ -44,12 +45,31 @@ public abstract unsafe class InventoryAddonBase : NativeAddon
|
|||||||
protected virtual bool HasPinning => true;
|
protected virtual bool HasPinning => true;
|
||||||
protected virtual bool HasSlotCounter => false;
|
protected virtual bool HasSlotCounter => false;
|
||||||
|
|
||||||
public void ManualInventoryRefresh()
|
public void ManualRefresh()
|
||||||
{
|
{
|
||||||
if (!Services.ClientState.IsLoggedIn) return;
|
if (!Services.ClientState.IsLoggedIn) return;
|
||||||
|
if (_isRefreshing) return;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_isRefreshing = true;
|
||||||
InventoryState.RefreshFromGame();
|
InventoryState.RefreshFromGame();
|
||||||
RefreshCategoriesCore(autosize: true);
|
RefreshCategoriesCore(autosize: true);
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
_isRefreshing = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual void RefreshAllInventoryWindows()
|
||||||
|
{
|
||||||
|
Services.Framework.RunOnTick(() =>
|
||||||
|
{
|
||||||
|
System.AddonInventoryWindow?.ManualRefresh();
|
||||||
|
System.AddonSaddleBagWindow?.ManualRefresh();
|
||||||
|
//AetherBags.System.AddonRetainerWindow?.ManualRefresh();
|
||||||
|
}, delayTicks: 2);
|
||||||
|
}
|
||||||
|
|
||||||
protected virtual void RefreshCategoriesCore(bool autosize)
|
protected virtual void RefreshCategoriesCore(bool autosize)
|
||||||
{
|
{
|
||||||
@@ -79,8 +99,7 @@ public abstract unsafe class InventoryAddonBase : NativeAddon
|
|||||||
if (HasPinning)
|
if (HasPinning)
|
||||||
{
|
{
|
||||||
bool pinsChanged = PinCoordinator.ApplyPinnedStates(CategoriesNode);
|
bool pinsChanged = PinCoordinator.ApplyPinnedStates(CategoriesNode);
|
||||||
if (pinsChanged)
|
if (pinsChanged) HoverCoordinator.ResetAll(CategoriesNode);
|
||||||
HoverCoordinator.ResetAll(CategoriesNode);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
WireHoverHandlers();
|
WireHoverHandlers();
|
||||||
@@ -99,6 +118,8 @@ public abstract unsafe class InventoryAddonBase : NativeAddon
|
|||||||
return new InventoryCategoryNode
|
return new InventoryCategoryNode
|
||||||
{
|
{
|
||||||
Size = ContentSize with { Y = 120 },
|
Size = ContentSize with { Y = 120 },
|
||||||
|
OnRefreshRequested = ManualRefresh,
|
||||||
|
OnDragEnd = RefreshAllInventoryWindows,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ public class CommandHandler : IDisposable
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case "refresh":
|
case "refresh":
|
||||||
System.AddonInventoryWindow.ManualInventoryRefresh();
|
System.AddonInventoryWindow.ManualRefresh();
|
||||||
PrintChat("Inventory refreshed.");
|
PrintChat("Inventory refreshed.");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ public class CommandHandler : IDisposable
|
|||||||
|
|
||||||
case "import-sk":
|
case "import-sk":
|
||||||
ImportExportResetHelper.TryImportSortaKindaFromClipboard(true);
|
ImportExportResetHelper.TryImportSortaKindaFromClipboard(true);
|
||||||
System.AddonInventoryWindow.ManualInventoryRefresh();
|
System.AddonInventoryWindow.ManualRefresh();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "export":
|
case "export":
|
||||||
@@ -77,12 +77,12 @@ public class CommandHandler : IDisposable
|
|||||||
|
|
||||||
case "import":
|
case "import":
|
||||||
ImportExportResetHelper.TryImportConfigFromClipboard();
|
ImportExportResetHelper.TryImportConfigFromClipboard();
|
||||||
System.AddonInventoryWindow.ManualInventoryRefresh();
|
System.AddonInventoryWindow.ManualRefresh();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "reset":
|
case "reset":
|
||||||
ImportExportResetHelper.TryResetConfig();
|
ImportExportResetHelper.TryResetConfig();
|
||||||
System.AddonInventoryWindow.ManualInventoryRefresh();
|
System.AddonInventoryWindow.ManualRefresh();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "count":
|
case "count":
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ public static unsafe class InventoryMoveHelper
|
|||||||
Services.Logger.Debug($"[MoveItem] {sourceContainer}@{sourceSlot} -> {destContainer}@{destSlot}");
|
Services.Logger.Debug($"[MoveItem] {sourceContainer}@{sourceSlot} -> {destContainer}@{destSlot}");
|
||||||
InventoryManager.Instance()->MoveItemSlot(sourceContainer, sourceSlot, destContainer, destSlot, true);
|
InventoryManager.Instance()->MoveItemSlot(sourceContainer, sourceSlot, destContainer, destSlot, true);
|
||||||
Services.Framework.DelayTicks(2);
|
Services.Framework.DelayTicks(2);
|
||||||
Services.Framework.RunOnFrameworkThread(System.AddonInventoryWindow.ManualInventoryRefresh);
|
Services.Framework.RunOnFrameworkThread(System.AddonInventoryWindow.ManualRefresh);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -342,7 +342,7 @@ public sealed class CategoryDefinitionConfigurationNode : VerticalListNode
|
|||||||
|
|
||||||
private static void NotifyChanged()
|
private static void NotifyChanged()
|
||||||
{
|
{
|
||||||
System.AddonInventoryWindow.ManualInventoryRefresh();
|
System.AddonInventoryWindow.ManualRefresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void NotifyCategoryPropertyChanged()
|
private void NotifyCategoryPropertyChanged()
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ internal sealed class FunctionalConfigurationNode : TabbedVerticalListNode
|
|||||||
if (Enum.TryParse<InventoryStackMode>(selected, out var parsed))
|
if (Enum.TryParse<InventoryStackMode>(selected, out var parsed))
|
||||||
{
|
{
|
||||||
config.StackMode = parsed;
|
config.StackMode = parsed;
|
||||||
System.AddonInventoryWindow.ManualInventoryRefresh();
|
System.AddonInventoryWindow.ManualRefresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -30,5 +30,5 @@ public sealed class GeneralScrollingAreaNode : ScrollingAreaNode<VerticalListNod
|
|||||||
ContentNode.AddNode(_debugCheckboxNode);
|
ContentNode.AddNode(_debugCheckboxNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RefreshInventory() => System.AddonInventoryWindow.ManualInventoryRefresh();
|
private void RefreshInventory() => System.AddonInventoryWindow.ManualRefresh();
|
||||||
}
|
}
|
||||||
@@ -33,7 +33,7 @@ internal sealed class CompactLookaheadNode : SimpleComponentNode
|
|||||||
OnValueUpdate = value =>
|
OnValueUpdate = value =>
|
||||||
{
|
{
|
||||||
config.CompactLookahead = value;
|
config.CompactLookahead = value;
|
||||||
System.AddonInventoryWindow.ManualInventoryRefresh();
|
System.AddonInventoryWindow.ManualRefresh();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
CompactLookahead.AttachNode(this);
|
CompactLookahead.AttachNode(this);
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ internal class LayoutConfigurationNode : TabbedVerticalListNode
|
|||||||
OnClick = isChecked =>
|
OnClick = isChecked =>
|
||||||
{
|
{
|
||||||
config.ShowCategoryItemCount = isChecked;
|
config.ShowCategoryItemCount = isChecked;
|
||||||
System.AddonInventoryWindow.ManualInventoryRefresh();
|
System.AddonInventoryWindow.ManualRefresh();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
AddNode(showCategoryItemAmountCheckboxNode);
|
AddNode(showCategoryItemAmountCheckboxNode);
|
||||||
@@ -49,7 +49,7 @@ internal class LayoutConfigurationNode : TabbedVerticalListNode
|
|||||||
_preferLargestFitCheckboxNode.IsEnabled = isChecked;
|
_preferLargestFitCheckboxNode.IsEnabled = isChecked;
|
||||||
_useStableInsertCheckboxNode.IsEnabled = isChecked;
|
_useStableInsertCheckboxNode.IsEnabled = isChecked;
|
||||||
_compactLookaheadNode.CompactLookahead.IsEnabled = isChecked;
|
_compactLookaheadNode.CompactLookahead.IsEnabled = isChecked;
|
||||||
System.AddonInventoryWindow.ManualInventoryRefresh();
|
System.AddonInventoryWindow.ManualRefresh();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
AddNode(compactPackingCheckboxNode);
|
AddNode(compactPackingCheckboxNode);
|
||||||
@@ -65,7 +65,7 @@ internal class LayoutConfigurationNode : TabbedVerticalListNode
|
|||||||
OnClick = isChecked =>
|
OnClick = isChecked =>
|
||||||
{
|
{
|
||||||
config.CompactPreferLargestFit = isChecked;
|
config.CompactPreferLargestFit = isChecked;
|
||||||
System.AddonInventoryWindow.ManualInventoryRefresh();
|
System.AddonInventoryWindow.ManualRefresh();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
AddNode(_preferLargestFitCheckboxNode);
|
AddNode(_preferLargestFitCheckboxNode);
|
||||||
@@ -80,7 +80,7 @@ internal class LayoutConfigurationNode : TabbedVerticalListNode
|
|||||||
OnClick = isChecked =>
|
OnClick = isChecked =>
|
||||||
{
|
{
|
||||||
config.CompactStableInsert = isChecked;
|
config.CompactStableInsert = isChecked;
|
||||||
System.AddonInventoryWindow.ManualInventoryRefresh();
|
System.AddonInventoryWindow.ManualRefresh();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
AddNode(_useStableInsertCheckboxNode);
|
AddNode(_useStableInsertCheckboxNode);
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ public class InventoryCategoryNode : SimpleComponentNode
|
|||||||
|
|
||||||
public event Action<InventoryCategoryNode, bool>? HeaderHoverChanged;
|
public event Action<InventoryCategoryNode, bool>? HeaderHoverChanged;
|
||||||
public Action? OnRefreshRequested { get; set; }
|
public Action? OnRefreshRequested { get; set; }
|
||||||
|
public Action? OnDragEnd { get; set; }
|
||||||
|
|
||||||
public InventoryCategoryNode()
|
public InventoryCategoryNode()
|
||||||
{
|
{
|
||||||
@@ -239,7 +240,7 @@ public class InventoryCategoryNode : SimpleComponentNode
|
|||||||
},
|
},
|
||||||
IsClickable = true,
|
IsClickable = true,
|
||||||
OnDiscard = node => OnDiscard(node, data),
|
OnDiscard = node => OnDiscard(node, data),
|
||||||
OnEnd = _ => System.AddonInventoryWindow.ManualInventoryRefresh(),
|
OnEnd = _ => OnDragEnd?.Invoke(),
|
||||||
OnPayloadAccepted = (node, payload) => OnPayloadAccepted(node, payload, data),
|
OnPayloadAccepted = (node, payload) => OnPayloadAccepted(node, payload, data),
|
||||||
OnRollOver = node =>
|
OnRollOver = node =>
|
||||||
{
|
{
|
||||||
@@ -292,7 +293,6 @@ public class InventoryCategoryNode : SimpleComponentNode
|
|||||||
Services.Logger.Debug($"[OnPayload] Source: {sourceLocation. Container} @ {sourceLocation. Slot}");
|
Services.Logger.Debug($"[OnPayload] Source: {sourceLocation. Container} @ {sourceLocation. Slot}");
|
||||||
Services.Logger.Debug($"[OnPayload] Target: {targetLocation.Container} @ {targetLocation.Slot}");
|
Services.Logger.Debug($"[OnPayload] Target: {targetLocation.Container} @ {targetLocation.Slot}");
|
||||||
|
|
||||||
|
|
||||||
if (sourceLocation.Container.IsSameContainerGroup(targetLocation.Container))
|
if (sourceLocation.Container.IsSameContainerGroup(targetLocation.Container))
|
||||||
{
|
{
|
||||||
Services.Logger.Debug($"[OnPayload] Source and target are in the same container group; no move performed");
|
Services.Logger.Debug($"[OnPayload] Source and target are in the same container group; no move performed");
|
||||||
|
|||||||
Reference in New Issue
Block a user