UIReference.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #pragma once
  2. #include <Either.h>
  3. #include <ReferenceCounter.h>
  4. #include <Text.h>
  5. #include "TypeRegistry.h"
  6. class Block;
  7. class Entity;
  8. class UIReference : public Framework::ReferenceCounter
  9. {
  10. public:
  11. UIReference();
  12. virtual Framework::Text getReferenceId(
  13. Framework::Either<Block*, Entity*> zTarget, Entity* zActor) const
  14. = 0;
  15. };
  16. class UITargetReference : public UIReference
  17. {
  18. public:
  19. UITargetReference();
  20. virtual Framework::Text getReferenceId(
  21. Framework::Either<Block*, Entity*> zTarget,
  22. Entity* zActor) const override;
  23. };
  24. class UITActorReference : public UIReference
  25. {
  26. public:
  27. UITActorReference();
  28. virtual Framework::Text getReferenceId(
  29. Framework::Either<Block*, Entity*> zTarget,
  30. Entity* zActor) const override;
  31. };
  32. class UITargetReferenceFactory
  33. : public SubTypeFactory<UIReference, UITargetReference>
  34. {
  35. public:
  36. UITargetReferenceFactory();
  37. virtual JSONObjectValidationBuilder* addToValidator(
  38. JSONObjectValidationBuilder* builder) const override;
  39. UITargetReference* fromJson(
  40. Framework::JSON::JSONObject* zJson) const override;
  41. Framework::JSON::JSONObject* toJsonObject(
  42. UITargetReference* zObject) const override;
  43. const char* getTypeToken() const override;
  44. };
  45. class UITActorReferenceFactory
  46. : public SubTypeFactory<UIReference, UITActorReference>
  47. {
  48. public:
  49. UITActorReferenceFactory();
  50. virtual JSONObjectValidationBuilder* addToValidator(
  51. JSONObjectValidationBuilder* builder) const override;
  52. UITActorReference* fromJson(
  53. Framework::JSON::JSONObject* zJson) const override;
  54. Framework::JSON::JSONObject* toJsonObject(
  55. UITActorReference* zObject) const override;
  56. const char* getTypeToken() const override;
  57. };