RandomItems.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using Sirenix.OdinInspector;
  5. namespace KairoEngine.Inventory
  6. {
  7. [System.Serializable]
  8. public class RandomItem
  9. {
  10. public ItemBase item;
  11. [Range(0, 100f)] public float probability = 5f;
  12. [MinMaxSlider(0, 1000, true)] public Vector2 quantity = new Vector2(1, 1);
  13. }
  14. public class RandomItems : MonoBehaviour
  15. {
  16. public bool addItems = true;
  17. [ShowInInspector] public ItemContainer itemContainer;
  18. public List<RandomItem> items = new List<RandomItem>();
  19. void Start()
  20. {
  21. if(itemContainer == null)
  22. {
  23. Debug.LogError("Missing item container in RandomItems for " + gameObject.name);
  24. return;
  25. }
  26. if(addItems)
  27. {
  28. addItems = false;
  29. AddRandomItems();
  30. }
  31. }
  32. private void AddRandomItems()
  33. {
  34. foreach (var item in items)
  35. {
  36. float dice = Random.Range(0, 101);
  37. if(dice <= item.probability)
  38. {
  39. AddItem(item);
  40. }
  41. }
  42. }
  43. private void AddItem(RandomItem item)
  44. {
  45. int quantity = Random.Range((int)item.quantity.x, ((int)item.quantity.y) + 1);
  46. if(item.item.category == ItemType.firearm)
  47. {
  48. ItemBaseFirearm itemBaseFirearm = (ItemBaseFirearm)item.item;
  49. ItemBaseAmmo itemBaseAmmo = (ItemBaseAmmo)itemBaseFirearm.ammoType;
  50. int ammo = itemBaseFirearm.ammoCapacity;
  51. ItemFirearmRef firearmRef = new ItemFirearmRef(itemBaseFirearm, quantity, itemBaseAmmo, ammo);
  52. itemContainer.AddItem(firearmRef);
  53. }
  54. else
  55. {
  56. ItemRef itemRef = new ItemRef(item.item, quantity, 10000);
  57. itemContainer.AddItem(itemRef);
  58. }
  59. }
  60. }
  61. }