SpecificItemDrop.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #pragma once
  2. #include "DropConfig.h"
  3. #include "ItemModifier.h"
  4. #include "ItemType.h"
  5. class SpecificItemDrop : public DropConfig
  6. {
  7. private:
  8. Framework::Text itemTypeName;
  9. const ItemType* zType;
  10. ItemModifier* modifier;
  11. int amount;
  12. public:
  13. SpecificItemDrop(
  14. Framework::Text itemTypeName, ItemModifier* modifier, int amount);
  15. ~SpecificItemDrop();
  16. void initialize() override;
  17. Framework::Text getItemTypeName() const;
  18. const ItemModifier* zModifier() const;
  19. int getAmount() const;
  20. void doDrop(Entity* zActor,
  21. Item* zItem,
  22. ItemSkill* zUsedSkill,
  23. Framework::Either<Block*, Entity*> zDestroyedObject) const override;
  24. };
  25. class SpecificItemDropFactory : public DropConfigFactory<SpecificItemDrop>
  26. {
  27. public:
  28. SpecificItemDropFactory();
  29. JSONObjectValidationBuilder* addToValidator(
  30. JSONObjectValidationBuilder* builder) const override;
  31. const char* getTypeToken() const override;
  32. SpecificItemDrop* createInstance(
  33. Framework::JSON::JSONObject* zJson) const override;
  34. void addToJson(Framework::JSON::JSONObject* zJson,
  35. SpecificItemDrop* zObject) const override;
  36. };