| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- #pragma once
- #include "QuestEvent.h"
- #include "TypeRegistry.h"
- class QuestStorage;
- class QuestRequirement : public virtual Framework::ReferenceCounter
- {
- protected:
- Framework::Text id;
- Framework::Text description;
- public:
- QuestRequirement();
- virtual void processEvent(QuestEvent* zEvent, QuestStorage* zStorage) = 0;
- virtual void addRequirementUIML(QuestStorage* zStorage,
- Framework::XML::Element* zParent,
- Framework::Text onClickPrefix)
- = 0;
- virtual void api(Framework::StreamReader* message,
- Framework::XML::Element* zParent,
- QuestStorage* zStorage);
- void setRequirementId(Framework::Text id);
- const Framework::Text& getRequirementId() const;
- void setDescription(Framework::Text description);
- const Framework::Text& getDescription() const;
- };
- template<typename S> class QuestRequirementFactoryBase
- : public SubTypeFactory<QuestRequirement, S>
- {
- public:
- QuestRequirementFactoryBase()
- : SubTypeFactory<QuestRequirement, S>()
- {}
- S* fromJson(Framework::JSON::JSONObject* zJson) const override
- {
- S* result = createValue(zJson);
- QuestRequirement* zRequirement
- = dynamic_cast<QuestRequirement*>(result);
- zRequirement->setRequirementId(
- zJson->zValue("id")->asString()->getString());
- zRequirement->setDescription(
- zJson->zValue("description")->asString()->getString());
- return result;
- }
- Framework::JSON::JSONObject* toJsonObject(S* zObject) const override
- {
- Framework::JSON::JSONObject* result = new Framework::JSON::JSONObject();
- QuestRequirement* zRequirement
- = dynamic_cast<QuestRequirement*>(zObject);
- result->addValue("id",
- new Framework::JSON::JSONString(zRequirement->getRequirementId()));
- result->addValue("description",
- new Framework::JSON::JSONString(zRequirement->getDescription()));
- return result;
- }
- JSONObjectValidationBuilder* addToValidator(
- JSONObjectValidationBuilder* builder) const override
- {
- return builder->withRequiredString("id")
- ->finishString()
- ->withRequiredString("description")
- ->finishString();
- }
- protected:
- virtual S* createValue(Framework::JSON::JSONObject* zJson) const = 0;
- };
- class QuestRequirementOpenDialogType;
- class QuestRequirementOpenDialog : public QuestRequirement
- {
- private:
- Framework::Text dialogId;
- public:
- QuestRequirementOpenDialog();
- void processEvent(QuestEvent* zEvent, QuestStorage* zStorage) override;
- void addRequirementUIML(QuestStorage* zStorage,
- Framework::XML::Element* zParent,
- Framework::Text onClickPrefix) override;
- void setDialogId(Framework::Text dialogId);
- const Framework::Text& getDialogId() const;
- friend QuestRequirementOpenDialogType;
- };
- class QuestRequirementOpenDialogType
- : public QuestRequirementFactoryBase<QuestRequirementOpenDialog>
- {
- public:
- QuestRequirementOpenDialogType();
- QuestRequirementOpenDialog* createValue(
- Framework::JSON::JSONObject* zJson) const override;
- QuestRequirementOpenDialog* fromJson(
- Framework::JSON::JSONObject* zJson) const override;
- Framework::JSON::JSONObject* toJsonObject(
- QuestRequirementOpenDialog* zObject) const override;
- JSONObjectValidationBuilder* addToValidator(
- JSONObjectValidationBuilder* builder) const override;
- const char* getTypeToken() const override;
- };
- class QuestRequirementBlockBreak : public QuestRequirement
- {
- private:
- int blockTypeId;
- int amount;
- int usedItemTypeId;
- public:
- QuestRequirementBlockBreak();
- void processEvent(QuestEvent* zEvent, QuestStorage* zStorage) override;
- void addRequirementUIML(QuestStorage* zStorage,
- Framework::XML::Element* zParent,
- Framework::Text onClickPrefix) override;
- void setBlockTypeId(int blockTypeId);
- int getBlockTypeId() const;
- void setAmount(int amount);
- int getAmount() const;
- void setUsedItemTypeId(int usedItemTypeId);
- int getUsedItemTypeId() const;
- };
- class QuestRequirementBlockBreakType
- : public QuestRequirementFactoryBase<QuestRequirementBlockBreak>
- {
- public:
- QuestRequirementBlockBreakType();
- QuestRequirementBlockBreak* createValue(
- Framework::JSON::JSONObject* zJson) const override;
- QuestRequirementBlockBreak* fromJson(
- Framework::JSON::JSONObject* zJson) const override;
- Framework::JSON::JSONObject* toJsonObject(
- QuestRequirementBlockBreak* zObject) const override;
- JSONObjectValidationBuilder* addToValidator(
- JSONObjectValidationBuilder* builder) const override;
- const char* getTypeToken() const override;
- };
- class QuestRequirementBlockPlace : public QuestRequirement
- {
- private:
- int blockTypeId;
- int amount;
- public:
- QuestRequirementBlockPlace();
- void processEvent(QuestEvent* zEvent, QuestStorage* zStorage) override;
- void addRequirementUIML(QuestStorage* zStorage,
- Framework::XML::Element* zParent,
- Framework::Text onClickPrefix) override;
- void setBlockTypeId(int blockTypeId);
- int getBlockTypeId() const;
- void setAmount(int amount);
- int getAmount() const;
- };
- class QuestRequirementBlockPlaceType
- : public QuestRequirementFactoryBase<QuestRequirementBlockPlace>
- {
- public:
- QuestRequirementBlockPlaceType();
- QuestRequirementBlockPlace* createValue(
- Framework::JSON::JSONObject* zJson) const override;
- QuestRequirementBlockPlace* fromJson(
- Framework::JSON::JSONObject* zJson) const override;
- Framework::JSON::JSONObject* toJsonObject(
- QuestRequirementBlockPlace* zObject) const override;
- JSONObjectValidationBuilder* addToValidator(
- JSONObjectValidationBuilder* builder) const override;
- const char* getTypeToken() const override;
- };
- class QuestRequirementBlockInteract : public QuestRequirement
- {
- int blockTypeId;
- int itemTypeId;
- public:
- QuestRequirementBlockInteract();
- void processEvent(QuestEvent* zEvent, QuestStorage* zStorage) override;
- void addRequirementUIML(QuestStorage* zStorage,
- Framework::XML::Element* zParent,
- Framework::Text onClickPrefix) override;
- void setBlockTypeId(int blockTypeId);
- int getBlockTypeId() const;
- void setItemTypeId(int itemTypeId);
- int getItemTypeId() const;
- };
- class QuestRequirementBlockInteractType
- : public QuestRequirementFactoryBase<QuestRequirementBlockInteract>
- {
- public:
- QuestRequirementBlockInteractType();
- QuestRequirementBlockInteract* createValue(
- Framework::JSON::JSONObject* zJson) const override;
- QuestRequirementBlockInteract* fromJson(
- Framework::JSON::JSONObject* zJson) const override;
- Framework::JSON::JSONObject* toJsonObject(
- QuestRequirementBlockInteract* zObject) const override;
- JSONObjectValidationBuilder* addToValidator(
- JSONObjectValidationBuilder* builder) const override;
- const char* getTypeToken() const override;
- };
- class QuestRequirementItemInInventory : public QuestRequirement
- {
- private:
- int itemTypeId;
- int amount;
- public:
- QuestRequirementItemInInventory();
- void processEvent(QuestEvent* zEvent, QuestStorage* zStorage) override;
- void addRequirementUIML(QuestStorage* zStorage,
- Framework::XML::Element* zParent,
- Framework::Text onClickPrefix) override;
- void setItemTypeId(int itemTypeId);
- int getItemTypeId() const;
- void setAmount(int amount);
- int getAmount() const;
- };
- class QuestRequirementItemInInventoryType
- : public QuestRequirementFactoryBase<QuestRequirementItemInInventory>
- {
- public:
- QuestRequirementItemInInventoryType();
- QuestRequirementItemInInventory* createValue(
- Framework::JSON::JSONObject* zJson) const override;
- QuestRequirementItemInInventory* fromJson(
- Framework::JSON::JSONObject* zJson) const override;
- Framework::JSON::JSONObject* toJsonObject(
- QuestRequirementItemInInventory* zObject) const override;
- JSONObjectValidationBuilder* addToValidator(
- JSONObjectValidationBuilder* builder) const override;
- const char* getTypeToken() const override;
- };
|