elemPropertyData.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. #ifndef ELEMPROPERTYDATA_H
  2. #define ELEMPROPERTYDATA_H
  3. #include <QString>
  4. #include <QVector>
  5. #include <QMap>
  6. #include <QJsonObject>
  7. class ElemPropertyData
  8. {
  9. public:
  10. ElemPropertyData();
  11. //基础属性
  12. QString labelName;
  13. QString pos;
  14. QString maxLayer;
  15. QString score;
  16. QString dropConfig;
  17. QString iconPath;
  18. bool canBeLinked;
  19. bool canMoveAway;
  20. //状态与效果动画
  21. struct StatusEffect{
  22. QString name;
  23. QString res;
  24. QString timeline;
  25. QString zOrder;
  26. StatusEffect(QString animName):name(animName),res("双击添加资源文件"),timeline("尚未选择"),zOrder("0"){}
  27. };
  28. QVector<StatusEffect> statusEffect;
  29. //收集动画
  30. struct CollAnim{
  31. QString name;
  32. QString type;
  33. QMap<QString,QString> dataMap;
  34. CollAnim(QString collAnimName):name(collAnimName),type("尚未选择"){}
  35. };
  36. QVector<CollAnim> collAnim;
  37. // 状态配置
  38. // 事件配置
  39. struct EventConfig{
  40. QString name;
  41. bool consisColor;
  42. int changeMagnitude;
  43. QString specialEffect;
  44. bool elimATLattices;
  45. QString triggerAction;
  46. QMap<QString,QString> actionConfig;
  47. EventConfig():name("尚未选择"),specialEffect("尚未选择"),triggerAction("尚未选择"),consisColor(false),changeMagnitude(1),elimATLattices(false){}
  48. };
  49. struct StatusConfig{
  50. QString statusValue;
  51. QString initAnim;
  52. QString clickAnim;
  53. bool multiHit;
  54. bool dropable;
  55. bool needCollect;
  56. QString collTargetType;
  57. QString collAnim;
  58. QVector<EventConfig> eventConfig;
  59. StatusConfig(QString statusVal):statusValue(statusVal),multiHit(false),dropable(false),needCollect(false),initAnim("尚未选择"),clickAnim("尚未选择"),collAnim("尚未选择"){}
  60. };
  61. QVector<StatusConfig> statusConfig;
  62. // 容器
  63. struct ContainTable{
  64. QString key;
  65. QString res;
  66. QString initTimeline;
  67. QString clickTimeline;
  68. QString effectTimeline;
  69. QString vanishTimeline;
  70. QString zOrder;
  71. ContainTable(QString keyName):key(keyName),res("双击添加资源文件"),initTimeline("尚未选择"),
  72. clickTimeline("尚未选择"),effectTimeline("尚未选择"),vanishTimeline("尚未选择"),zOrder("0"){}
  73. };
  74. struct ContainerConfig{
  75. QString poolName;
  76. QString type;
  77. QVector<ContainTable> table;
  78. ContainerConfig(QString pool):poolName(pool),type("尚未选择"){}
  79. };
  80. QVector<ContainerConfig> container;
  81. //子元素
  82. struct ChildElem{
  83. QString name;
  84. QString container;
  85. ChildElem(QString childElemName):name(childElemName),container("尚未选择"){}
  86. };
  87. QVector<ChildElem> childElem;
  88. int getChildElemIndex(QString childElemName);
  89. int getKeyIndex(int poolIndex,QString key);
  90. int getAnimIndex(QString animName);
  91. int getCollAnimIndex(QString name);
  92. int getStatusValIndex(QString statusVal);
  93. int getPoolIndex(QString poolName);
  94. QList<QString> getTimelineList(QString filePath);
  95. QMap<QString,QList<QString>> timelineListMap;
  96. //读写数据
  97. void readData(const QJsonObject &json);
  98. void writeData(QJsonObject &json) const;
  99. //状态与效果动画
  100. void readStatusEffect(const QJsonArray &arr);
  101. QJsonArray writeStatusEffect() const;
  102. //收集动画
  103. void readCollAnim(const QJsonArray &arr);
  104. QJsonArray writeCollAnim() const;
  105. //读写<str,str> map
  106. QMap<QString,QString> readStrStrMap(const QJsonObject &obj);
  107. QJsonObject writeStrStrMap(const QMap<QString,QString> &data) const;
  108. //读写状态配置数据
  109. void readStatusConfigData(const QJsonArray &arr);
  110. QJsonArray writeStatusConfigData() const;
  111. //读写事件配置表格数据
  112. QVector<EventConfig> readEventConfig(const QJsonArray &arr);
  113. QJsonArray writeEventConfig(const QVector<EventConfig> &eventConfig) const;
  114. //读写容器池数据
  115. void readContainerConfig(const QJsonArray &arr);
  116. QJsonArray writeContainerConfig() const;
  117. //读写容器表格数据
  118. QVector<ContainTable> readContainerTable(const QJsonArray &arr);
  119. QJsonArray writeContainerTable(const QVector<ContainTable> &containTable) const;
  120. //读写子元素数据
  121. void readChildElem(const QJsonArray &arr);
  122. QJsonArray writeChildElem() const;
  123. //导出数据
  124. void exportData(QJsonObject &json) const;
  125. ///导出位置
  126. QJsonArray exportGridPos() const;
  127. ///导出状态与效果动画
  128. QJsonObject exportAnim() const;
  129. ///导出状态配置
  130. QJsonObject exportStates() const;
  131. ///导出容器池
  132. QJsonObject exportPools() const;
  133. ///导出子元素
  134. QJsonArray exportChildElems() const;
  135. ///导出收集动画
  136. QJsonObject exportCollAnim() const;
  137. };
  138. #endif // ELEMPROPERTYDATA_H