123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- #pragma once
- #include <Array.h>
- #include <JSON.h>
- #include "ItemFilter.h"
- #include "ItemModifier.h"
- #include "TypeRegistry.h"
- class CraftingStorage;
- class ShapedCraftingStorage;
- struct ItemInfo
- {
- int type;
- int count;
- float hp;
- float maxHp;
- float durability;
- float maxDurability;
- };
- class RecipieInput : public Framework::ReferenceCounter
- {
- private:
- ItemFilter* filter;
- ItemModifier* modifier;
- int amount;
- public:
- RecipieInput(ItemFilter* filter, ItemModifier* modifier, int amount);
- ~RecipieInput();
- ItemFilter* zFilter() const;
- ItemModifier* zModifier() const;
- int getAmount() const;
- };
- class RecipieInputFactory : public TypeFactory<RecipieInput>
- {
- public:
- RecipieInputFactory();
- RecipieInput* fromJson(Framework::JSON::JSONValue* zJson) const override;
- Framework::JSON::JSONValue* toJson(RecipieInput* zObject) const override;
- Framework::JSON::Validator::JSONValidator* getValidator() const override;
- };
- class RecipieOutput : public Framework::ReferenceCounter
- {
- private:
- int itemTypeId;
- int amount;
- ItemModifier* modifier;
- public:
- RecipieOutput(int itemTypeId, int amount, ItemModifier* modifier);
- ~RecipieOutput();
- int getItemTypeId() const;
- int getAmount() const;
- ItemModifier* zModifier() const;
- Item* createItem() const;
- };
- class RecipieOutputFactory : public TypeFactory<RecipieOutput>
- {
- public:
- RecipieOutputFactory();
- RecipieOutput* fromJson(Framework::JSON::JSONValue* zJson) const override;
- Framework::JSON::JSONValue* toJson(RecipieOutput* zObject) const override;
- Framework::JSON::Validator::JSONValidator* getValidator() const override;
- };
- class Recipie : public virtual Framework::ReferenceCounter
- {
- protected:
- Framework::Text groupName;
- Framework::RCArray<RecipieOutput> outputs;
- public:
- Recipie(
- Framework::RCArray<RecipieOutput> outputs, Framework::Text groupName);
- virtual bool testApplicability(CraftingStorage* zStorage) = 0;
- virtual void apply(CraftingStorage* zStorage) = 0;
- virtual Framework::Text getRecipieUIML() = 0;
- virtual Framework::Array<ItemInfo> getOutput() const;
- bool createsOutput(int itemTypeId);
- const Framework::RCArray<RecipieOutput>& getOutputs() const;
- Framework::Text getGroupName() const;
- };
- class UnshapedRecipie : public Recipie
- {
- private:
- Framework::RCArray<RecipieInput> inputs;
- public:
- UnshapedRecipie(Framework::RCArray<RecipieInput> inputs,
- Framework::RCArray<RecipieOutput> outputs,
- Framework::Text groupName);
- bool testApplicability(CraftingStorage* zStorage) override;
- void apply(CraftingStorage* zStorage) override;
- Framework::Text getRecipieUIML() override;
- const Framework::RCArray<RecipieInput>& getInputs() const;
- };
- class UnshapedRecipieFactory : public SubTypeFactory<Recipie, UnshapedRecipie>
- {
- public:
- UnshapedRecipieFactory();
- UnshapedRecipie* fromJson(
- Framework::JSON::JSONObject* zJson) const override;
- Framework::JSON::JSONObject* toJson(
- UnshapedRecipie* 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 ShapedRecipie : public Recipie
- {
- private:
- Framework::RCArray<RecipieInput> inputs;
- int width;
- int height;
- public:
- ShapedRecipie(int width,
- int height,
- Framework::RCArray<RecipieInput> inputs,
- Framework::RCArray<RecipieOutput> outputs,
- Framework::Text groupName);
- bool testApplicability(CraftingStorage* zStorage) override;
- void apply(CraftingStorage* zStorage) override;
- Framework::Text getRecipieUIML() override;
- int getWidth() const;
- int getHeight() const;
- const Framework::RCArray<RecipieInput>& getInputs() const;
- };
- class ShapedRecipieFactory : public SubTypeFactory<Recipie, ShapedRecipie>
- {
- public:
- ShapedRecipieFactory();
- ShapedRecipie* fromJson(
- Framework::JSON::JSONObject* zJson) const override;
- Framework::JSON::JSONObject* toJson(ShapedRecipie* zObject) const override;
- Framework::JSON::Validator::JSONValidator* getValidator(
- Framework::JSON::Validator::ObjectValidationBuilder<
- Framework::JSON::Validator::JSONValidator>* builder) const override;
- Framework::Text getTypeToken() const override;
- };
|