CharacterPickupItemAction.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using KairoEngine.Core;
  5. using KairoEngine.Inventory;
  6. using KairoEngine.SFX;
  7. namespace KairoEngine.CharacterSystem
  8. {
  9. public class CharacterPickupItemAction : IAction
  10. {
  11. CharacterController character; // Reference to the character that will move
  12. ItemContainer itemContainer;
  13. WorldItem worldItem;
  14. // Constructor
  15. public CharacterPickupItemAction(CharacterController character, WorldItem worldItem, ItemContainer itemContainer = null)
  16. {
  17. this.character = character;
  18. this.worldItem = worldItem;
  19. if(itemContainer == null) this.itemContainer = character.gameObject.GetComponent<ItemContainer>();
  20. else this.itemContainer = itemContainer;
  21. if(this.itemContainer == null)
  22. {
  23. Debug.LogError("Character does not have an ItemContainer (" + character.name + ").");
  24. }
  25. }
  26. public void Start()
  27. {
  28. if(Vector3.Distance(character.transform.position, worldItem.transform.position) <= 3)
  29. {
  30. ItemBase item = ItemLibrary.GetItemByName(worldItem.itemName);
  31. if(item.category == ItemType.firearm)
  32. {
  33. ItemBaseFirearm itemFirearm = (ItemBaseFirearm)item;
  34. ItemBaseAmmo itemAmmo = (ItemBaseAmmo)ItemLibrary.GetItemByName(worldItem.itemAmmoName);
  35. ItemFirearmRef firearmRef = new ItemFirearmRef(itemFirearm, worldItem.quantity, itemAmmo, worldItem.ammoQuantity);
  36. itemContainer.AddItem(firearmRef);
  37. SoundController.EmmitSound("pickup_weapon", character.transform.position);
  38. }
  39. else if(item.category == ItemType.ammo)
  40. {
  41. ItemBase itemBase = ItemLibrary.GetItemByName(worldItem.itemName);
  42. ItemRef itemRef = new ItemRef(itemBase, worldItem.quantity, worldItem.lastUsed);
  43. itemContainer.AddItem(itemRef);
  44. SoundController.EmmitSound("pickup_ammo", character.transform.position);
  45. }
  46. else
  47. {
  48. ItemBase itemBase = ItemLibrary.GetItemByName(worldItem.itemName);
  49. ItemRef itemRef = new ItemRef(itemBase, worldItem.quantity, worldItem.lastUsed);
  50. itemContainer.AddItem(itemRef);
  51. SoundController.EmmitSound("pickup_item", character.transform.position);
  52. }
  53. GameObject.Destroy(worldItem.gameObject);
  54. }
  55. }
  56. public void Update() { }
  57. public void End() { }
  58. public bool IsDone()
  59. {
  60. return true;
  61. }
  62. }
  63. }