#include "DropUsedItemCondition.h" #include "Game.h" DropUsedItemCondition::DropUsedItemCondition(ItemFilter* filter) : DropCondition(), filter(filter) {} DropUsedItemCondition::~DropUsedItemCondition() { filter->release(); } const ItemFilter* DropUsedItemCondition::zFilter() const { return filter; } bool DropUsedItemCondition::evaluate(Entity* zActor, Item* zItem, ItemSkill* zUsedSkill, Framework::Either zDestroyedObject) { return zItem && filter->matchItem(zItem); } bool DropNoUsedItemCondition::evaluate(Entity* zActor, Item* zItem, ItemSkill* zUsedSkill, Framework::Either zDestroyedObject) { return !zItem; } DropUsedItemConditionFactory::DropUsedItemConditionFactory() : SubTypeFactory() {} JSONObjectValidationBuilder* DropUsedItemConditionFactory::addToValidator( JSONObjectValidationBuilder* builder) const { return builder->withRequiredAttribute( "filter", Game::INSTANCE->zTypeRegistry()->getValidator()); } const char* DropUsedItemConditionFactory::getTypeToken() const { return "itemFilter"; } DropUsedItemCondition* DropUsedItemConditionFactory::fromJson( Framework::JSON::JSONObject* zJson) const { return new DropUsedItemCondition( Game::INSTANCE->zTypeRegistry()->fromJson( zJson->zValue("filter"))); } Framework::JSON::JSONObject* DropUsedItemConditionFactory::toJsonObject( DropUsedItemCondition* zObject) const { Framework::JSON::JSONObject* result = new Framework::JSON::JSONObject(); result->addValue( "filter", Game::INSTANCE->zTypeRegistry()->toJson(zObject->zFilter())); return result; } DropNoUsedItemConditionFactory::DropNoUsedItemConditionFactory() : SubTypeFactory() {} JSONObjectValidationBuilder* DropNoUsedItemConditionFactory::addToValidator( JSONObjectValidationBuilder* builder) const { return builder; } const char* DropNoUsedItemConditionFactory::getTypeToken() const { return "noItem"; } DropNoUsedItemCondition* DropNoUsedItemConditionFactory::fromJson( Framework::JSON::JSONObject* zJson) const { return new DropNoUsedItemCondition(); } Framework::JSON::JSONObject* DropNoUsedItemConditionFactory::toJsonObject( DropNoUsedItemCondition* zObject) const { return new Framework::JSON::JSONObject(); }