Merge branch 'master' into dev/pie-lover
This commit is contained in:
@@ -8,6 +8,8 @@ using AetherBags.Nodes.Inventory;
|
|||||||
using AetherBags.Nodes.Layout;
|
using AetherBags.Nodes.Layout;
|
||||||
using Dalamud.Game.Addon.Lifecycle;
|
using Dalamud.Game.Addon.Lifecycle;
|
||||||
using Dalamud.Game.Addon.Lifecycle.AddonArgTypes;
|
using Dalamud.Game.Addon.Lifecycle.AddonArgTypes;
|
||||||
|
using FFXIVClientStructs.FFXIV.Client.UI;
|
||||||
|
using FFXIVClientStructs.FFXIV.Client.UI.Agent;
|
||||||
using FFXIVClientStructs.FFXIV.Component.GUI;
|
using FFXIVClientStructs.FFXIV.Component.GUI;
|
||||||
using KamiToolKit;
|
using KamiToolKit;
|
||||||
using KamiToolKit.Nodes;
|
using KamiToolKit.Nodes;
|
||||||
@@ -325,6 +327,12 @@ public class AddonInventoryWindow : NativeAddon
|
|||||||
|
|
||||||
protected override unsafe void OnFinalize(AtkUnitBase* addon)
|
protected override unsafe void OnFinalize(AtkUnitBase* addon)
|
||||||
{
|
{
|
||||||
|
ref var blockingAddonId = ref AgentInventoryContext.Instance()->BlockingAddonId;
|
||||||
|
if (blockingAddonId != 0)
|
||||||
|
{
|
||||||
|
RaptureAtkModule.Instance()->CloseAddon(blockingAddonId);
|
||||||
|
}
|
||||||
|
|
||||||
Services.AddonLifecycle.UnregisterListener(OnInventoryUpdate);
|
Services.AddonLifecycle.UnregisterListener(OnInventoryUpdate);
|
||||||
addon->UnsubscribeAtkArrayData(1, (int)NumberArrayType.Inventory);
|
addon->UnsubscribeAtkArrayData(1, (int)NumberArrayType.Inventory);
|
||||||
|
|
||||||
|
|||||||
@@ -4,9 +4,13 @@ namespace AetherBags.Inventory;
|
|||||||
|
|
||||||
public readonly record struct InventoryLocation(InventoryType Container, ushort Slot)
|
public readonly record struct InventoryLocation(InventoryType Container, ushort Slot)
|
||||||
{
|
{
|
||||||
public static readonly InventoryLocation Invalid = new(0, 0);
|
public static readonly InventoryLocation Invalid = new((InventoryType)uint.MaxValue, ushort.MaxValue);
|
||||||
|
|
||||||
public bool IsValid => Container != 0;
|
public bool IsValid => Container.IsMainInventory ||
|
||||||
|
Container.IsSaddleBag ||
|
||||||
|
Container.IsArmory ||
|
||||||
|
Container.IsRetainer ||
|
||||||
|
Container == InventoryType.EquippedItems;
|
||||||
|
|
||||||
public override string ToString() => $"{Container}@{Slot}";
|
public override string ToString() => $"{Container}@{Slot}";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -260,10 +260,14 @@ public class InventoryCategoryNode : SimpleComponentNode
|
|||||||
AgentInventoryContext.Instance()->DiscardItem(item.Item.GetLinkedItem(), item.Item.Container, item.Item.Slot, addonId);
|
AgentInventoryContext.Instance()->DiscardItem(item.Item.GetLinkedItem(), item.Item.Container, item.Item.Slot, addonId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnPayloadAccepted(DragDropNode _, DragDropPayload payload, ItemInfo targetItemInfo)
|
private void OnPayloadAccepted(DragDropNode node, DragDropPayload payload, ItemInfo targetItemInfo)
|
||||||
{
|
{
|
||||||
|
InventoryItem item = targetItemInfo.Item;
|
||||||
if (!payload.IsValidInventoryPayload)
|
if (!payload.IsValidInventoryPayload)
|
||||||
|
{
|
||||||
|
Services.Logger.Warning($"[OnPayload] Invalid payload type: {payload.Type}");
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
InventoryLocation sourceLocation = payload.InventoryLocation;
|
InventoryLocation sourceLocation = payload.InventoryLocation;
|
||||||
|
|
||||||
@@ -274,15 +278,25 @@ public class InventoryCategoryNode : SimpleComponentNode
|
|||||||
}
|
}
|
||||||
|
|
||||||
InventoryLocation targetLocation = new InventoryLocation(
|
InventoryLocation targetLocation = new InventoryLocation(
|
||||||
targetItemInfo.Item.Container,
|
item.Container,
|
||||||
(ushort)targetItemInfo.Item.Slot
|
(ushort)item.Slot
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (sourceLocation.Container.IsSameContainerGroup(targetLocation.Container))
|
||||||
|
{
|
||||||
|
Services.Logger.Debug($"[OnPayload] Source and target are in the same container group; no move performed");
|
||||||
|
node.Payload = payload;
|
||||||
|
node.IconId = item.IconId;
|
||||||
|
System.AddonInventoryWindow.ManualInventoryRefresh();
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
Services.Logger.Debug($"[OnPayload] Moving {sourceLocation} -> {targetLocation}");
|
Services.Logger.Debug($"[OnPayload] Moving {sourceLocation} -> {targetLocation}");
|
||||||
|
|
||||||
InventoryMoveHelper.MoveItem(
|
InventoryMoveHelper.MoveItem(
|
||||||
sourceLocation.Container, sourceLocation.Slot,
|
sourceLocation.Container, sourceLocation.Slot,
|
||||||
targetLocation.Container, targetLocation.Slot
|
targetLocation.Container, targetLocation.Slot
|
||||||
);
|
);
|
||||||
|
System.AddonInventoryWindow.ManualInventoryRefresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user