#pragma once #include "DropConfig.h" #include "ItemModifier.h" #include "ItemType.h" class SpecificItemDrop : public DropConfig { private: Framework::Text itemTypeName; const ItemType* zType; ItemModifier* modifier; int amount; public: SpecificItemDrop( Framework::Text itemTypeName, ItemModifier* modifier, int amount); ~SpecificItemDrop(); void initialize() override; Framework::Text getItemTypeName() const; const ItemModifier* zModifier() const; int getAmount() const; void doDrop(Entity* zActor, Item* zItem, ItemSkill* zUsedSkill, Framework::Either zDestroyedObject) const override; }; class SpecificItemDropFactory : public DropConfigFactory { public: SpecificItemDropFactory(); JSONObjectValidationBuilder* addToValidator( JSONObjectValidationBuilder* builder) const override; const char* getTypeToken() const override; SpecificItemDrop* createInstance( Framework::JSON::JSONObject* zJson) const override; void addToJson(Framework::JSON::JSONObject* zJson, SpecificItemDrop* zObject) const override; };