Beispiel #1
0
        public bool TryTakeItem(StorageUserInterface sourceEntity, out ItemBase item, out ushort cubeType,
                                out ushort cubeValue, bool sendImmediateNetworkUpdate)
        {
            item      = null;
            cubeType  = 0;
            cubeValue = 0;

            if (!Enabled)
            {
                return(false);
            }

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

            var exemplarCopy = Exemplar.NewInstance();

            exemplarCopy.SetAmount(1);
            var itemBase = StorageIoService.GetStorageController().GetItems()
                           .Find(x => x.mnItemID == exemplarCopy.mnItemID);

            if (itemBase != null && itemBase.GetAmount() > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
        public bool TryExtractAny(StorageUserInterface sourceEntity, int amount, out ItemBase item)
        {
            ushort num;
            ushort num2;
            int    num3;

            return(this.TryExtract(eHopperRequestType.eAny, -1, 0, 0, false, amount, amount, false, false, false, true, false, out item, out num, out num2, out num3));
        }
        public bool TryInsert(StorageUserInterface sourceEntity, ushort cube, ushort value, int amount)
        {
            int num;
            int num2;

            this.TryInsert(null, cube, value, amount, false, false, false, out num, out num2);
            return(num > 0);
        }
        public bool TryInsert(StorageUserInterface sourceEntity, ItemBase item)
        {
            int num;
            int num2;

            this.TryInsert(item, 0, 0, 0, false, false, false, out num, out num2);
            return(num > 0);
        }
        public int TryPartialInsert(StorageUserInterface sourceEntity, ushort cube, ushort value, int amount)
        {
            int result;
            int num;

            this.TryInsert(null, cube, value, amount, true, false, false, out result, out num);
            return(result);
        }
        public bool TryDeliverItem(StorageUserInterface sourceEntity, ItemBase item, ushort cubeType, ushort cubeValue, bool sendImmediateNetworkUpdate)
        {
            int num;
            int num2;

            this.TryInsert(item, cubeType, cubeValue, 1, false, false, false, out num, out num2);
            return(num > 0);
        }
        public bool TryExtractItemsOrCubes(StorageUserInterface sourceEntity, int itemId, ushort cube, ushort value, int amount, out ItemBase item)
        {
            ushort num;
            ushort num2;
            int    num3;

            return(this.TryExtract(eHopperRequestType.eAny, itemId, cube, value, false, amount, amount, false, false, false, true, false, out item, out num, out num2, out num3));
        }
        public int TryPartialExtractItemsOrCubes(StorageUserInterface sourceEntity, int itemId, ushort cube, ushort value, int amount, out ItemBase item)
        {
            ushort num;
            ushort num2;
            int    result;

            this.TryExtract(eHopperRequestType.eAny, itemId, cube, value, false, 1, amount, false, false, false, true, false, out item, out num, out num2, out result);
            return(result);
        }
        public int TryPartialExtractCubes(StorageUserInterface sourceEntity, ushort cube, ushort value, int amount)
        {
            ItemBase itemBase;
            ushort   num;
            ushort   num2;
            int      result;
            bool     flag = this.TryExtract(eHopperRequestType.eAny, -1, cube, value, false, 1, amount, false, false, false, false, false, out itemBase, out num, out num2, out result);

            return(result);
        }
        public int TryPartialExtractItems(StorageUserInterface sourceEntity, int itemId, int amount)
        {
            ItemBase itemBase;
            ushort   num;
            ushort   num2;
            int      result;

            this.TryExtract(eHopperRequestType.eAny, itemId, 0, 0, false, 1, amount, false, false, true, false, false, out itemBase, out num, out num2, out result);
            return(result);
        }
        // From ItemSupplierInterface
        public bool PeekItem(StorageUserInterface storageUserInterface, out ItemBase item, out ushort cubeType, out ushort cubeValue)
        {
            cubeType = cubeValue = 0;
            SegmentEntity sourceEntity = storageUserInterface as SegmentEntity;

            if (sourceEntity == null || carriedItem == null || !outputLocation.Allow(sourceEntity))
            {
                //                ModLoader.log("PeekItem failed in precheck: sourceEntity == {0}, carriedItem=={1}, inputPort.Allow == {2}", sourceEntity, carriedItem, inputLocation.Allow(sourceEntity));
                item = null;
                return(false);
            }

            item = carriedItem;
            return(true);
        }
 public bool TryDeliverItem(StorageUserInterface sourceEntity, ItemBase item, ushort cubeType, ushort cubeValue, bool sendImmediateNetworkUpdate)
 {
     if (!isValidLensID(item.mnItemID))
     {
         return(false);                               //Not a lens!
     }
     if (item.GetAmount() <= 0)
     {
         return(false);
     }
     if (item.mnItemID != mTargetLens.mnItemID)
     {
         return(false);                                       //Must be correct type!
     }
     if (item.GetAmount() > getStorageAvailable())
     {
         return(false);
     }
     AddLenses(item.GetAmount());
     MarkDirtyDelayed();
     return(true);
 }
        // From ItemConsumerInterface
        // RECEIVE an item from SourceEntity
        public bool TryDeliverItem(StorageUserInterface storageUserInterface, ItemBase item, ushort cubeType, ushort cubeValue, bool sendImmediateNetworkUpdate)
        {
            SegmentEntity sourceEntity = storageUserInterface as SegmentEntity;

            if (sourceEntity == null || carriedItem != null || !inputLocation.Allow(sourceEntity))
            {
//                ModLoader.log("TryDeliverItem failed in precheck: sourceEntity == {0}, carriedItem=={1}, inputPort.Allow == {2}", sourceEntity, carriedItem, inputLocation.Allow(sourceEntity));
                return(false);
            }
            if (item == null)
            {
                item = ItemManager.SpawnCubeStack(cubeType, cubeValue, 1);
            }

            carriedItem = item;
            SetAnimationState(AnimateCarryItem());
            if (sendImmediateNetworkUpdate)
            {
                this.RequestImmediateNetworkUpdate();
            }
            return(true);
        }
        // From ItemSupplierInterface
        // sourceEntity wants us to DELIVER an item to them
        public bool TryTakeItem(StorageUserInterface storageUserInterface, out ItemBase item, out ushort cubeType, out ushort cubeValue, bool sendImmediateNetworkUpdate)
        {
            cubeValue = cubeType = 0;
            SegmentEntity sourceEntity = storageUserInterface as SegmentEntity;


            // check to see if we have carried the item fully!
            if (sourceEntity == null || carriedItem == null || !outputLocation.Allow(sourceEntity))
            {
//                ModLoader.log("TryTakeItem failed in precheck: sourceEntity == {0}, carriedItem=={1}, inputPort.Allow == {2}", sourceEntity, carriedItem, inputLocation.Allow(sourceEntity));
                item = null;
                return(false);
            }


            item        = carriedItem;
            carriedItem = null;
            if (sendImmediateNetworkUpdate)
            {
                this.RequestImmediateNetworkUpdate();
            }
            return(true);
        }
        public int TryPartialInsert(StorageUserInterface sourceEntity, ref ItemBase item, bool alwaysCloneItem, bool updateSourceItem)
        {
            int result;
            int num;

            this.TryInsert(item, 0, 0, 0, true, false, alwaysCloneItem, out result, out num);
            if (updateSourceItem && (item is ItemStack || item is ItemCubeStack))
            {
                if (num <= 0)
                {
                    item = null;
                }
                else
                {
                    ItemManager.SetItemCount(item, num);
                }
            }
            else if (updateSourceItem)
            {
                item = null;
            }
            return(result);
        }
Beispiel #16
0
 public bool TryExtractItems(StorageUserInterface sourceEntity, int itemId, int amount)
 {
     return(false);
 }
Beispiel #17
0
 public bool TryExtractAny(StorageUserInterface sourceEntity, int amount, out ItemBase item)
 {
     item = null; return(false);
 }
Beispiel #18
0
 public int TryPartialExtractItems(StorageUserInterface sourceEntity, int itemId, int amount, out ItemBase item)
 {
     item = null; return(0);
 }
Beispiel #19
0
 public int TryPartialExtractItems(StorageUserInterface sourceEntity, int itemId, int amount)
 {
     return(0);
 }
Beispiel #20
0
 public bool TryInsert(StorageUserInterface sourceEntity, ItemBase item)
 {
     return(false);
 }
Beispiel #21
0
 public int TryPartialExtractItemsOrCubes(StorageUserInterface sourceEntity, int itemId, ushort cube, ushort value, int amount)
 {
     return(0);
 }
Beispiel #22
0
 public bool TryInsert(StorageUserInterface sourceEntity, ushort cube, ushort value, int amount)
 {
     return(false);
 }
Beispiel #23
0
 public int TryPartialInsert(StorageUserInterface sourceEntity, ref ItemBase item, bool alwaysCloneItem, bool updateSourceItem)
 {
     return(0);
 }
Beispiel #24
0
 public int TryPartialInsert(StorageUserInterface sourceEntity, ushort cube, ushort value, int amount)
 {
     return(0);
 }
Beispiel #25
0
        public bool TryDeliverItem(StorageUserInterface sourceEntity, ItemBase item, ushort cubeType, ushort cubeValue,
                                   bool sendImmediateNetworkUpdate)
        {
            if (!WorldScript.mbIsServer)
            {
                return(false);
            }
            if (_incomingItem != null || sourceEntity == null || (item == null && cubeType == 0 && cubeValue == 0))
            {
                return(false);
            }

            if (item == null)
            {
                item = ItemManager.SpawnCubeStack(cubeType, cubeValue, 1);
            }

            var storageController = StorageIoService.GetStorageController();

            if (storageController == null || !storageController.HasPower())
            {
                return(false);
            }

            if (_nextInsertDirection == Direction.LEFT)
            {
                _nextInsertDirection = Direction.RIGHT;
            }
            else if (_nextInsertDirection == Direction.RIGHT)
            {
                _nextInsertDirection = Direction.FRONT;
            }
            else if (_nextInsertDirection == Direction.FRONT)
            {
                _nextInsertDirection = Direction.LEFT;
            }

            SegmentEntity segment = (SegmentEntity)sourceEntity;

            PositionUtils.GetSegmentPos(MachineSides.Left, mnX, mnY, mnZ, out long x, out long y, out long z);
            if (_nextInsertDirection == Direction.LEFT && PositionUtils.IsSegmentPositionEqual(segment, x, y, z))
            {
                _incomingItem = item;
            }

            PositionUtils.GetSegmentPos(MachineSides.Right, mnX, mnY, mnZ, out x, out y, out z);
            if (_nextInsertDirection == Direction.RIGHT && PositionUtils.IsSegmentPositionEqual(segment, x, y, z))
            {
                _incomingItem = item;
            }

            PositionUtils.GetSegmentPos(MachineSides.Front, mnX, mnY, mnZ, out x, out y, out z);
            if (_nextInsertDirection == Direction.FRONT && PositionUtils.IsSegmentPositionEqual(segment, x, y, z))
            {
                _incomingItem = item;
            }

            MarkDirtyDelayed();
            if (_incomingItem == null)
            {
                return(false);
            }

            if (sendImmediateNetworkUpdate)
            {
                RequestImmediateNetworkUpdate();
            }

            return(true);
        }
Beispiel #26
0
 public bool TryExtractItemsOrCubes(StorageUserInterface sourceEntity, int itemId, ushort cube, ushort value, int amount)
 {
     return(false);
 }