UIReference.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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 UITargetComponentReference : public UIReference
  25. {
  26. private:
  27. int componentIndex;
  28. public:
  29. UITargetComponentReference();
  30. virtual Framework::Text getReferenceId(
  31. Framework::Either<Block*, Entity*> zTarget,
  32. Entity* zActor) const override;
  33. friend class UITargetComponentReferenceFactory;
  34. };
  35. class UITActorReference : public UIReference
  36. {
  37. public:
  38. UITActorReference();
  39. virtual Framework::Text getReferenceId(
  40. Framework::Either<Block*, Entity*> zTarget,
  41. Entity* zActor) const override;
  42. };
  43. class UITargetReferenceFactory
  44. : public SubTypeFactory<UIReference, UITargetReference>
  45. {
  46. public:
  47. UITargetReferenceFactory();
  48. virtual JSONObjectValidationBuilder* addToValidator(
  49. JSONObjectValidationBuilder* builder) const override;
  50. UITargetReference* fromJson(
  51. Framework::JSON::JSONObject* zJson) const override;
  52. Framework::JSON::JSONObject* toJsonObject(
  53. UITargetReference* zObject) const override;
  54. const char* getTypeToken() const override;
  55. };
  56. class UITActorReferenceFactory
  57. : public SubTypeFactory<UIReference, UITActorReference>
  58. {
  59. public:
  60. UITActorReferenceFactory();
  61. virtual JSONObjectValidationBuilder* addToValidator(
  62. JSONObjectValidationBuilder* builder) const override;
  63. UITActorReference* fromJson(
  64. Framework::JSON::JSONObject* zJson) const override;
  65. Framework::JSON::JSONObject* toJsonObject(
  66. UITActorReference* zObject) const override;
  67. const char* getTypeToken() const override;
  68. };
  69. class UITargetComponentReferenceFactory
  70. : public SubTypeFactory<UIReference, UITargetComponentReference>
  71. {
  72. public:
  73. UITargetComponentReferenceFactory();
  74. virtual JSONObjectValidationBuilder* addToValidator(
  75. JSONObjectValidationBuilder* builder) const override;
  76. UITargetComponentReference* fromJson(
  77. Framework::JSON::JSONObject* zJson) const override;
  78. Framework::JSON::JSONObject* toJsonObject(
  79. UITargetComponentReference* zObject) const override;
  80. const char* getTypeToken() const override;
  81. };