#pragma once #include #include #include #include "TypeRegistry.h" class Block; class Entity; class UIReference : public Framework::ReferenceCounter { public: UIReference(); virtual Framework::Text getReferenceId( Framework::Either zTarget, Entity* zActor) const = 0; }; class UITargetReference : public UIReference { public: UITargetReference(); virtual Framework::Text getReferenceId( Framework::Either zTarget, Entity* zActor) const override; }; class UITargetComponentReference : public UIReference { private: int componentIndex; public: UITargetComponentReference(); virtual Framework::Text getReferenceId( Framework::Either zTarget, Entity* zActor) const override; friend class UITargetComponentReferenceFactory; }; class UITActorReference : public UIReference { public: UITActorReference(); virtual Framework::Text getReferenceId( Framework::Either zTarget, Entity* zActor) const override; }; class UITargetReferenceFactory : public SubTypeFactory { public: UITargetReferenceFactory(); virtual JSONObjectValidationBuilder* addToValidator( JSONObjectValidationBuilder* builder) const override; UITargetReference* fromJson( Framework::JSON::JSONObject* zJson) const override; Framework::JSON::JSONObject* toJsonObject( UITargetReference* zObject) const override; const char* getTypeToken() const override; }; class UITActorReferenceFactory : public SubTypeFactory { public: UITActorReferenceFactory(); virtual JSONObjectValidationBuilder* addToValidator( JSONObjectValidationBuilder* builder) const override; UITActorReference* fromJson( Framework::JSON::JSONObject* zJson) const override; Framework::JSON::JSONObject* toJsonObject( UITActorReference* zObject) const override; const char* getTypeToken() const override; }; class UITargetComponentReferenceFactory : public SubTypeFactory { public: UITargetComponentReferenceFactory(); virtual JSONObjectValidationBuilder* addToValidator( JSONObjectValidationBuilder* builder) const override; UITargetComponentReference* fromJson( Framework::JSON::JSONObject* zJson) const override; Framework::JSON::JSONObject* toJsonObject( UITargetComponentReference* zObject) const override; const char* getTypeToken() const override; };