ItemType.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #pragma once
  2. #include <JSON.h>
  3. #include <Text.h>
  4. #include <Trie.h>
  5. #include <Writer.h>
  6. #include "BlockType.h"
  7. #include "Effect.h"
  8. #include "ModelInfo.h"
  9. class Item;
  10. class ItemStack;
  11. class ItemSkill;
  12. class ItemSkillLevelUpRule;
  13. class ItemTypeEnum
  14. {
  15. public:
  16. static const int PLAYER_HAND = 0;
  17. };
  18. class ItemType : public virtual Framework::ReferenceCounter
  19. {
  20. protected:
  21. int id;
  22. const Framework::Text name;
  23. Framework::Text tooltipUIML;
  24. ModelInfo *model;
  25. int maxStackSize;
  26. ItemType(Framework::Text name,
  27. ModelInfo *model, int maxStackSize);
  28. virtual void loadSuperItem(
  29. Item* zItem, Framework::StreamReader* zReader) const;
  30. virtual void saveSuperItem(
  31. const Item* zItem, Framework::StreamWriter* zWriter) const;
  32. public:
  33. ~ItemType();
  34. virtual bool initialize(Game* zGame);
  35. int getId() const;
  36. const Framework::Text& getName() const;
  37. const Framework::Text& getTooltipUIML() const;
  38. virtual const ItemType* zBrokenItemType() const;
  39. virtual Item* createItem() const = 0;
  40. virtual ItemStack* createItemStack(int size) const;
  41. virtual ItemSkill* createDefaultItemSkill() const;
  42. virtual void levelUpItemSkill(ItemSkill* zSkill) const;
  43. virtual Item* loadItem(Framework::StreamReader* zReader) const;
  44. virtual void saveItem(
  45. const Item* zItem, Framework::StreamWriter* zWriter) const;
  46. virtual Item* cloneItem(const Item* zItem) const;
  47. virtual Item* breakItem(const Item* zItem) const;
  48. ModelInfo* zModel() const;
  49. virtual void setItemAttribute(Item* zItem,
  50. Framework::Text name,
  51. Framework::JSON::JSONValue* zValue) const;
  52. virtual void addItemAttributes(
  53. Item* zItem, Framework::JSON::JSONObject* zItemObjet) const;
  54. void setTypeId(int id);
  55. int getMaxStackSize() const;
  56. static Item* createBasicItem(int id,
  57. const char* name,
  58. float hp,
  59. float maxHp,
  60. float durability,
  61. float maxDurability,
  62. bool eatable,
  63. bool placeable,
  64. bool equippable,
  65. bool solid,
  66. bool usable);
  67. static int getTypeId(const char* name);
  68. static const ItemType* zByName(const char* name);
  69. };