Upload from upload_mods.ps1
This commit is contained in:
67
Scripts/Utilities/EntityInventoryExtension.cs
Normal file
67
Scripts/Utilities/EntityInventoryExtension.cs
Normal file
@@ -0,0 +1,67 @@
|
||||
public static class EntityInventoryExtension
|
||||
{
|
||||
public static void TryStackItem(this EntityAlive self, ItemStack stack)
|
||||
{
|
||||
if (self.bag.TryStackItem(stack))
|
||||
return;
|
||||
self.inventory.TryStackItem(stack);
|
||||
}
|
||||
|
||||
public static void TryRemoveItem(this EntityAlive self, int count, ItemValue value)
|
||||
{
|
||||
int decFromInv = self.bag.DecItem(value, count) - count;
|
||||
if (decFromInv > 0)
|
||||
self.inventory.DecItem(value, decFromInv);
|
||||
}
|
||||
|
||||
public static int GetItemCount(this EntityAlive self, ItemValue value)
|
||||
{
|
||||
return self.inventory.GetItemCount(value) + self.bag.GetItemCount(value);
|
||||
}
|
||||
|
||||
public static bool TryStackItem(this Bag self, ItemStack stack)
|
||||
{
|
||||
ItemStack[] slots = self.GetSlots();
|
||||
TryStackItem(slots, stack);
|
||||
self.SetSlots(slots);
|
||||
return stack.count == 0;
|
||||
}
|
||||
|
||||
public static bool TryStackItem(this Inventory self, ItemStack stack)
|
||||
{
|
||||
ItemStack[] slots = self.GetSlots();
|
||||
TryStackItem(slots, stack);
|
||||
self.CallOnToolbeltChangedInternal();
|
||||
return stack.count == 0;
|
||||
}
|
||||
|
||||
public static void TryStackWith(this ItemStack self, ItemStack other)
|
||||
{
|
||||
int maxStackCount = other.itemValue.ItemClass.Stacknumber.Value;
|
||||
if (self.IsEmpty())
|
||||
{
|
||||
self.itemValue = other.itemValue.Clone();
|
||||
self.count = Utils.FastMin(maxStackCount, other.count);
|
||||
other.count -= self.count;
|
||||
return;
|
||||
}
|
||||
|
||||
if (self.itemValue.type != other.itemValue.type || self.itemValue.Texture != other.itemValue.Texture || self.count >= maxStackCount)
|
||||
return;
|
||||
|
||||
int add = Utils.FastMin(maxStackCount - self.count, other.count);
|
||||
self.count += add;
|
||||
other.count -= add;
|
||||
}
|
||||
|
||||
private static void TryStackItem(ItemStack[] slots, ItemStack stack)
|
||||
{
|
||||
foreach (var slot in slots)
|
||||
{
|
||||
slot.TryStackWith(stack);
|
||||
if (stack.count == 0)
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user