Example #1
0
    public void GiveAllItemsToPlayerOrDrop(Vector3 position, Vector2 rangeX, Vector2 rangeY)
    {
        if (items == null)
        {
            return;
        }

        foreach (var item in items)
        {
            if (item != null && item.item != null && item.item.itemSO != null)
            {
                ItemData leftItem = GameManager.Instance.player.inventory.AddItem(item.item);

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

                item.item.itemSO = null;
                item.item.count  = 0;
            }
        }
    }
Example #2
0
    void TryPickupItemOnGroundOnMouseUp()
    {
        bool isOverUI = UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject();

        if (isOverUI)
        {
            return;
        }

        RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Mouse.current.position.ReadValue()), Vector2.zero, 0, UnityConstants.Layers.ItemsOnGroundMask);

        if (
            hit.collider != null &&
            ((Vector3)hit.point - GameManager.Instance.player.mover.transform.position).sqrMagnitude <= GameManager.Instance.player.maxInteractDistanceSqr &&
            hit.collider.GetComponent <ItemOnGround>() == buttonDownItem
            )
        {
            ItemData leftItem = GameManager.Instance.player.inventory.AddItem(buttonDownItem.item);

            if (leftItem.count == 0)
            {
                Destroy(buttonDownItem.gameObject);
            }
            else
            {
                //TODO: Inventory full popup text
                buttonDownItem.item = leftItem;
                buttonDownItem.Init();
            }
        }

        buttonDownItem = null;
    }
Example #3
0
    public void OnInspectorGUI()
    {
        ItemOnGround myItemOnGround = (ItemOnGround)target;

        /* Set the default item: 1 mushroom. */
        if (myItemOnGround.item == null)
        {
            myItemOnGround.item = new ItemObject();
        }

        myItemOnGround.itemBcTrigger = EditorGUILayout.ObjectField("Pickup Trigger Range", myItemOnGround.itemBcTrigger, typeof(BoxCollider2D), false) as BoxCollider2D;
        myItemOnGround.itemBcHitbox  = EditorGUILayout.ObjectField("Item Hitbox", myItemOnGround.itemBcHitbox, typeof(BoxCollider2D), false) as BoxCollider2D;

        EditorGUILayout.Space();

        // TODO: bug, doesnt initialize the item until you play the game THEN edit the id.
        /* Show/set the item ID, changes the item as you set it. */
        myItemOnGround.item.id = EditorGUILayout.IntSlider("Item ID", myItemOnGround.item.id, 0, ItemDatabaseSO.itemList.Count);
        //myItemOnGround.item.ItemID = EditorGUILayout.IntField("Item ID", myItemOnGround.item.ItemID);
        int itemType = ItemDatabaseSO.itemList[myItemOnGround.item.id].type;

        myItemOnGround.GetComponent <ItemOnGround>().Initialize(myItemOnGround.item.id, myItemOnGround.amount);

        /* Show/get the item amount. */
        myItemOnGround.amount = EditorGUILayout.IntField("Amount", myItemOnGround.amount);


        /* Show the item type. */
        EditorGUILayout.LabelField("Item Type", "" + myItemOnGround.item.GetType());
    }
Example #4
0
        public LabelOnGround()
        {
            labelInfo = new Lazy <long>(GetLabelInfo);

            debug = new Lazy <string>(() => ItemOnGround.HasComponent <WorldItem>()
                ? ItemOnGround.GetComponent <WorldItem>().ItemEntity?.GetComponent <Base>()?.Name
                : ItemOnGround.Path);
        }
Example #5
0
File: Cell.cs Project: Team-on/LD48
    public void Mine(float deltaTime, float mineToolForce, bool isNeedLoot = true)
    {
        if (foregroundBlock)
        {
            currMineTime += deltaTime * (mineToolForce - foregroundBlock.neededForceToBroke + 1);
            float brokePersent = currMineTime / foregroundBlock.neededTimeToBroke;

            if (brokePersent >= 1)
            {
                currMineTime = 0;
                destoyVisual.UpdateVisual(0);

                if (isNeedLoot)
                {
                    ItemOnGround.CreateOnGround(
                        foregroundBlock.itemToDrop.item.CloneItem().SetCount(1),
                        transform.position + new Vector3(Random.Range(-MyGrid.cellSize.x / 2 * 0.8f, MyGrid.cellSize.x / 2 * 0.8f), Random.Range(-MyGrid.cellSize.y / 2 * 0.8f, MyGrid.cellSize.y / 2 * 0.8f))
                        );
                }

                if (foregroundBlock.craftPlace)
                {
                    foregroundBlock.craftPlace.OnMined();
                }
                foregroud = CellContentForegroud.None;
                RecreateVisualAfterChangeType();
            }
            else
            {
                destoyVisual.UpdateVisual(brokePersent);
            }
        }
        else if (oreBlock && isNeedLoot)
        {
            currMineTime += deltaTime * (mineToolForce - oreBlock.neededForceToBroke + 1);
            float brokePersent = currMineTime / oreBlock.neededTimeToBroke;

            if (brokePersent >= 1)
            {
                currMineTime -= oreBlock.neededTimeToBroke;
                destoyVisual.UpdateVisual(0);

                ItemOnGround.CreateOnGround(
                    oreBlock.itemToDrop.item.CloneItem().SetCount(1),
                    transform.position + new Vector3(Random.Range(-MyGrid.cellSize.x / 2 * 0.8f, MyGrid.cellSize.x / 2 * 0.8f), Random.Range(-MyGrid.cellSize.y / 2 * 0.8f, MyGrid.cellSize.y / 2 * 0.8f))
                    );
            }
            else
            {
                destoyVisual.UpdateVisual(brokePersent);
            }
        }

        FillDebugText();
    }
Example #6
0
    static public ItemOnGround CreateOnGround(ItemData item, Vector3 pos)
    {
        pos.z = 0;

        ItemOnGround groundItem = Instantiate(GameManager.Instance.GetItemOnGround(item.itemSO.type), pos, Quaternion.identity, null).GetComponent <ItemOnGround>();

        groundItem.item.count = item.count;
        groundItem.Init();

        return(groundItem);
    }
Example #7
0
    //method to drop item from inventory into worldspace
    //store objectsinmap object in heirarcy to local
    //instatiate ongroundprefab assigned to item
    //remove item from stack
    public void Drop()
    {
        GameObject   container          = GameObject.FindGameObjectWithTag("ObjectsInMapContainer");
        GameObject   itemOnGroundObject = Instantiate(onGroundPrefab, Player.instance.transform.position, Quaternion.identity, container.transform);
        ItemOnGround itemOnGround       = itemOnGroundObject.GetComponent <ItemOnGround>();

        if (itemOnGround != null)
        {
            itemOnGround.item = this;
        }

        Player.instance.inventory.RemoveItemStack(this);
    }
Example #8
0
    public void Die()
    {
        Random       r    = new Random();
        ItemOnGround loot = ObjectPool.instance.GenerateLoot();

        loot.gameObject.transform.position = transform.position;
        for (int i = 0; i < trophies.Count; i++)
        {
            Trophy t = trophies[i];
            double b = r.NextDouble();
            if (t.probability > b)
            {
                loot.items.Add(t.itemEnum);
                loot.counts.Add(t.count);
            }
        }
    }
Example #9
0
    public void PickUpItem()
    {
        am.ac.animator.SetTrigger("pickUp");
        ItemOnGround itemOnGround = overlapEcastms[0].gameObject.GetComponent <ItemOnGround>();

        itemOnGround.OnAction();

        am.sfxm.PickUp();

        List <ItemEnum> items  = itemOnGround.items;
        List <int>      counts = itemOnGround.counts;

        for (int i = 0; i < items.Count; i++)
        {
            am.inventory.AddItem(Item.GetItem(items[i]), counts[i]);
        }
        am.ActorUIManager.ShowItemOnGround(items, counts);
    }
Example #10
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);
    }
Example #11
0
    public void DropAllItemsToGround(Vector3 position, Vector2 rangeX, Vector2 rangeY)
    {
        if (items == null)
        {
            return;
        }

        foreach (var item in items)
        {
            if (item != null && item.item != null && item.item.itemSO != null)
            {
                ItemOnGround.CreateOnGround(
                    item.item,
                    position + new Vector3(rangeX.GetRandomValueFloat(), rangeY.GetRandomValueFloat())
                    );

                item.item.itemSO = null;
                item.item.count  = 0;
            }
        }
    }
Example #12
0
    bool TryPickupItemOnGroundOnMouseDown()
    {
        bool isOverUI = UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject();

        if (isOverUI)
        {
            return(false);
        }

        RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Mouse.current.position.ReadValue()), Vector2.zero, 0, UnityConstants.Layers.ItemsOnGroundMask);

        if (
            hit.collider != null &&
            ((Vector3)hit.point - GameManager.Instance.player.mover.transform.position).sqrMagnitude <= GameManager.Instance.player.maxInteractDistanceSqr
            )
        {
            buttonDownItem = hit.collider.GetComponent <ItemOnGround>();
            return(true);
        }
        return(false);
    }
Example #13
0
    public void OnEndDrag(PointerEventData eventData)
    {
        if (draggingSlot == null)
        {
            return;
        }

        if (eventData.hovered.Count == 0)
        {
            Cell cell = GameManager.Instance.GetCellAtMousePosWithInteractClamp(out Vector2 dropPos);

            if (cell && cell.foregroud == Cell.CellContentForegroud.None)
            {
                ItemOnGround.CreateOnGround(item, dropPos);
                item.itemSO = null;
            }
        }

        draggingSlot = null;
        DrawItem();
        inventory?.onInventoryChangeEvent();
    }
Example #14
0
    void OnClickOnItemInQueue(CraftingQueueItemUI craftItemUI)
    {
        foreach (var ingradient in craftItemUI.craft.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;
            }
        }

        if (craftItemUI == currCraft)
        {
            craftingPlace.AbortCraft();
        }
        else
        {
            Destroy(craftItemUI.gameObject);
        }
    }