123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #include "readJsonSrc.h"
- #include <QJsonDocument>
- #include <QJsonObject>
- #include <QFile>
- #include <iostream>
- #include <QVector>
- #include <QJsonArray>
- ReadJsonSrc::ReadJsonSrc(QString filePath)
- {
- QFile srcFile(filePath);
- if(!srcFile.open(QFile::ReadOnly)){
- std::cout<<"can't open file "<<qPrintable(filePath)<<std::endl;
- }
- QJsonObject jsonObj = QJsonDocument::fromJson(QString(srcFile.readAll()).toUtf8()).object();
- srcFile.close();
- readJsonObj(jsonObj);
- }
- void ReadJsonSrc::readJsonObj(QJsonObject obj)
- {
- //收集动画
- QJsonArray collAnim = obj["coll_template"].toArray();
- templateMap["collAnimTemp"] = readTemplate(collAnim);
- //事件
- QJsonArray event = obj["event_template"].toArray();
- templateMap["eventTemp"] = readTemplate(event);
- //动作
- QJsonArray action = obj["action_template"].toArray();
- templateMap["actionTemp"] = readTemplate(action);
- //容器池
- QJsonArray pool = obj["pool_template"].toArray();
- templateMap["poolTemp"] = readTemplate(pool);
- }
- QVector<ReadJsonSrc::Template> ReadJsonSrc::readTemplate(QJsonArray arr)
- {
- QVector<Template> tempVec;
- for(const auto &i:arr){
- QJsonObject tempObj = i.toObject();
- Template temp(tempObj["name"].toString(),tempObj["id"].toString());
- QVector<Fields> fields;
- QJsonObject fieldObj = tempObj["fields"].toObject();
- QStringList fiedsName = fieldObj.keys();
- for(const auto &j:fiedsName){
- QJsonObject content = fieldObj[j].toObject();
- Fields field(j,content["id"].toString(),content["type"].toString(),content["src"].toString(),content["default"].toString());
- fields.push_back(field);
- }
- temp.fields = fields;
- tempVec.push_back(temp);
- }
- return tempVec;
- }
- int ReadJsonSrc::getTemplateIndex(QString key,QString name)
- {
- QVector<Template> tempVec = templateMap[key];
- for(int i=0;i<tempVec.size();i++){
- if(tempVec[i].name == name) return i;
- }
- return -1;;
- }
|