123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379 |
- #include "elemPropertyData.h"
- #include "plisthpp/redream.h"
- #include <QJsonArray>
- ElemPropertyData::ElemPropertyData()
- {
- iconPath = ":/icon/icon/菜狗.png";
- dropConfig = 0;
- }
- int ElemPropertyData::getKeyIndex(int poolIndex, QString key)
- {
- for(int i = 0;i<container[poolIndex].table.size();i++){
- if(key == container[poolIndex].table[i].key){
- return i;
- }
- }
- return -1;
- }
- int ElemPropertyData::getChildElemIndex(QString childElemName)
- {
- for(int i=0;i<childElem.size();i++){
- if(childElemName == childElem[i].name){
- return i;
- }
- }
- return -1;
- }
- int ElemPropertyData::getAnimIndex(QString animName)
- {
- for(int i=0;i<statusEffect.size();i++){
- if(statusEffect[i].name == animName){
- return i;
- }
- }
- return -1;
- }
- int ElemPropertyData::getCollAnimIndex(QString name)
- {
- for(int i=0;i<collAnim.size();i++){
- if(collAnim[i].name == name){
- return i;
- }
- }
- return -1;
- }
- int ElemPropertyData::getStatusValIndex(QString statusVal)
- {
- for(int i=0;i<statusConfig.size();i++){
- if(statusConfig[i].statusValue == statusVal){
- return i;
- }
- }
- return -1;
- }
- int ElemPropertyData::getPoolIndex(QString poolName)
- {
- for(int i=0;i<container.size();i++){
- if(container[i].poolName == poolName){
- return i;
- }
- }
- return -1;
- }
- QList<QString> ElemPropertyData::getTimelineList(QString filePath)
- {
- if(timelineListMap.find(filePath) == timelineListMap.end()){
- QList<QString> list = Redream::getInstance()->getTimelineFromRedream(filePath.toStdString());
- timelineListMap[filePath] = list;
- return list;
- }
- return timelineListMap[filePath];
- }
- void ElemPropertyData::readData(const QJsonObject &json)
- {
- if(json.contains("labelName") && json["labelName"].isString()){
- labelName = json["labelName"].toString();
- }
- if(json.contains("size") && json["size"].isString()){
- size = json["size"].toString();
- }
- if(json.contains("maxLayer") && json["maxLayer"].isString()){
- maxLayer = json["maxLayer"].toString();
- }
- if(json.contains("score") && json["score"].isString()){
- score = json["score"].toString();
- }
- if(json.contains("dropConfig") && json["maxLayer"].isDouble()){
- dropConfig = json["dropConfig"].toInt();
- }
- if(json.contains("iconPath") && json["iconPath"].isString()){
- iconPath = json["iconPath"].toString();
- }
- //状态与效果动画
- if(json.contains("anims") && json["anims"].isArray()){
- readStatusEffect(json["anims"].toArray());
- }
- //收集动画
- if(json.contains("collAnim") && json["collAnim"].isArray()){
- readCollAnim(json["collAnim"].toArray());
- }
- //状态配置
- if(json.contains("statusConfig") && json["statusConfig"].isArray()){
- readStatusConfigData(json["statusConfig"].toArray());
- }
- //容器配置
- if(json.contains("container") && json["container"].isArray()){
- readContainerConfig(json["container"].toArray());
- }
- //子元素配置
- if(json.contains("childElem") && json["childElem"].isArray()){
- readChildElem(json["childElem"].toArray());
- }
- }
- void ElemPropertyData::writeData(QJsonObject &json) const
- {
- //基础属性
- json["labelName"] = labelName;
- json["size"] = size;
- json["maxLayer"] = maxLayer;
- json["score"] = score;
- json["dropConfig"] = dropConfig;
- json["iconPath"] = iconPath;
- json.insert("anims",writeStatusEffect());
- json.insert("collAnim",writeCollAnim());
- json.insert("statusConfig",writeStatusConfigData());
- json.insert("container",writeContainerConfig());
- json.insert("childElem",writeChildElem());
- }
- ///读入状态与效果动画数据
- void ElemPropertyData::readStatusEffect(const QJsonArray &arr)
- {
- statusEffect.clear();
- statusEffect.reserve(arr.size());
- for(int i = 0;i < arr.size();i++){
- QJsonObject animObj = arr[i].toObject();
- StatusEffect anim(animObj["name"].toString());
- anim.res = animObj["res"].toString();
- anim.timeline = animObj["timeline"].toString();
- anim.zOrder = animObj["zOrder"].toString();
- statusEffect.append(anim);
- }
- }
- ///写入状态与效果动画数据
- QJsonArray ElemPropertyData::writeStatusEffect() const
- {
- QJsonArray animArray;
- for(const StatusEffect &anim:statusEffect)
- {
- QJsonObject animObj;
- animObj["name"] = anim.name;
- animObj["res"] = anim.res;
- animObj["timeline"] = anim.timeline;
- animObj["zOrder"] = anim.zOrder;
- animArray.append(animObj);
- }
- return animArray;
- }
- ///读入收集动画数据
- void ElemPropertyData::readCollAnim(const QJsonArray &arr)
- {
- collAnim.clear();
- collAnim.reserve(arr.size());
- for(int i=0;i<arr.size();i++){
- QJsonObject collAnimObj = arr[i].toObject();
- CollAnim coll(collAnimObj["name"].toString());
- coll.type = collAnimObj["type"].toString();
- coll.dataMap = readStrStrMap(collAnimObj["dataMap"].toObject());
- collAnim.append(coll);
- }
- }
- ///读一个string-string map数据
- QMap<QString,QString> ElemPropertyData::readStrStrMap(const QJsonObject &obj)
- {
- QMap<QString,QString> data;
- QStringList keys = obj.keys();
- for(int i=0;i<keys.size();i++)
- {
- QString key = keys[i];
- data[key] = obj[key].toString();
- }
- return data;
- }
- ///写收集动画数据
- QJsonArray ElemPropertyData::writeCollAnim() const
- {
- QJsonArray collAnimArray;
- for(const CollAnim &coll:collAnim){
- QJsonObject collAnimObj;
- collAnimObj["name"] = coll.name;
- collAnimObj["type"] = coll.type;
- collAnimObj["dataMap"] = writeStrStrMap(coll.dataMap);
- collAnimArray.append(collAnimObj);
- }
- return collAnimArray;
- }
- ///写string-string map数据
- QJsonObject ElemPropertyData::writeStrStrMap(const QMap<QString,QString> &data) const
- {
- QStringList keys = data.keys();
- QJsonObject dataObj;
- for(int i=0;i<keys.size();i++)
- {
- QString key = keys[i];
- dataObj.insert(key,data[key]);
- }
- return dataObj;
- }
- ///读状态配置数据
- void ElemPropertyData::readStatusConfigData(const QJsonArray &arr)
- {
- statusConfig.clear();
- statusConfig.reserve(arr.size());
- for(int i=0;i<arr.size();i++){
- QJsonObject statusConfigObj = arr[i].toObject();
- StatusConfig configData(statusConfigObj["statusValue"].toString());
- configData.initAnim = statusConfigObj["initAnim"].toString();
- configData.clickAnim = statusConfigObj["clickAnim"].toString();
- configData.multiHit = statusConfigObj["multiHit"].toBool();
- configData.dropable = statusConfigObj["dropable"].toBool();
- configData.needCollect = statusConfigObj["needCollect"].toBool();
- configData.collTargetType = statusConfigObj["collTargetType"].toString();
- configData.collAnim = statusConfigObj["collAnim"].toString();
- configData.eventConfig = readEventConfig(statusConfigObj["eventConfig"].toArray());
- statusConfig.append(configData);
- }
- }
- ///读事件配置表格数据
- QVector<ElemPropertyData::EventConfig> ElemPropertyData::readEventConfig(const QJsonArray &arr)
- {
- QVector<ElemPropertyData::EventConfig> eventTable;
- eventTable.reserve(arr.size());
- for(int i=0;i<arr.size();i++){
- QJsonObject eventObj = arr[i].toObject();
- EventConfig event;
- event.name = eventObj["name"].toString();
- event.consisColor = eventObj["consisColor"].toBool();
- event.changeMagnitude = eventObj["changeMagnitude"].toInt();
- event.specialEffect = eventObj["specialEffect"].toString();
- event.elimATLattices = eventObj["elimATLattices"].toBool();
- event.triggerAction = eventObj["triggerAction"].toString();
- event.actionConfig = readStrStrMap(eventObj["actionConfig"].toObject());
- eventTable.append(event);
- }
- return eventTable;
- }
- ///写状态配置数据
- QJsonArray ElemPropertyData::writeStatusConfigData() const
- {
- QJsonArray statusConfigArray;
- for(const StatusConfig &status:statusConfig){
- QJsonObject statusObj;
- statusObj["statusValue"] = status.statusValue;
- statusObj["initAnim"] = status.initAnim;
- statusObj["clickAnim"] = status.clickAnim;
- statusObj["multiHit"] = status.multiHit;
- statusObj["dropable"] = status.dropable;
- statusObj["needCollect"] = status.needCollect;
- statusObj["collTargetType"] = status.collTargetType;
- statusObj["collAnim"] = status.collAnim;
- statusObj.insert("eventConfig",writeEventConfig(status.eventConfig));
- statusConfigArray.append(statusObj);
- }
- return statusConfigArray;
- }
- ///写事件配置表格数据
- QJsonArray ElemPropertyData::writeEventConfig(const QVector<EventConfig> &eventConfig) const
- {
- QJsonArray eventArray;
- for(const EventConfig &event:eventConfig){
- QJsonObject eventObj;
- eventObj["name"] = event.name;
- eventObj["consisColor"] = event.consisColor;
- eventObj["changeMagnitude"] = event.changeMagnitude;
- eventObj["specialEffect"] = event.specialEffect;
- eventObj["elimATLattices"] = event.elimATLattices;
- eventObj["triggerAction"] = event.triggerAction;
- eventObj.insert("actionConfig",writeStrStrMap(event.actionConfig));
- eventArray.append(eventObj);
- }
- return eventArray;
- }
- ///读容器池数据
- void ElemPropertyData::readContainerConfig(const QJsonArray &arr)
- {
- container.clear();
- container.reserve(arr.size());
- for(int i=0;i<arr.size();i++){
- QJsonObject poolObj = arr[i].toObject();
- ContainerConfig pool(poolObj["poolName"].toString());
- pool.type = poolObj["type"].toString();
- pool.table = readContainerTable(poolObj["table"].toArray());
- container.append(pool);
- }
- }
- ///读容器池表格数据
- QVector<ElemPropertyData::ContainTable> ElemPropertyData::readContainerTable(const QJsonArray &arr)
- {
- QVector<ContainTable> table;
- for(int i=0;i<arr.size();i++){
- QJsonObject containObj = arr[i].toObject();
- ContainTable contain(containObj["key"].toString());
- contain.res = containObj["res"].toString();
- contain.initTimeline = containObj["initTimeline"].toString();
- contain.clickTimeline = containObj["clickTimeline"].toString();
- contain.effectTimeline = containObj["effectTimeline"].toString();
- contain.vanishTimeline = containObj["vanishTimeline"].toString();
- contain.zOrder = containObj["zOrder"].toString();
- table.append(contain);
- }
- return table;
- }
- ///写容器池数据
- QJsonArray ElemPropertyData::writeContainerConfig() const
- {
- QJsonArray containConfigArray;
- for(const ContainerConfig &contain:container){
- QJsonObject containObj;
- containObj["poolName"] = contain.poolName;
- containObj["type"] = contain.type;
- containObj["table"] = writeContainerTable(contain.table);
- containConfigArray.append(containObj);
- }
- return containConfigArray;
- }
- ///写容器池表格数据
- QJsonArray ElemPropertyData::writeContainerTable(const QVector<ContainTable> &containTable) const
- {
- QJsonArray tableArray;
- for(const ContainTable &table:containTable){
- QJsonObject tableObj;
- tableObj["key"] = table.key;
- tableObj["res"] = table.res;
- tableObj["initTimeline"] = table.initTimeline;
- tableObj["clickTimeline"] = table.clickTimeline;
- tableObj["effectTimeline"] = table.effectTimeline;
- tableObj["vanishTimeline"] = table.vanishTimeline;
- tableObj["zOrder"] = table.zOrder;
- tableArray.append(tableObj);
- }
- return tableArray;
- }
- ///读子元素数据
- void ElemPropertyData::readChildElem(const QJsonArray &arr)
- {
- childElem.clear();
- childElem.reserve(arr.size());
- for(int i=0;i<arr.size();i++)
- {
- QJsonObject childElemObj = arr[i].toObject();
- ChildElem elem(childElemObj["name"].toString());
- elem.container = childElemObj["container"].toString();
- childElem.append(elem);
- }
- }
- ///写子元素数据
- QJsonArray ElemPropertyData::writeChildElem() const
- {
- QJsonArray elemArray;
- for(const ChildElem &elem:childElem){
- QJsonObject childElemObj;
- childElemObj["name"] = elem.name;
- childElemObj["container"] = elem.container;
- elemArray.append(childElemObj);
- }
- return elemArray;
- }
|