public bool BuildItem(WarehouseBuildItemRequest item, bool removeExisting = false) { if (!this.HasGround(item.column, item.row) || this.HasOccupant(item.column, item.row) && !removeExisting) { return(false); } BaseItem newItem = null; if (item.boxType != null) { var prefabReference = this.File.GetPrefab <Box>(); var newObject = Instantiate(prefabReference, this.itemHolder.transform); newItem = newObject.GetComponent <Box>(); (newItem as Box).boxType = item.boxType.Value; } else if (item.markerType != null) { var prefabReference = this.File.GetPrefab <Marker>(); var newObject = Instantiate(prefabReference, this.itemHolder.transform); newItem = newObject.GetComponent <Marker>(); (newItem as Marker).markerType = item.markerType.Value; } else if (item.itemType != null) { var prefabReference = this.File.GetPrefab(Type.GetType(item.itemType)); var newObject = Instantiate(prefabReference, this.itemHolder.transform); newItem = newObject.GetComponent <BaseItem>(); } if (newItem != null) { newItem.validation = this; newItem.timeProvider = this.timeProvider; newItem.origin = item; if (this.enableOccupantEvents) { newItem.ToggleInput(true); // newItem.OnMouseDownEvent.AddListener((owner) => this.OnOccupantSelectedEvent.Invoke(owner.parent as Ground, newItem)); newItem.OnMouseUpEvent.AddListener((owner) => this.OnOccupantSelectedEvent.Invoke(owner.parent as Ground, newItem)); } return(this.PlaceItem(newItem, item.column, item.row)); } return(false); }
public bool PlaceItem(Sprite sprite, int column, int row) => this.BuildItem(WarehouseBuildItemRequest.FromSprite(sprite, column, row), true);