QuestGraph.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. #pragma once
  2. #include <UIMLView.h>
  3. #include "NetworkAPIProcessor.h"
  4. class QuestGraphElement : public Framework::UIMLElement
  5. {
  6. public:
  7. QuestGraphElement();
  8. //! prüft, ob dieses UIML Element für ein bestimmtes xml Element zuständig
  9. //! ist
  10. bool isApplicableFor(Framework::XML::Element& element) override;
  11. //! erstellt eine neue Zeichnung zu einem gegebenen xml Element
  12. Framework::Zeichnung* parseElement(Framework::XML::Element& element,
  13. Framework::UIMLContainer& generalFactory) override;
  14. bool updateElement(Framework::XML::Element& element,
  15. Framework::Zeichnung& z,
  16. Framework::UIMLContainer& generalFactory) override;
  17. //! wendet die layout parameter zu einer Zeichnung an
  18. void layout(Framework::XML::Element& element,
  19. Framework::Zeichnung& z,
  20. int pWidth,
  21. int pHeight,
  22. Framework::UIMLContainer& generalLayouter) override;
  23. };
  24. class QuestGraphItemElement : public Framework::UIMLElement
  25. {
  26. public:
  27. QuestGraphItemElement();
  28. //! prüft, ob dieses UIML Element für ein bestimmtes xml Element zuständig
  29. //! ist
  30. bool isApplicableFor(Framework::XML::Element& element) override;
  31. //! erstellt eine neue Zeichnung zu einem gegebenen xml Element
  32. Framework::Zeichnung* parseElement(Framework::XML::Element& element,
  33. Framework::UIMLContainer& generalFactory) override;
  34. bool updateElement(Framework::XML::Element& element,
  35. Framework::Zeichnung& z,
  36. Framework::UIMLContainer& generalFactory) override;
  37. //! wendet die layout parameter zu einer Zeichnung an
  38. void layout(Framework::XML::Element& element,
  39. Framework::Zeichnung& z,
  40. int pWidth,
  41. int pHeight,
  42. Framework::UIMLContainer& generalLayouter) override;
  43. };
  44. class QuestGraphItem : public Framework::ZeichnungHintergrund
  45. {
  46. private:
  47. int layerIndex;
  48. int nodeIndex;
  49. Framework::Array<QuestGraphItem*> previousLayersConnections;
  50. Framework::Array<QuestGraphItem*> nextLayersConnections;
  51. Framework::Text id;
  52. Framework::Text requirements;
  53. Framework::Text onClick;
  54. bool finished;
  55. bool mainQuest;
  56. bool virtualNode;
  57. public:
  58. QuestGraphItem();
  59. void render(Framework::Bild& rObj) override;
  60. void doMausEreignis(Framework::MausEreignis& me, bool userRet) override;
  61. const Framework::Text& getId() const;
  62. const Framework::Text& getRequirements() const;
  63. bool calculateLaxerIndex();
  64. int getLayerIndex() const;
  65. void setVirtual(bool virtualNode);
  66. void setNodeIndex(int index);
  67. void addNextLayerRef(QuestGraphItem* zItem);
  68. void addPreviousLayerRef(QuestGraphItem* zItem);
  69. const Framework::Array<QuestGraphItem*>& getNextLayersConnections() const;
  70. int getNodeIndex() const;
  71. bool isMainQuest() const;
  72. friend QuestGraphItemElement;
  73. };
  74. class QuestGraphItemLayer : public Framework::ReferenceCounter
  75. {
  76. private:
  77. Framework::RCArray<QuestGraphItem> items;
  78. public:
  79. QuestGraphItemLayer();
  80. bool tick(double tickVal);
  81. void render(Framework::Bild& rObj);
  82. void doMausEreignis(Framework::MausEreignis& me);
  83. void addItem(QuestGraphItem* item);
  84. bool sortItems();
  85. bool fixItemPositions();
  86. const Framework::RCArray<QuestGraphItem>& getItems() const;
  87. int getLeyerHeight() const;
  88. void centerVertically(int pos);
  89. };
  90. class QuestGraph : public Framework::ZeichnungHintergrund
  91. {
  92. private:
  93. Framework::Text id;
  94. Framework::RCArray<QuestGraphItemLayer> layers;
  95. QuestGraphItemLayer invalidNodes;
  96. Framework::Text collectionName;
  97. public:
  98. QuestGraph();
  99. void render(Framework::Bild& rObj) override;
  100. void doMausEreignis(Framework::MausEreignis& me, bool userRet) override;
  101. void addVirtualConnectionNodes();
  102. void sortItems();
  103. void fixItemPositions();
  104. void addItem(QuestGraphItem* item);
  105. friend QuestGraphElement;
  106. };