ItemGenerator.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using System;
  2. using UnityEngine;
  3. using Random = UnityEngine.Random;
  4. namespace HQFPSWeapons
  5. {
  6. [Serializable]
  7. public class ItemGenerator
  8. {
  9. [SerializeField]
  10. private Method m_Method = Method.RandomItemFromCategory;
  11. [SerializeField]
  12. [DatabaseCategory]
  13. private string m_Category = null;
  14. [SerializeField]
  15. [DatabaseItem]
  16. private string m_Item = null;
  17. [SerializeField]
  18. [Clamp(1, 999)]
  19. private int m_CountMin = 1;
  20. [SerializeField]
  21. [Clamp(1, 999)]
  22. private int m_CountMax = 1;
  23. public SaveableItem GenerateItem()
  24. {
  25. if(m_Method == Method.Empty)
  26. return null;
  27. var database = ItemDatabase.Default;
  28. ItemData itemData = null;
  29. if(m_Method == Method.CustomItem)
  30. database.TryGetItem(m_Item, out itemData);
  31. else
  32. {
  33. ItemCategory category = null;
  34. if(m_Method == Method.RandomItem)
  35. category = database.GetRandomCategory();
  36. else if(m_Method == Method.RandomItemFromCategory)
  37. category = database.GetCategoryByName(m_Category);
  38. if(category != null && category.Items.Length > 0)
  39. itemData = category.Items[Random.Range(0, category.Items.Length)];
  40. }
  41. if(itemData != null)
  42. return new SaveableItem(itemData, Random.Range(m_CountMin, m_CountMax + 1));
  43. return null;
  44. }
  45. // ------------------ Internal ---------------
  46. public enum Method
  47. {
  48. CustomItem,
  49. RandomItemFromCategory,
  50. RandomItem,
  51. Empty
  52. }
  53. }
  54. }