88 lines
4.3 KiB
C#
88 lines
4.3 KiB
C#
namespace Harmony.XUiM_LootContainerPatches
|
|
{
|
|
/*[HarmonyPatch(typeof(XUiM_LootContainer))]
|
|
[HarmonyPatch("StashItems")]
|
|
public class StashItemsPatch
|
|
{
|
|
public static bool Prefix(XUiM_LootContainer __instance, ref (bool _allMoved, bool _anyMoved) __result,
|
|
XUiController _srcWindow,
|
|
XUiC_ItemStackGrid _srcGrid,
|
|
IInventory _dstInventory,
|
|
int _ignoreSlots,
|
|
bool[] _ignoredSlots,
|
|
XUiM_LootContainer.EItemMoveKind _moveKind,
|
|
bool _startBottomRight
|
|
)
|
|
{
|
|
if (_srcGrid == null || _dstInventory == null)
|
|
__result = (false, false);
|
|
float unscaledTime = Time.unscaledTime;
|
|
if (_moveKind == XUiM_LootContainer.EItemMoveKind.FillOnlyFirstCreateSecond && (double)unscaledTime - (double)XUiM_LootContainer.lastStashTime < 2.0)
|
|
_moveKind = XUiM_LootContainer.EItemMoveKind.FillAndCreate;
|
|
bool flag1 = true;
|
|
bool flag2 = false;
|
|
PreferenceTracker preferences = (PreferenceTracker)null;
|
|
if (_srcWindow is XUiC_LootWindow xuiCLootWindow)
|
|
preferences = xuiCLootWindow.GetPreferenceTrackerFromTileEntity();
|
|
if (preferences != null && preferences.AnyPreferences && _dstInventory is XUiM_PlayerInventory mPlayerInventory)
|
|
flag2 = mPlayerInventory.AddItemsUsingPreferenceTracker(_srcGrid, preferences);
|
|
XUiController[] stackControllers = (XUiController[])_srcGrid.GetItemStackControllers();
|
|
|
|
Log.Out("XUiM_LootContainerPatches-StashItems _ignoreSlots: " + _ignoreSlots);
|
|
|
|
for (int _slot = _startBottomRight ? stackControllers.Length - 1 : 0; (_startBottomRight ? (_slot >= 0 ? 1 : 0) : (_slot < stackControllers.Length ? 1 : 0)) != 0; _slot = _startBottomRight ? _slot - 1 : _slot + 1)
|
|
{
|
|
if (_ignoredSlots[_slot])
|
|
{
|
|
Log.Out("XUiM_LootContainerPatches-StashItems SLOT [" + (_slot + 1) + "] IS IGNORED");
|
|
}
|
|
|
|
if (!StackSortUtil.IsIgnoredSlot(_ignoreSlots, _ignoredSlots, _slot))
|
|
{
|
|
XUiC_ItemStack xuiCItemStack = (XUiC_ItemStack)stackControllers[_slot];
|
|
if (!xuiCItemStack.StackLock)
|
|
{
|
|
ItemStack itemStack = xuiCItemStack.ItemStack;
|
|
if (!xuiCItemStack.ItemStack.IsEmpty())
|
|
{
|
|
int count1 = itemStack.count;
|
|
_dstInventory.TryStackItem(0, itemStack);
|
|
if (itemStack.count > 0)
|
|
{
|
|
switch (_moveKind)
|
|
{
|
|
case XUiM_LootContainer.EItemMoveKind.All:
|
|
if (_dstInventory.AddItem(itemStack))
|
|
{
|
|
itemStack = ItemStack.Empty.Clone();
|
|
break;
|
|
}
|
|
break;
|
|
case XUiM_LootContainer.EItemMoveKind.FillAndCreate:
|
|
if (!_dstInventory.HasItem(itemStack.itemValue))
|
|
break;
|
|
goto case XUiM_LootContainer.EItemMoveKind.All;
|
|
}
|
|
}
|
|
if (itemStack.count == 0)
|
|
itemStack = ItemStack.Empty.Clone();
|
|
else
|
|
flag1 = false;
|
|
int count2 = itemStack.count;
|
|
if (count1 != count2)
|
|
{
|
|
xuiCItemStack.ForceSetItemStack(itemStack);
|
|
flag2 = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
XUiM_LootContainer.lastStashTime = unscaledTime;
|
|
__result = (flag1, flag2);
|
|
|
|
return false;
|
|
}
|
|
}*/
|
|
}
|