123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- #ifndef ELEMPROPERTYDATA_H
- #define ELEMPROPERTYDATA_H
- #include <QString>
- #include <QVector>
- #include <QMap>
- #include <QJsonObject>
- class ElemPropertyData
- {
- public:
- enum class DROPOPT{BYSTATE,DROPABLE,NOTDROPABLE};
- ElemPropertyData();
- //基础属性
- QString labelName;
- QString pos;
- QString maxLayer;
- QString score;
- DROPOPT dropConfig;
- QString iconPath;
- bool canBeLinked;
- bool canMoveAway;
- bool isContainer;
- bool beatByOrder;
- //状态与效果动画
- struct StatusEffect{
- QString name;
- QString res;
- QString timeline;
- QString zOrder;
- QString audio;
- StatusEffect(QString animName):name(animName),res("双击添加资源文件"),timeline("尚未选择"),zOrder("0"){}
- };
- QVector<StatusEffect> statusEffect;
- //收集动画
- struct CollAnim{
- QString name;
- QString type;
- QMap<QString,QString> dataMap;
- CollAnim(QString collAnimName):name(collAnimName),type("尚未选择"){}
- };
- QVector<CollAnim> collAnim;
- // 状态配置
- // 事件配置
- struct EventConfig{
- QString name;
- bool consisColor;
- int changeMagnitude;
- QString specialEffect;
- bool elimATLattices;
- EventConfig():name("尚未选择"),specialEffect("尚未选择"),consisColor(false),changeMagnitude(1),elimATLattices(false){}
- };
- struct StatusConfig{
- QString statusValue;
- QString initAnim;
- QString clickAnim;
- bool multiHit;
- bool dropable;
- bool needCollect;
- bool beatSubItem;
- QString collTargetType;
- QString collAnim;
- QString action;
- QMap<QString,QString> actionConfig;
- QVector<EventConfig> eventConfig;
- StatusConfig(QString statusVal):statusValue(statusVal),multiHit(false),beatSubItem(false),dropable(false),needCollect(false),action("尚未选择"),initAnim("尚未选择"),clickAnim("尚未选择"),collAnim("尚未选择"){}
- };
- QVector<StatusConfig> 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<ContainTable> table;
- ContainerConfig(QString pool):poolName(pool),type("尚未选择"){}
- };
- QVector<ContainerConfig> container;
- //子元素
- struct ChildElem{
- QString name;
- QString container;
- ChildElem(QString childElemName):name(childElemName),container("尚未选择"){}
- };
- QVector<ChildElem> 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<QString> getTimelineList(QString filePath);
- QMap<QString,QList<QString>> 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;
- //读写<str,str> map
- QMap<QString,QString> readStrStrMap(const QJsonObject &obj);
- QJsonObject writeStrStrMap(const QMap<QString,QString> &data) const;
- //读写状态配置数据
- void readStatusConfigData(const QJsonArray &arr);
- QJsonArray writeStatusConfigData() const;
- //读写动作配置数据
- QJsonObject writeAction(const StatusConfig &status) const;
- void readAction(const QJsonObject &arr, StatusConfig& status);
- //读写事件配置表格数据
- QVector<EventConfig> readEventConfig(const QJsonArray &arr);
- QJsonArray writeEventConfig(const QVector<EventConfig> &eventConfig) const;
- //读写容器池数据
- void readContainerConfig(const QJsonArray &arr);
- QJsonArray writeContainerConfig() const;
- //读写容器表格数据
- QVector<ContainTable> readContainerTable(const QJsonArray &arr);
- QJsonArray writeContainerTable(const QVector<ContainTable> &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
|