예제 #1
0
 public ItemStackMoveOperation(IWorldAccessor world, EnumMouseButton mouseButton, EnumModifierKey modifiers, EnumMergePriority currentPriority, int requestedQuantity = 0)
 {
     World             = world;
     MouseButton       = mouseButton;
     Modifiers         = modifiers;
     CurrentPriority   = currentPriority;
     RequestedQuantity = requestedQuantity;
 }
예제 #2
0
 public override bool CanTakeFrom(ItemSlot sourceSlot, EnumMergePriority priority = EnumMergePriority.AutoMerge)
 {
     if (CollectibleObject.IsBackPack(sourceSlot.Itemstack) && !CollectibleObject.IsEmptyBackPack(sourceSlot.Itemstack))
     {
         return(false);
     }
     return(base.CanTakeFrom(sourceSlot, priority));
 }
예제 #3
0
 public override bool CanTakeFrom(ItemSlot sourceSlot, EnumMergePriority priority = EnumMergePriority.AutoMerge)
 {
     if (!IsDressType(sourceSlot.Itemstack, type))
     {
         return(false);
     }
     return(base.CanTakeFrom(sourceSlot, priority));
 }
예제 #4
0
        /// <summary>
        /// Whether or not this slot can take the item from the source slot.
        /// </summary>
        /// <param name="sourceSlot"></param>
        /// <returns></returns>
        public virtual bool CanTakeFrom(ItemSlot sourceSlot, EnumMergePriority priority = EnumMergePriority.AutoMerge)
        {
            if (inventory?.PutLocked == true)
            {
                return(false);
            }

            ItemStack sourceStack = sourceSlot.Itemstack;

            if (sourceStack == null)
            {
                return(false);
            }

            bool flagsok = (sourceStack.Collectible.GetStorageFlags(sourceStack) & StorageType) > 0;

            return(flagsok && (itemstack == null || itemstack.Collectible.GetMergableQuantity(itemstack, sourceStack, priority) > 0) && GetRemainingSlotSpace(sourceStack) > 0);
        }
예제 #5
0
        public override bool CanTakeFrom(ItemSlot sourceSlot, EnumMergePriority priority = EnumMergePriority.AutoMerge)
        {
            if (inventory?.PutLocked == true)
            {
                return(false);
            }

            ItemStack sourceStack = sourceSlot.Itemstack;

            if (sourceStack == null)
            {
                return(false);
            }

            WaterTightContainableProps props = BlockLiquidContainerBase.GetInContainerProps(sourceStack);

            return(props != null && (itemstack == null || itemstack.Collectible.GetMergableQuantity(itemstack, sourceStack, priority) > 0) && RemainingSlotSpace > 0);
        }
예제 #6
0
        // Unfortunately, only some of ItemSlot's method make use of them.

        public override bool CanTakeFrom(ItemSlot sourceSlot, EnumMergePriority priority) => false;
 public override bool CanTakeFrom(ItemSlot sourceSlot, EnumMergePriority priority = EnumMergePriority.AutoMerge)
 {
     return(CanBeStackedWithOutputSlotItem(sourceSlot as ItemSlot) && base.CanTakeFrom(sourceSlot, priority));
 }
예제 #8
0
 public override bool CanTakeFrom(ItemSlot sourceSlot, EnumMergePriority priority = EnumMergePriority.AutoMerge)
 {
     return(false);
 }
예제 #9
0
        public override int GetMergableQuantity(ItemStack sinkStack, ItemStack sourceStack, EnumMergePriority priority)
        {
            if (priority == EnumMergePriority.DirectMerge)
            {
                if (sinkStack.ItemAttributes?["warmth"].Exists != true || sinkStack.ItemAttributes?["warmth"].AsFloat() == 0)
                {
                    return(base.GetMergableQuantity(sinkStack, sourceStack, priority));
                }

                float repstr = sourceStack?.ItemAttributes?["clothingRepairStrength"].AsFloat(0) ?? 0;
                if (repstr > 0)
                {
                    if (sinkStack.Attributes.GetFloat("condition") < 1)
                    {
                        return(1);
                    }
                    return(0);
                }
            }


            return(base.GetMergableQuantity(sinkStack, sourceStack, priority));
        }
예제 #10
0
 public ItemStackMergeOperation(IWorldAccessor world, EnumMouseButton mouseButton, EnumModifierKey modifiers, EnumMergePriority currentPriority, int requestedQuantity) : base(world, mouseButton, modifiers, currentPriority, requestedQuantity)
 {
 }
예제 #11
0
 public override bool CanTakeFrom(ItemSlot sourceSlot, EnumMergePriority priority = EnumMergePriority.AutoMerge)
 {
     return(base.CanTakeFrom(sourceSlot, priority) && work(sourceSlot));
 }
예제 #12
0
        public override int GetMergableQuantity(ItemStack sinkStack, ItemStack sourceStack, EnumMergePriority priority)
        {
            if (priority == EnumMergePriority.DirectMerge && sinkStack.Attributes.GetBool("recordMode"))
            {
                sinkStack.Attributes.SetBool("recordMode", false);
                sinkStack.Attributes.SetString("cacheName", sourceStack.GetName());
                sinkStack.Attributes.SetItemstack("workStack", sourceStack);
            }

            return(base.GetMergableQuantity(sinkStack, sourceStack, priority));
        }