123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- 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<ItemContainer>();
- 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;
- }
- }
- }
|