public ItemBase TakeAnyItem(SegmentEntity entity) { var hopper = entity.As <StorageHopper>(); if (hopper.mPermissions == eHopperPermissions.Locked || !hopper.mbAllowLogistics) { return(null); } ItemBase ret = null; if (hopper.mnStorageUsed >= 1) { ushort cubeType; ushort cubeValue; hopper.GetSpecificCubeRoundRobin(eHopperRequestType.eAny, out cubeType, out cubeValue); if (cubeType != 0) { ret = ItemManager.SpawnCubeStack(cubeType, cubeValue, 1); } else { ret = hopper.RemoveSingleSpecificItemOrCubeRoundRobin(eHopperRequestType.eAny); } } if (ret != null) { hopper.LogisticsOperation(); hopper.RequestImmediateNetworkUpdate(); } return(ret); }
public int GetFreeSpace(SegmentEntity entity) { var conveyor = entity.As <ConveyorEntity>(); if (conveyor.mbReadyToConvey) { return(1); } return(0); }
public bool GiveItem(SegmentEntity entity, ItemBase item) { if (GetFreeSpace(entity) == 1) { var conveyor = entity.As <ConveyorEntity>(); if (item.mType == ItemType.ItemCubeStack) { ItemCubeStack cube = item as ItemCubeStack; conveyor.AddCube(cube.mCubeType, cube.mCubeValue, 1); return(true); } conveyor.AddItem(item); return(true); } return(false); }
public Boolean HasItems(SegmentEntity entity, ItemBase item, out Int32 amount) { var hopper = entity.As <StorageHopper>(); var isCube = item.mType == ItemType.ItemCubeStack; ItemCubeStack cube = null; if (isCube) { cube = item.As <ItemCubeStack>(); } amount = !isCube?hopper.CountHowManyOfItem(item.mnItemID) : hopper.CountHowManyOfType(cube.mCubeType, cube.mCubeValue); return(amount > 0); }
public ItemBase TakeItem(SegmentEntity entity, ItemBase item) { var hopper = entity.As <StorageHopper>(); var isCube = item.mType == ItemType.ItemCubeStack; ItemCubeStack cube = null; if (isCube) { cube = item.As <ItemCubeStack>(); } if (!isCube) { return(hopper.RemoveSingleSpecificItemByID(item.mnItemID)); } return(hopper.RemoveSingleSpecificCubeStack(cube)); }
public bool HasItem(SegmentEntity entity, ItemBase item) { if (GetFreeSpace(entity) == 1) { return(false); } var conveyor = entity.As <ConveyorEntity>(); if (item.mType == ItemType.ItemCubeStack) { ItemCubeStack cube = item as ItemCubeStack; if (conveyor.mCarriedCube == cube.mCubeType && conveyor.mCarriedValue == cube.mCubeValue) { return(true); } return(false); } return(item.CompareDeep(conveyor.mCarriedItem)); }
public Boolean GiveItem(SegmentEntity entity, ItemBase item) { var hopper = entity.As <StorageHopper>(); var isCube = item.mType == ItemType.ItemCubeStack; ItemCubeStack cube = null; if (isCube) { cube = item.As <ItemCubeStack>(); } if (!isCube) { return(hopper.AddItem(item)); } // Might be possible to replace with ^ as universal for Item/Cubes var currentStorage = hopper.mnStorageFree; hopper.AddCube(cube.mCubeType, cube.mCubeValue); return(currentStorage != hopper.mnStorageFree); }
public Int32 GetCapcity(SegmentEntity entity) { var hopper = entity.As <StorageHopper>(); return(hopper.mnStorageFree); }
public Boolean HasCapcity(SegmentEntity entity, UInt32 amount) { var hopper = entity.As <StorageHopper>(); return(hopper.mnStorageFree >= amount); }
public Boolean HasItems(SegmentEntity entity) { var hopper = entity.As <StorageHopper>(); return(hopper?.mnStorageUsed > 0); }