using System.Collections; using System.Collections.Generic; using UnityEngine; using KairoEngine.Core; using KairoEngine.Inventory; using KairoEngine.SFX; namespace KairoEngine.CharacterSystem { public class CharacterPickupItemAction : IAction { CharacterController character; // Reference to the character that will move ItemContainer itemContainer; WorldItem worldItem; // Constructor public CharacterPickupItemAction(CharacterController character, WorldItem worldItem, ItemContainer itemContainer = null) { this.character = character; this.worldItem = worldItem; if(itemContainer == null) this.itemContainer = character.gameObject.GetComponent(); else this.itemContainer = itemContainer; if(this.itemContainer == null) { Debug.LogError("Character does not have an ItemContainer (" + character.name + ")."); } } public void Start() { if(Vector3.Distance(character.transform.position, worldItem.transform.position) <= 3) { ItemBase item = ItemLibrary.GetItemByName(worldItem.itemName); if(item.category == ItemType.firearm) { ItemBaseFirearm itemFirearm = (ItemBaseFirearm)item; ItemBaseAmmo itemAmmo = (ItemBaseAmmo)ItemLibrary.GetItemByName(worldItem.itemAmmoName); ItemFirearmRef firearmRef = new ItemFirearmRef(itemFirearm, worldItem.quantity, itemAmmo, worldItem.ammoQuantity); itemContainer.AddItem(firearmRef); SoundController.EmmitSound("pickup_weapon", character.transform.position); } else if(item.category == ItemType.ammo) { ItemBase itemBase = ItemLibrary.GetItemByName(worldItem.itemName); ItemRef itemRef = new ItemRef(itemBase, worldItem.quantity, worldItem.lastUsed); itemContainer.AddItem(itemRef); SoundController.EmmitSound("pickup_ammo", character.transform.position); } else { ItemBase itemBase = ItemLibrary.GetItemByName(worldItem.itemName); ItemRef itemRef = new ItemRef(itemBase, worldItem.quantity, worldItem.lastUsed); itemContainer.AddItem(itemRef); SoundController.EmmitSound("pickup_item", character.transform.position); } GameObject.Destroy(worldItem.gameObject); } } public void Update() { } public void End() { } public bool IsDone() { return true; } } }