Beispiel #1
0
    // --------------- 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;
                    }
                }
            }
        }
    }
Beispiel #2
0
    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);
        }
    }
Beispiel #3
0
    private void ResetHarvest()
    {
        if (currentPItem != null)
        {
            currentPItem.Reset();
        }

        parent.animationHandler.SetGatherAnimation(false);
        currentSmallestDistance = 500;
        currentPItem            = null;
    }
Beispiel #4
0
    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();
    }
Beispiel #5
0
    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);
    }
Beispiel #6
0
    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);
                }
            }
        }
    }
Beispiel #7
0
 public InventoryItem(BasePickableItem item, GameObject inventoryVisual)
 {
     this.item            = item;
     this.inventoryVisual = inventoryVisual;
 }