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; } } }
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; }
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()); }
public LabelOnGround() { labelInfo = new Lazy <long>(GetLabelInfo); debug = new Lazy <string>(() => ItemOnGround.HasComponent <WorldItem>() ? ItemOnGround.GetComponent <WorldItem>().ItemEntity?.GetComponent <Base>()?.Name : ItemOnGround.Path); }
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(); }
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); }
//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); }
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); } } }
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); }
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); }
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; } } }
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); }
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(); }
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); } }