ItemType.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. Framework::RCArray<Framework::Text> groups;
  27. ItemType(Framework::Text name,
  28. ModelInfo* model,
  29. int maxStackSize,
  30. Framework::RCArray<Framework::Text> groups);
  31. virtual void loadSuperItem(
  32. Item* zItem, Framework::StreamReader* zReader) const;
  33. virtual void saveSuperItem(
  34. const Item* zItem, Framework::StreamWriter* zWriter) const;
  35. public:
  36. ~ItemType();
  37. virtual bool initialize(Game* zGame);
  38. int getId() const;
  39. const Framework::Text& getName() const;
  40. const Framework::Text& getTooltipUIML() const;
  41. virtual const ItemType* zBrokenItemType() const;
  42. virtual Item* createItem() const = 0;
  43. virtual ItemStack* createItemStack(int size) const;
  44. virtual ItemSkill* createDefaultItemSkill() const;
  45. virtual void levelUpItemSkill(ItemSkill* zSkill) const;
  46. virtual Item* loadItem(Framework::StreamReader* zReader) const;
  47. virtual void saveItem(
  48. const Item* zItem, Framework::StreamWriter* zWriter) const;
  49. virtual Item* cloneItem(const Item* zItem) const;
  50. virtual Item* breakItem(const Item* zItem) const;
  51. ModelInfo* zModel() const;
  52. virtual void setItemAttribute(Item* zItem,
  53. Framework::Text name,
  54. Framework::JSON::JSONValue* zValue) const;
  55. virtual void addItemAttributes(
  56. Item* zItem, Framework::JSON::JSONObject* zItemObjet) const;
  57. void setTypeId(int id);
  58. int getMaxStackSize() const;
  59. const Framework::RCArray<Framework::Text>& getGroups() const;
  60. static Item* createBasicItem(int id,
  61. const char* name,
  62. float hp,
  63. float maxHp,
  64. float durability,
  65. float maxDurability,
  66. bool eatable,
  67. bool placeable,
  68. bool equippable,
  69. bool solid,
  70. bool usable);
  71. static int getTypeId(const char* name);
  72. static const ItemType* zByName(const char* name);
  73. };