// --------------- HARVESTING --------------- #region Harvesting private void FindHarvestItem() { Collider[] objectsInRange = Physics.OverlapSphere(parent.transform.position, harvestDetectRange); List <BasePickableItem> pickableItemsInRange = new List <BasePickableItem>(); if (objectsInRange != null && objectsInRange.Length > 0) { int i = 0; while (i < objectsInRange.Length) { BasePickableItem pItem = objectsInRange[i].GetComponent <BasePickableItem>(); if (pItem != null) { pickableItemsInRange.Add(pItem); } i++; } if (pickableItemsInRange != null && pickableItemsInRange.Count > 0) { for (int j = 0; j < pickableItemsInRange.Count; j++) { float distance = Vector3.Distance(parent.transform.position, pickableItemsInRange[j].transform.position); if (distance < currentSmallestDistance) { currentPItem = pickableItemsInRange[j]; currentSmallestDistance = distance; } } } } }
public void SpawnObject(SpawnSettingType spawnType, Vector2 spawnPosition, int resolution) { float xStart = (_worldPosition.x * parent._chunkSize.x) - (parent._chunkSize.x / 2); float zStart = (_worldPosition.y * parent._chunkSize.y) - (parent._chunkSize.y / 2); Vector3 newSpawnPos = new Vector3(xStart + spawnPosition.x * (parent._chunkSize.x / resolution) + Random.Range(-.5f, .5f), 0, zStart + spawnPosition.y * (parent._chunkSize.y / resolution) + Random.Range(-.5f, .5f)); if (newSpawnPos.x < xStart + noSpawnZone[0] || newSpawnPos.x > xStart + parent._chunkSize.x - noSpawnZone[3] || newSpawnPos.z <zStart + noSpawnZone[1] || newSpawnPos.z> zStart + parent._chunkSize.y - noSpawnZone[2]) { return; } BaseItem[] possibleItems = myBiomeItems.GetItemArrayByType(spawnType); if (possibleItems == null || possibleItems.Length <= 0) { return; } BaseItem item = possibleItems[Random.Range(0, possibleItems.Length)]; if (item == null || item.gameObject == null) { return; } Ray ray = new Ray(new Vector3(newSpawnPos.x, 10, newSpawnPos.z), -Vector3.up); RaycastHit hitInfo; if (Physics.Raycast(ray, out hitInfo, 10, (1 << 8))) { newSpawnPos = hitInfo.point; float radius = item.transform.localScale.x + 0.2f; if (Physics.CheckSphere(newSpawnPos, radius, ~(1 << 8))) { return; } } else { return; } GameObject tmpObj = (GameObject)GameObject.Instantiate(item.gameObject, newSpawnPos, Quaternion.identity); tmpObj.GetComponent <BaseItem>().OnCreate(newSpawnPos, Quaternion.identity, ground.transform); BasePickableItem pickable = tmpObj.GetComponent <BasePickableItem>(); if (pickable) { changeableEntities.Add(tmpObj); } else { nonChangeableObject.Add(tmpObj); } }
private void ResetHarvest() { if (currentPItem != null) { currentPItem.Reset(); } parent.animationHandler.SetGatherAnimation(false); currentSmallestDistance = 500; currentPItem = null; }
private void CreateCraftedItem(Transform newSlot) { BasePickableItem item = (BasePickableItem)GameAccesPoint.Instance.mainGameState._gameItemDatabase.CreateItem(creatableItems[recipeIndex - 1], dropAnchor.position, Quaternion.identity); item.SetVisualState(false); _inventory[newSlot] = new InventoryItem(item, currentTmpVisual); currentTmpVisual = null; ConsumeCraftItems(); }
public bool AddItem(BasePickableItem item, Sprite icon, int slotIndex = -1) { bool isTool = false; if (item.GetComponent <BaseTool>()) { isTool = true; } Transform slot = null; if (slotIndex == -1) { slot = isTool ? CheckToolSlot() : FindEmptySlot(); } else { slot = FindSlotByIndex(slotIndex); //if (slot == null) { // slot = isTool ? CheckToolSlot() : FindEmptySlot(); //} } if (slot != null) { GameObject newVisual = Instantiate(inventoryVisual); InventoryItem newItem = new InventoryItem(item, newVisual); Image visualsIcon = newVisual.GetComponent <Image>(); _inventory[slot] = newItem; visualsIcon.sprite = icon; newVisual.transform.SetParent(slot); newVisual.transform.position = slot.position; newVisual.transform.localScale = Vector3.one; if (worldController != null && worldController._currentChunk != null) { GameAccesPoint.Instance.mainGameState._worldController._currentChunk.RemoveChangeableItem(item.gameObject); } item.transform.parent = null; AudioManager.Instance.PlayByName("inventory_pling_placeholder", .2f); UpdateTool(item, slot); return(true); } return(false); }
private void RecreateInventory(SavableInventory savedInventory) { Debug.Log("Recreating inventory"); List <int> keys = savedInventory.inventoryKeys; List <string> values = savedInventory.inventoryValues; for (int i = 0; i < keys.Count; i++) { if (!string.IsNullOrEmpty(values[i])) { BaseItem item = GameAccesPoint.Instance.mainGameState._gameItemDatabase.CreateItemInstance(values[i], Vector3.zero, Quaternion.identity); if (item is BasePickableItem) { BasePickableItem pickableItem = (BasePickableItem)item; pickableItem.SetVisualState(false); AddItem(pickableItem, pickableItem.myIcon, i); } } } }
public InventoryItem(BasePickableItem item, GameObject inventoryVisual) { this.item = item; this.inventoryVisual = inventoryVisual; }