#ifndef ELEMPROPERTYDATA_H #define ELEMPROPERTYDATA_H #include #include #include #include class ElemPropertyData { public: ElemPropertyData(); //基础属性 QString labelName; QString pos; QString maxLayer; QString score; QString dropConfig; QString iconPath; bool canBeLinked; bool canMoveAway; //状态与效果动画 struct StatusEffect{ QString name; QString res; QString timeline; QString zOrder; StatusEffect(QString animName):name(animName),res("双击添加资源文件"),timeline("尚未选择"),zOrder("0"){} }; QVector statusEffect; //收集动画 struct CollAnim{ QString name; QString type; QMap dataMap; CollAnim(QString collAnimName):name(collAnimName),type("尚未选择"){} }; QVector collAnim; // 状态配置 // 事件配置 struct EventConfig{ QString name; bool consisColor; int changeMagnitude; QString specialEffect; bool elimATLattices; QString triggerAction; QMap actionConfig; EventConfig():name("尚未选择"),specialEffect("尚未选择"),triggerAction("尚未选择"),consisColor(false),changeMagnitude(1),elimATLattices(false){} }; struct StatusConfig{ QString statusValue; QString initAnim; QString clickAnim; bool multiHit; bool dropable; bool needCollect; QString collTargetType; QString collAnim; QVector eventConfig; StatusConfig(QString statusVal):statusValue(statusVal),multiHit(false),dropable(false),needCollect(false),initAnim("尚未选择"),clickAnim("尚未选择"),collAnim("尚未选择"){} }; QVector statusConfig; // 容器 struct ContainTable{ QString key; QString res; QString initTimeline; QString clickTimeline; QString effectTimeline; QString vanishTimeline; QString zOrder; ContainTable(QString keyName):key(keyName),res("双击添加资源文件"),initTimeline("尚未选择"), clickTimeline("尚未选择"),effectTimeline("尚未选择"),vanishTimeline("尚未选择"),zOrder("0"){} }; struct ContainerConfig{ QString poolName; QString type; QVector table; ContainerConfig(QString pool):poolName(pool),type("尚未选择"){} }; QVector container; //子元素 struct ChildElem{ QString name; QString container; ChildElem(QString childElemName):name(childElemName),container("尚未选择"){} }; QVector childElem; int getChildElemIndex(QString childElemName); int getKeyIndex(int poolIndex,QString key); int getAnimIndex(QString animName); int getCollAnimIndex(QString name); int getStatusValIndex(QString statusVal); int getPoolIndex(QString poolName); QList getTimelineList(QString filePath); QMap> timelineListMap; //读写数据 void readData(const QJsonObject &json); void writeData(QJsonObject &json) const; //状态与效果动画 void readStatusEffect(const QJsonArray &arr); QJsonArray writeStatusEffect() const; //收集动画 void readCollAnim(const QJsonArray &arr); QJsonArray writeCollAnim() const; //读写 map QMap readStrStrMap(const QJsonObject &obj); QJsonObject writeStrStrMap(const QMap &data) const; //读写状态配置数据 void readStatusConfigData(const QJsonArray &arr); QJsonArray writeStatusConfigData() const; //读写事件配置表格数据 QVector readEventConfig(const QJsonArray &arr); QJsonArray writeEventConfig(const QVector &eventConfig) const; //读写容器池数据 void readContainerConfig(const QJsonArray &arr); QJsonArray writeContainerConfig() const; //读写容器表格数据 QVector readContainerTable(const QJsonArray &arr); QJsonArray writeContainerTable(const QVector &containTable) const; //读写子元素数据 void readChildElem(const QJsonArray &arr); QJsonArray writeChildElem() const; //导出数据 void exportData(QJsonObject &json) const; ///导出位置 QJsonArray exportGridPos() const; ///导出状态与效果动画 QJsonObject exportAnim() const; ///导出状态配置 QJsonObject exportStates() const; ///导出容器池 QJsonObject exportPools() const; ///导出子元素 QJsonArray exportChildElems() const; ///导出收集动画 QJsonObject exportCollAnim() const; }; #endif // ELEMPROPERTYDATA_H