Item.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using System;
  2. using Assets.HeroEditor4D.Common.Scripts.Data;
  3. using Assets.HeroEditor4D.InventorySystem.Scripts.Enums;
  4. using Newtonsoft.Json;
  5. namespace Assets.HeroEditor4D.InventorySystem.Scripts.Data
  6. {
  7. /// <summary>
  8. /// Represents item object for storing with game profile (please note, that item params are stored separately in params database).
  9. /// </summary>
  10. [Serializable]
  11. public class Item
  12. {
  13. public string Id; // Id is not unique. Use Hash to compare items!
  14. public Modifier Modifier;
  15. #if TAP_HEROES
  16. public ProtectedInt Count;
  17. #else
  18. public int Count;
  19. #endif
  20. public Item()
  21. {
  22. }
  23. public Item(string id, int count = 1)
  24. {
  25. Id = id;
  26. Count = count;
  27. }
  28. public Item(string id, Modifier modifier, int count = 1)
  29. {
  30. Id = id;
  31. Count = count;
  32. Modifier = modifier;
  33. }
  34. public Item Clone()
  35. {
  36. return new Item(Id, Modifier, Count);
  37. }
  38. [JsonIgnore] public ItemParams Params => ItemCollection.Active.GetItemParams(this);
  39. [JsonIgnore] public ItemSprite Sprite => ItemCollection.Active.GetItemSprite(this);
  40. [JsonIgnore] public ItemIcon Icon => ItemCollection.Active.GetItemIcon(this);
  41. [JsonIgnore] public int Hash => $"{Id}.{Modifier?.Id}.{Modifier?.Level}".GetHashCode();
  42. [JsonIgnore] public bool IsModified => Modifier != null && Modifier.Id != ItemModifier.None;
  43. [JsonIgnore] public bool IsEquipment => Params.Type == ItemType.Helmet || Params.Type == ItemType.Armor || Params.Type == ItemType.Vest || Params.Type == ItemType.Bracers || Params.Type == ItemType.Leggings || Params.Type == ItemType.Weapon || Params.Type == ItemType.Shield;
  44. [JsonIgnore] public bool IsArmor => Params.Type == ItemType.Helmet || Params.Type == ItemType.Armor || Params.Type == ItemType.Vest || Params.Type == ItemType.Bracers || Params.Type == ItemType.Leggings;
  45. [JsonIgnore] public bool IsWeapon => Params.Type == ItemType.Weapon;
  46. [JsonIgnore] public bool IsShield => Params.Type == ItemType.Shield;
  47. [JsonIgnore] public bool IsDagger => Params.Class == ItemClass.Dagger;
  48. [JsonIgnore] public bool IsSword => Params.Class == ItemClass.Sword;
  49. [JsonIgnore] public bool IsAxe => Params.Class == ItemClass.Axe;
  50. [JsonIgnore] public bool IsPickaxe => Params.Class == ItemClass.Pickaxe;
  51. [JsonIgnore] public bool IsWand => Params.Class == ItemClass.Wand;
  52. [JsonIgnore] public bool IsBlunt => Params.Class == ItemClass.Blunt;
  53. [JsonIgnore] public bool IsLance => Params.Class == ItemClass.Lance;
  54. [JsonIgnore] public bool IsMelee => Params.Type == ItemType.Weapon && Params.Class != ItemClass.Bow && Params.Class != ItemClass.Firearm;
  55. [JsonIgnore] public bool IsBow => Params.Class == ItemClass.Bow;
  56. [JsonIgnore] public bool IsFirearm => Params.Class == ItemClass.Firearm;
  57. [JsonIgnore] public bool IsOneHanded => !IsTwoHanded;
  58. [JsonIgnore] public bool IsTwoHanded => Params.Class == ItemClass.Bow || Params.Tags.Contains(ItemTag.TwoHanded);
  59. }
  60. }