private void PerformTakeOperation(TechType techType) { QuickLogger.Debug("Perform Take Operation", true); foreach (DSSRackController baseUnit in BaseRacks) { if (baseUnit.HasItem(techType)) { var data = baseUnit.GetItemDataFromServer(techType); QuickLogger.Debug("Calling Take", true); var result = baseUnit.GivePlayerItem(techType, data); if (!result) { return; //TODO Add Message } return; } } //Check connectables foreach (KeyValuePair <string, FCSConnectableDevice> fcsConnectable in FCSConnectables) { Vector2int itemSize = CraftData.GetItemSize(techType); if (fcsConnectable.Value.ContainsItem(techType) && Inventory.main.HasRoomFor(itemSize.x, itemSize.y)) { var item = fcsConnectable.Value.RemoveItemFromContainer(techType, 1); if (item == null) { continue; } DSSHelpers.GivePlayerItem(item); break; } } }
public void GivePlayerItem() { var result = DSSHelpers.GivePlayerItem(QPatch.Server.TechType, new ObjectDataTransferData { data = _items, Filters = _filters, IsServer = true }, null); if (result) { _items = null; } QuickLogger.Debug($"Items result: {_items} || Result = {result}"); }
private Pickupable PerformTakeOperation(TechType techType) { QuickLogger.Debug("Perform Take Operation", true); foreach (DSSRackController baseUnit in BaseRacks) { if (baseUnit.HasItem(techType)) { var data = baseUnit.GetItemDataFromServer(techType, out RackSlot slot); QuickLogger.Debug("Calling Take", true); if (GivePlayerItem) { var result = baseUnit.GivePlayerItem(techType, data); if (!result) { return(null); //TODO Add Message } } else { slot.Remove((ObjectData)data.data); GivePlayerItem = true; } return(data.ToPickable(techType)); } } if (!TakeFromConnectables) { TakeFromConnectables = true; return(null); } //Check connectables foreach (KeyValuePair <string, FCSConnectableDevice> fcsConnectable in FCSConnectables) { Vector2int itemSize = CraftData.GetItemSize(techType); if (fcsConnectable.Value.ContainsItem(techType) && fcsConnectable.Value.IsVisible && !fcsConnectable.Value.IsBase() && fcsConnectable.Value.IsOperational()) { var item = fcsConnectable.Value.RemoveItemFromContainer(techType, 1); if (item == null) { continue; } if (GivePlayerItem) { DSSHelpers.GivePlayerItem(item); } GivePlayerItem = true; Mod.OnBaseUpdate?.Invoke(); return(item); } } return(null); }