public void TakeItem() { PlayerData pdata = PlayerData.Get(); if (CanTakeItem()) { int slot = pdata.AddItem(data.id, quantity); //Add to inventory if (was_dropped) { pdata.RemoveDroppedItem(unique_id.unique_id); //Removed from dropped items } else { pdata.RemoveObject(GetUID()); //Taken from map } Destroy(gameObject); //Take fx ItemTakeFX.DoTakeFX(transform.position, data, slot); TheAudio.Get().PlaySFX("item", take_audio); if (take_fx != null) { Instantiate(take_fx, transform.position, Quaternion.identity); } } }
public override void DoAction(PlayerCharacter character, ItemSlot slot, Selectable select) { if (PlayerData.Get().CanTakeItem(cooked_item.id, 1)) { PlayerData.Get().RemoveItemAt(slot.slot_index, 1); int islot = PlayerData.Get().AddItem(cooked_item.id, 1); //Take fx ItemTakeFX.DoTakeFX(select.transform.position, cooked_item, islot); } }
public override void DoAction(PlayerCharacter character, ItemSlot slot1, ItemSlot slot2) { if (PlayerData.Get().CanTakeItem(cut_item.id, 1)) { PlayerData.Get().RemoveItemAt(slot1.slot_index, 1); int islot = PlayerData.Get().AddItem(cut_item.id, 1); //Take fx ItemTakeFX.DoTakeFX(character.transform.position, cut_item, islot); } }
//Gain an new item directly to inventory public void GainItem(GameObject source, ItemData item, int quantity, bool animate = true) { if (item != null && PlayerData.Get().CanTakeItem(item.id, quantity)) { if (animate) { StartCoroutine(GainItemRoutine(source, item, quantity)); } else { int islot = PlayerData.Get().AddItem(item.id, quantity); ItemTakeFX.DoTakeFX(source.transform.position, item, islot); } } }
private IEnumerator GainItemRoutine(GameObject source, ItemData item, int quantity) { is_action = true; if (source != null) { FaceTorward(source.transform.position); } if (onGainItem != null) { onGainItem.Invoke(item); } yield return(new WaitForSeconds(0.4f)); int islot = PlayerData.Get().AddItem(item.id, quantity); ItemTakeFX.DoTakeFX(source.transform.position, item, islot); is_action = false; }