123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- #pragma once
- #include <ReferenceCounter.h>
- #include <Text.h>
- #include "Item.h"
- class ItemModifier : public virtual Framework::ReferenceCounter
- {
- public:
- ItemModifier();
- virtual void applyOn(Item* zItem) = 0;
- };
- class ConsumeItemModifier : public ItemModifier
- {
- public:
- ConsumeItemModifier();
- void applyOn(Item* zItem) override;
- };
- class ConsumeItemModifierFactory
- : public SubTypeFactory<ItemModifier, ConsumeItemModifier>
- {
- public:
- ConsumeItemModifierFactory();
- ConsumeItemModifier* fromJson(
- Framework::JSON::JSONObject* zJson) const override;
- Framework::JSON::JSONObject* toJson(
- ConsumeItemModifier* zObject) const override;
- Framework::JSON::Validator::JSONValidator* getValidator(
- Framework::JSON::Validator::ObjectValidationBuilder<
- Framework::JSON::Validator::JSONValidator>* builder) const override;
- Framework::Text getTypeToken() const override;
- };
- class DoNothingModifier : public ItemModifier
- {
- public:
- DoNothingModifier();
- void applyOn(Item* zItem) override;
- };
- class DoNothingModifierFactory
- : public SubTypeFactory<ItemModifier, DoNothingModifier>
- {
- public:
- DoNothingModifierFactory();
- DoNothingModifier* fromJson(
- Framework::JSON::JSONObject* zJson) const override;
- Framework::JSON::JSONObject* toJson(
- DoNothingModifier* zObject) const override;
- Framework::JSON::Validator::JSONValidator* getValidator(
- Framework::JSON::Validator::ObjectValidationBuilder<
- Framework::JSON::Validator::JSONValidator>* builder) const override;
- Framework::Text getTypeToken() const override;
- };
- class AttributeItemModifier : public ItemModifier
- {
- private:
- Framework::RCArray<Framework::Text> attributes;
- Framework::RCArray<Framework::JSON::JSONValue> values;
- public:
- AttributeItemModifier(Framework::RCArray<Framework::Text> attribute,
- Framework::RCArray<Framework::JSON::JSONValue> value);
- void applyOn(Item* zItem) override;
- const Framework::RCArray<Framework::Text>& getAttributes() const;
- const Framework::RCArray<Framework::JSON::JSONValue>& getValues() const;
- };
- class AttributeItemModifierFactory
- : public SubTypeFactory<ItemModifier, AttributeItemModifier>
- {
- public:
- AttributeItemModifierFactory();
- AttributeItemModifier* fromJson(
- Framework::JSON::JSONObject* zJson) const override;
- Framework::JSON::JSONObject* toJson(
- AttributeItemModifier* zObject) const override;
- Framework::JSON::Validator::JSONValidator* getValidator(
- Framework::JSON::Validator::ObjectValidationBuilder<
- Framework::JSON::Validator::JSONValidator>* builder) const override;
- Framework::Text getTypeToken() const override;
- };
- class CombinedItemModifier : public ItemModifier
- {
- Framework::RCArray<ItemModifier> modifiers;
- public:
- CombinedItemModifier(Framework::RCArray<ItemModifier> modifiers);
- void applyOn(Item* zItem) override;
- const Framework::RCArray<ItemModifier>& getModifiers() const;
- };
- class CombinedItemModifierFactory
- : public SubTypeFactory<ItemModifier, CombinedItemModifier>
- {
- public:
- CombinedItemModifierFactory();
- CombinedItemModifier* fromJson(
- Framework::JSON::JSONObject* zJson) const override;
- Framework::JSON::JSONObject* toJson(
- CombinedItemModifier* zObject) const override;
- Framework::JSON::Validator::JSONValidator* getValidator(
- Framework::JSON::Validator::ObjectValidationBuilder<
- Framework::JSON::Validator::JSONValidator>* builder) const override;
- Framework::Text getTypeToken() const override;
- };
|