QuestReward.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #pragma once
  2. #include "TypeRegistry.h"
  3. class Entity;
  4. class Item;
  5. class QuestReward : public virtual Framework::ReferenceCounter
  6. {
  7. private:
  8. Framework::Text rewardId;
  9. public:
  10. QuestReward(Framework::Text rewardId);
  11. virtual void giveReward(Entity* zTargetEntity) = 0;
  12. const Framework::Text& getRewardId() const;
  13. };
  14. class ItemStackInfo : public virtual Framework::ReferenceCounter
  15. {
  16. private:
  17. Item* item;
  18. int count;
  19. public:
  20. ItemStackInfo(Item* item, int count);
  21. ~ItemStackInfo();
  22. Item* zItem() const;
  23. int getCount() const;
  24. };
  25. class ItemStackInfoType : public TypeFactory<ItemStackInfo>
  26. {
  27. public:
  28. ItemStackInfoType();
  29. ItemStackInfo* fromJson(Framework::JSON::JSONValue* zJson) const override;
  30. Framework::JSON::JSONValue* toJson(ItemStackInfo* zObject) const override;
  31. Framework::JSON::Validator::JSONValidator* getValidator() const override;
  32. };
  33. class QuestRewardGiveItemsType;
  34. class QuestRewardGiveItems : public QuestReward
  35. {
  36. private:
  37. Framework::RCArray<ItemStackInfo> items;
  38. public:
  39. QuestRewardGiveItems(Framework::Text rewardId);
  40. void giveReward(Entity* zTargetEntity) override;
  41. friend QuestRewardGiveItemsType;
  42. };
  43. class QuestRewardGiveItemsType
  44. : public SubTypeFactory<QuestReward, QuestRewardGiveItems>
  45. {
  46. public:
  47. QuestRewardGiveItemsType();
  48. QuestRewardGiveItems* fromJson(
  49. Framework::JSON::JSONObject* zJson) const override;
  50. Framework::JSON::JSONObject* toJson(
  51. QuestRewardGiveItems* zObject) const override;
  52. Framework::JSON::Validator::JSONValidator* getValidator(
  53. Framework::JSON::Validator::ObjectValidationBuilder<
  54. Framework::JSON::Validator::JSONValidator>* builder) const override;
  55. Framework::Text getTypeToken() const override;
  56. };