dataManager.h 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. #ifndef DATAMANAGER_H
  2. #define DATAMANAGER_H
  3. #include "datahpp/elemPropertyData.h"
  4. #include "datahpp/readJsonSrc.h"
  5. class DataManager
  6. {
  7. public:
  8. static DataManager* getInstance();
  9. //去除文件路径,获取文件名字
  10. static QString getFileName(QString filePath);
  11. //配置模板
  12. ///获取模板中的fields,key为模板名字,name为模板中的某一选项名
  13. QVector<ReadJsonSrc::Fields> getTempFields(QString key,QString name);
  14. ///更新模板
  15. void updateTempData();
  16. enum class ListType{Anim,CollAnim,Pool,AnimType,StatusVal,Events,Actions,PoolType,Elem};
  17. ///获取某一元素对应的动画、收集动画、容器列表
  18. QStringList getList(QString elem,ListType listType);
  19. ///检查是否存在此元素
  20. bool existElem(QString elemName);
  21. void addElem(QString elemName);
  22. void delElem(QString elemName);
  23. void changeElemName(QString oriName,QString newName);
  24. //基础属性值修改
  25. ///修改标识值
  26. void changeMarkValue(QString elem,QString val);
  27. ///修改基础属性位置
  28. void changePos(QString elem,QString val);
  29. ///修改最大层数
  30. void changeMaxLayer(QString elem,QString val);
  31. void changeScore(QString elem,QString val);
  32. void changeDropConfig(QString elem,int index);
  33. void changeIconPath(QString elem,QString iconPath);
  34. void changeLinkedState(QString elem,int state);
  35. void changeMoveAwayState(QString elem,int state);
  36. void changeIsContainerState(QString elem,int state);
  37. void changeBeatByOrderState(QString elem, int state);
  38. //基础属性值获取
  39. QString getMarkValue(QString elem);
  40. QString getPos(QString elem);
  41. QString getMaxLayer(QString elem);
  42. QString getScore(QString elem);
  43. int getDropConfig(QString elem);
  44. QString getIconPath(QString elem);
  45. bool getLinkedState(QString elem);
  46. bool getMoveAwayState(QString elem);
  47. bool getIsContainerState(QString elem);
  48. bool getBeatByOrderState(QString elem);
  49. //状态与效果动画
  50. QVector<ElemPropertyData::StatusEffect> getAnimVec(QString elem);
  51. QStringList getTimelineList(QString elem,QString filePath);
  52. bool existAnim(QString elem,QString animName);
  53. void addAnim(QString elem,QString animName);
  54. void delAnim(QString elem,int index);
  55. void changeAnimTable(QString elem,QString newData,int row,int column);
  56. void copyAnim(QString elem,QString animName,int copyIndex);
  57. //收集动画
  58. QString getAnimType(QString elem,int index);
  59. void setAnimType(QString elem, QString newType, int index);
  60. QMap<QString,QString> getCollAnimDataMap(QString elem,int index);
  61. void setCollAnimDataMapVal(QString elem,int index,QString key,QString val);
  62. bool existCollAnim(QString elem,QString collAnimName);
  63. void addCollAnim(QString elem,QString collAnimName);
  64. void delCollAnim(QString elem,int index);
  65. void changeCollAnimName(QString elem,int index,QString newName);
  66. //状态配置
  67. ElemPropertyData::StatusConfig getStatusConfigData(QString elem,int index);
  68. void changeEventTable(QString elem,QString newData,int statusIndex, int row,int column);
  69. void changeAction(QString elem,QString newData,int statusIndex);
  70. void changeActionConfigData(QString elem,int statusIndex,QMap<QString,QString> data);
  71. void setEventTableCheckBox(QString elem,int statusIndex,int row,int column,int state);
  72. bool existStatusVal(QString elem,QString statusVal);
  73. void addStatus(QString elem,QString statusVal);
  74. void delStatus(QString elem,int index);
  75. void changeStatusVal(QString elem,int index,QString newVal);
  76. enum class StatusDataType {InitAnim,ClickAnim,CollTar,CollAnim};
  77. ///改变基础属性值(表格以外)
  78. void changeStatusFundVal(QString elem,StatusDataType type,QString newData,int index);
  79. enum class CheckType{MultiHit,Dropable,BeatSubitem,NeedColl,Color,Lattice};
  80. ///改变基础属性中的勾选值
  81. void setFundCheckBox(QString elem,int statusIndex,CheckType checkType,int state);
  82. void addEvent(QString elem,int index);
  83. void delEvent(QString elem,int statusIndex,int row);
  84. void updateAllDropState(QString elem,bool state);
  85. void copyStatus(QString elem,QString statusVal,int copyIndex);
  86. //容器池
  87. ElemPropertyData::ContainerConfig getContainData(QString elem,int index);
  88. void changeContainTable(QString elem,int index,int row,int column,QString data);
  89. bool existPool(QString elem,QString poolName);
  90. void addPool(QString elem,QString poolName);
  91. void delPool(QString elem,int index);
  92. void changePoolName(QString elem,int index,QString newName);
  93. bool existKey(QString elem,int poolIndex,QString key);
  94. void addKey(QString elem,int poolIndex,QString keyName);
  95. void delKey(QString elem,int poolIndex,int row);
  96. void changeContainType(QString elem,int poolIndex,QString poolType);
  97. void copyKey(QString elem,int poolIndex,QString keyName,int copyIndex);
  98. //子元素
  99. QVector<ElemPropertyData::ChildElem> getChildElemTable(QString elem);
  100. void changeChildElemTable(QString elem,int row,int column,QString data);
  101. bool existChildElem(QString elem,QString childElemName);
  102. void addChildElem(QString elem,QString childElemName);
  103. void delChildElem(QString elem,int index);
  104. //数据保存
  105. bool loadData();
  106. bool saveData();
  107. void read(const QJsonObject &json);
  108. void write(QJsonObject &json) const;
  109. //导出数据
  110. bool exportData(QString fileName);
  111. QString getExportMessage();
  112. static QVector<QVector<int>> getGridPos(QString str);
  113. QString getTempId(QString key,QString name);
  114. QString getTempFieldId(QString key,QString name,QString fieldName);
  115. private:
  116. DataManager();
  117. ~DataManager();
  118. DataManager(const DataManager &dataManager);
  119. QMap<QString,ElemPropertyData*> elements;
  120. ReadJsonSrc* jsonTemp;
  121. QString exportMessage;
  122. ///检查当前数据导出是否合法
  123. bool exportIsValid();
  124. ///寻找标识值是否重复出现
  125. bool findElemLabelName(QString elem,QString labelName);
  126. };
  127. #endif // DATAMANAGER_H