DropUsedItemCondition.cpp 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #include "DropUsedItemCondition.h"
  2. #include "Game.h"
  3. DropUsedItemCondition::DropUsedItemCondition(ItemFilter* filter)
  4. : DropCondition(),
  5. filter(filter)
  6. {}
  7. DropUsedItemCondition::~DropUsedItemCondition()
  8. {
  9. filter->release();
  10. }
  11. const ItemFilter* DropUsedItemCondition::zFilter() const
  12. {
  13. return filter;
  14. }
  15. bool DropUsedItemCondition::evaluate(Entity* zActor,
  16. Item* zItem,
  17. ItemSkill* zUsedSkill,
  18. Framework::Either<Block*, Entity*> zDestroyedObject)
  19. {
  20. return zItem && filter->matchItem(zItem);
  21. }
  22. bool DropNoUsedItemCondition::evaluate(Entity* zActor,
  23. Item* zItem,
  24. ItemSkill* zUsedSkill,
  25. Framework::Either<Block*, Entity*> zDestroyedObject)
  26. {
  27. return !zItem;
  28. }
  29. DropUsedItemConditionFactory::DropUsedItemConditionFactory()
  30. : SubTypeFactory()
  31. {}
  32. JSONObjectValidationBuilder* DropUsedItemConditionFactory::addToValidator(
  33. JSONObjectValidationBuilder* builder) const
  34. {
  35. return builder->withRequiredAttribute(
  36. "filter", Game::INSTANCE->zTypeRegistry()->getValidator<ItemFilter>());
  37. }
  38. const char* DropUsedItemConditionFactory::getTypeToken() const
  39. {
  40. return "itemFilter";
  41. }
  42. DropUsedItemCondition* DropUsedItemConditionFactory::fromJson(
  43. Framework::JSON::JSONObject* zJson) const
  44. {
  45. return new DropUsedItemCondition(
  46. Game::INSTANCE->zTypeRegistry()->fromJson<ItemFilter>(
  47. zJson->zValue("filter")));
  48. }
  49. Framework::JSON::JSONObject* DropUsedItemConditionFactory::toJsonObject(
  50. DropUsedItemCondition* zObject) const
  51. {
  52. Framework::JSON::JSONObject* result = new Framework::JSON::JSONObject();
  53. result->addValue(
  54. "filter", Game::INSTANCE->zTypeRegistry()->toJson(zObject->zFilter()));
  55. return result;
  56. }
  57. DropNoUsedItemConditionFactory::DropNoUsedItemConditionFactory()
  58. : SubTypeFactory()
  59. {}
  60. JSONObjectValidationBuilder* DropNoUsedItemConditionFactory::addToValidator(
  61. JSONObjectValidationBuilder* builder) const
  62. {
  63. return builder;
  64. }
  65. const char* DropNoUsedItemConditionFactory::getTypeToken() const
  66. {
  67. return "noItem";
  68. }
  69. DropNoUsedItemCondition* DropNoUsedItemConditionFactory::fromJson(
  70. Framework::JSON::JSONObject* zJson) const
  71. {
  72. return new DropNoUsedItemCondition();
  73. }
  74. Framework::JSON::JSONObject* DropNoUsedItemConditionFactory::toJsonObject(
  75. DropNoUsedItemCondition* zObject) const
  76. {
  77. return new Framework::JSON::JSONObject();
  78. }