123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- #pragma once
- #include <Array.h>
- #include "DropCondition.h"
- #include "TypeRegistry.h"
- enum ConditionalOperator
- {
- AND,
- OR
- };
- class DropConditionOperator : public DropCondition
- {
- private:
- Framework::Array<DropCondition*> conditions;
- ConditionalOperator op;
- public:
- DropConditionOperator(ConditionalOperator op);
- ~DropConditionOperator();
- void addCondition(DropCondition* condition);
- ConditionalOperator getOperator() const;
- const Framework::Array<DropCondition*>& getConditions() const;
- bool evaluate(Entity* zActor,
- Item* zItem,
- ItemSkill* zUsedSkill,
- Framework::Either<Block*, Entity*> zDestroyedObject) override;
- };
- class DropConditionNegation : public DropCondition
- {
- private:
- DropCondition* condition;
- public:
- DropConditionNegation(DropCondition* condition);
- ~DropConditionNegation();
- const DropCondition* zCondition() const;
- bool evaluate(Entity* zActor,
- Item* zItem,
- ItemSkill* zUsedSkill,
- Framework::Either<Block*, Entity*> zDestroyedObject) override;
- };
- class DropAllwaysCondition : public DropCondition
- {
- public:
- DropAllwaysCondition();
- bool evaluate(Entity* zActor,
- Item* zItem,
- ItemSkill* zUsedSkill,
- Framework::Either<Block*, Entity*> zDestroyedObject) override;
- };
- class DropConditionOperatorFactory
- : public SubTypeFactory<DropCondition, DropConditionOperator>
- {
- public:
- DropConditionOperatorFactory();
- JSONObjectValidationBuilder* addToValidator(
- JSONObjectValidationBuilder* builder) const override;
- const char* getTypeToken() const override;
- protected:
- DropConditionOperator* fromJson(
- Framework::JSON::JSONObject* zJson) const override;
- Framework::JSON::JSONObject* toJsonObject(
- DropConditionOperator* zObject) const override;
- };
- class DropConditionNegationFactory
- : public SubTypeFactory<DropCondition, DropConditionNegation>
- {
- public:
- DropConditionNegationFactory();
- JSONObjectValidationBuilder* addToValidator(
- JSONObjectValidationBuilder* builder) const override;
- const char* getTypeToken() const override;
- protected:
- DropConditionNegation* fromJson(
- Framework::JSON::JSONObject* zJson) const override;
- Framework::JSON::JSONObject* toJsonObject(
- DropConditionNegation* zObject) const override;
- };
- class DropAllwaysConditionFactory
- : public SubTypeFactory<DropCondition, DropAllwaysCondition>
- {
- public:
- DropAllwaysConditionFactory();
- JSONObjectValidationBuilder* addToValidator(
- JSONObjectValidationBuilder* builder) const override;
- const char* getTypeToken() const override;
- protected:
- DropAllwaysCondition* fromJson(
- Framework::JSON::JSONObject* zJson) const override;
- Framework::JSON::JSONObject* toJsonObject(
- DropAllwaysCondition* zObject) const override;
- };
|