elemPropertyData.h 5.1 KB

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