Exemple #1
0
    void Update()
    {
        if (currCraft)
        {
            if (currCraft.craftTime > currCraftTime)
            {
                currCraftTime += Time.deltaTime * craftSpeedMod;
                onUpdateCraftTimeFill?.Invoke(currCraftTime / currCraft.craftTime);
            }

            if (currCraft.craftTime <= currCraftTime)
            {
                if (inventoryToAddItem.IsCanFitItems(currCraft.results))
                {
                    currCraftTime -= currCraft.craftTime;

                    foreach (var result in currCraft.results)
                    {
                        inventoryToAddItem.AddItem(result.CloneItem());
                    }

                    currCraft = null;
                    onEndCraft?.Invoke();
                }
                else
                {
                    //TODO: Inventory full popup text if used by player
                }
            }
        }
    }
Exemple #2
0
    void OnClickOnItem(CraftSO craft)
    {
        selectedCraft = craft;

        inventoryToAddItem.InitInvetory(selectedCraft.results.Length);
        inventoryToRemoveItem.InitInvetory(selectedCraft.ingradients.Length);

        for (int i = 0; i < selectedCraft.results.Length; ++i)
        {
            inventoryToAddItem.SetFilter(i, selectedCraft.results[i].itemSO);
        }

        for (int i = 0; i < selectedCraft.ingradients.Length; ++i)
        {
            inventoryToRemoveItem.SetFilter(i, selectedCraft.ingradients[i].itemSO);
        }

        cgSelectCraft.interactable = cgSelectCraft.blocksRaycasts = false;
        LeanTween.cancel(cgSelectCraft.gameObject, false);
        LeanTweenEx.ChangeAlpha(cgSelectCraft, 0.0f, 0.2f).setEase(LeanTweenType.easeInOutQuad);

        cgCraftingPlace.interactable = cgCraftingPlace.blocksRaycasts = true;
        LeanTween.cancel(cgCraftingPlace.gameObject, false);
        LeanTweenEx.ChangeAlpha(cgCraftingPlace, 1.0f, 0.2f).setEase(LeanTweenType.easeInOutQuad);

        craftingPlace.ResetCraftTime();
        TryCraft();

        previousCraft = null;
    }
Exemple #3
0
    public void Init(CraftSO _craft, CraftSO.CraftPlaceType _myPlace, Action <CraftSO> _onClick)
    {
        craft         = _craft;
        isNeededPlace = craft.place.HasFlag(_myPlace);
        onClick      += _onClick;

        isEnoughIngradients = true;
        UpdateVisual();
    }
Exemple #4
0
    public bool CheckIsEnoughIngradients(CraftSO craft)
    {
        foreach (var ingradient in craft.ingradients)
        {
            if (!ContainsItem(ingradient))
            {
                return(false);
            }
        }

        return(true);
    }
Exemple #5
0
    public void Init(CraftSO _craft, Action <CraftingQueueItemUI> _onClick)
    {
        craft    = _craft;
        onClick += _onClick;

        if (craft.resultSpriteOverride)
        {
            itemImage.sprite = craft.resultSpriteOverride;
        }
        else
        {
            itemImage.sprite = craft.results[0].itemSO.sprite;
        }
    }
Exemple #6
0
    public void SelectOtherCraft()
    {
        previousCraft = selectedCraft;
        selectedCraft = null;

        if (isCrafting)
        {
            foreach (var ingradient in previousCraft.ingradients)
            {
                ItemData leftItem = GameManager.Instance.player.inventory.AddItem(ingradient.CloneItem());

                if (leftItem.count != 0)
                {
                    //TODO: Inventory full popup text
                    Vector3 pos = GameManager.Instance.player.transform.position;
                    ItemOnGround.CreateOnGround(leftItem, pos);
                    leftItem.itemSO = null;
                }
            }

            craftingPlace.AbortCraft();
        }

        inventoryToAddItem.GiveAllItemsToPlayerOrDrop(
            myBlock.MyCell.transform.position,
            new Vector2(-myBlock.MyCell.MyGrid.cellSize.x / 2, myBlock.MyCell.MyGrid.cellSize.x / 2) * 0.8f,
            new Vector2(-myBlock.MyCell.MyGrid.cellSize.y / 2, myBlock.MyCell.MyGrid.cellSize.y / 2) * 0.8f
            );
        inventoryToRemoveItem.GiveAllItemsToPlayerOrDrop(
            myBlock.MyCell.transform.position,
            new Vector2(-myBlock.MyCell.MyGrid.cellSize.x / 2, myBlock.MyCell.MyGrid.cellSize.x / 2) * 0.8f,
            new Vector2(-myBlock.MyCell.MyGrid.cellSize.y / 2, myBlock.MyCell.MyGrid.cellSize.y / 2) * 0.8f
            );


        cgCraftingPlace.interactable = cgCraftingPlace.blocksRaycasts = false;
        LeanTween.cancel(cgCraftingPlace.gameObject, false);
        LeanTweenEx.ChangeAlpha(cgCraftingPlace, 0.0f, 0.2f).setEase(LeanTweenType.easeInOutQuad);

        cgSelectCraft.interactable = cgSelectCraft.blocksRaycasts = true;
        LeanTween.cancel(cgSelectCraft.gameObject, false);
        LeanTweenEx.ChangeAlpha(cgSelectCraft, 1.0f, 0.2f).setEase(LeanTweenType.easeInOutQuad);
    }
Exemple #7
0
    void OnClickOnItem(CraftSO craft)
    {
        CraftingQueueItemUI newCraft = Instantiate(itemInQueuePrefab, queueParent.transform).GetComponent <CraftingQueueItemUI>();

        newCraft.Init(craft, OnClickOnItemInQueue);

        if (currCraft == null)
        {
            currCraft = newCraft;
            craftingPlace.Craft(currCraft.craft);
        }
        else
        {
            itemsQueueUI.Enqueue(newCraft);
        }

        foreach (var ingradient in craft.ingradients)
        {
            inventoryToRemoveItem.RemoveItem(ingradient.CloneItem());
        }
    }
Exemple #8
0
 public void AbortCraft()
 {
     currCraftTime = 0;
     currCraft     = null;
     onEndCraft?.Invoke();
 }
Exemple #9
0
 public void Craft(CraftSO craftSO)
 {
     currCraft = craftSO;
 }