9b79ff9bd223c8d33a684b187de331b9f0fcdc0c.js 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. System.register(["__unresolved_0", "cc", "__unresolved_1", "__unresolved_2", "__unresolved_3", "__unresolved_4", "__unresolved_5"], function (_export, _context) {
  2. "use strict";
  3. var _reporterNs, _cclegacy, __checkObsolete__, __checkObsoleteInNamespace__, _decorator, error, TextAsset, CsvParser, Constants, Logger, Singleton, bundleMgr, _dec, _class, _crd, ccclass, property, CsvManager, csvMgr;
  4. function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
  5. function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
  6. function _reportPossibleCrUseOfCsvParser(extras) {
  7. _reporterNs.report("CsvParser", "./CsvParser", _context.meta, extras);
  8. }
  9. function _reportPossibleCrUseOfConstants(extras) {
  10. _reporterNs.report("Constants", "../../data/Constants", _context.meta, extras);
  11. }
  12. function _reportPossibleCrUseOfLogger(extras) {
  13. _reporterNs.report("Logger", "../../extend/Logger", _context.meta, extras);
  14. }
  15. function _reportPossibleCrUseOfSingleton(extras) {
  16. _reporterNs.report("Singleton", "../manager/Singleton", _context.meta, extras);
  17. }
  18. function _reportPossibleCrUseOfbundleMgr(extras) {
  19. _reporterNs.report("bundleMgr", "../manager/BundleManager", _context.meta, extras);
  20. }
  21. return {
  22. setters: [function (_unresolved_) {
  23. _reporterNs = _unresolved_;
  24. }, function (_cc) {
  25. _cclegacy = _cc.cclegacy;
  26. __checkObsolete__ = _cc.__checkObsolete__;
  27. __checkObsoleteInNamespace__ = _cc.__checkObsoleteInNamespace__;
  28. _decorator = _cc._decorator;
  29. error = _cc.error;
  30. TextAsset = _cc.TextAsset;
  31. }, function (_unresolved_2) {
  32. CsvParser = _unresolved_2.CsvParser;
  33. }, function (_unresolved_3) {
  34. Constants = _unresolved_3.Constants;
  35. }, function (_unresolved_4) {
  36. Logger = _unresolved_4.Logger;
  37. }, function (_unresolved_5) {
  38. Singleton = _unresolved_5.Singleton;
  39. }, function (_unresolved_6) {
  40. bundleMgr = _unresolved_6.bundleMgr;
  41. }],
  42. execute: function () {
  43. _crd = true;
  44. _cclegacy._RF.push({}, "d5fb9D+44ZAy5iHguyBG4yt", "CsvManager", undefined);
  45. __checkObsolete__(['_decorator', 'error', 'TextAsset']);
  46. ({
  47. ccclass,
  48. property
  49. } = _decorator); //wws
  50. CsvManager = (_dec = ccclass('CsvManager'), _dec(_class = class CsvManager extends (_crd && Singleton === void 0 ? (_reportPossibleCrUseOfSingleton({
  51. error: Error()
  52. }), Singleton) : Singleton) {
  53. constructor() {
  54. super(...arguments);
  55. // 表格所在的目录
  56. this._directory = 'csv';
  57. // 表格解析器单例
  58. this._parser = new (_crd && CsvParser === void 0 ? (_reportPossibleCrUseOfCsvParser({
  59. error: Error()
  60. }), CsvParser) : CsvParser)();
  61. }
  62. /*调用事例 加载所有CSV表
  63. await csvMgr.loadAll(
  64. (finished, total) => {
  65. Logger.log(`加载进度: ${finished}/${total}`);
  66. },
  67. (isAllFinished, tableName, data) => {
  68. Logger.log(`CSV加载完成`+ tableName);
  69. }
  70. );
  71. //获取表数据(异步)
  72. let levels = csvMgr.getTable("levels")
  73. Logger.log("物品表数据:", JSON.stringify(levels));
  74. //获取表数据 (异步)
  75. csvMgr.getTable("item").then(table => {
  76. Logger.log("物品表数据:", table);
  77. });*/
  78. /**
  79. * 加载所有CSV配置表
  80. * @param onProgress @param onProgress 进度回调 (isAllFinished: 是否全部完成, tableName: 表名, data: 表数据)
  81. * @returns 当所有表加载完成或出错时resolve/reject
  82. */
  83. loadAll(onProgress) {
  84. var _this = this;
  85. return _asyncToGenerator(function* () {
  86. try {
  87. var bundle = yield (_crd && bundleMgr === void 0 ? (_reportPossibleCrUseOfbundleMgr({
  88. error: Error()
  89. }), bundleMgr) : bundleMgr).getBundle((_crd && Constants === void 0 ? (_reportPossibleCrUseOfConstants({
  90. error: Error()
  91. }), Constants) : Constants).bundleName.data); //1. 获取目录下所有CSV文件列表(不实际加载资源)
  92. var fileList = bundle.getDirWithPath(_this._directory);
  93. if (fileList.length === 0) {
  94. (_crd && Logger === void 0 ? (_reportPossibleCrUseOfLogger({
  95. error: Error()
  96. }), Logger) : Logger).warn("\u76EE\u5F55 " + _this._directory + " \u4E0B\u672A\u627E\u5230CSV\u6587\u4EF6");
  97. return;
  98. }
  99. var _total = fileList.length;
  100. var loadedCount = 0; //2. 逐个加载文件
  101. for (var file of fileList) {
  102. var asset = yield _this._loadSingleTable(file.path); //解析数据并缓存
  103. var _data = _this._parser.addTable(asset.name, asset.text); //更新进度和回调
  104. loadedCount++;
  105. var _tableName = file.path.split('/').pop();
  106. onProgress == null || onProgress(loadedCount == _total, loadedCount, _total, _tableName, _data);
  107. }
  108. } catch (err) {
  109. error('加载CSV表过程中发生错误:', err);
  110. throw err; // 重新抛出错误,让调用方可以捕获
  111. }
  112. })();
  113. }
  114. /**
  115. * 加载单个CSV表
  116. * @param path 表路径
  117. * @returns Promise<TextAsset> 加载成功的TextAsset
  118. * @private
  119. */
  120. _loadSingleTable(path) {
  121. return _asyncToGenerator(function* () {
  122. var bundle = yield (_crd && bundleMgr === void 0 ? (_reportPossibleCrUseOfbundleMgr({
  123. error: Error()
  124. }), bundleMgr) : bundleMgr).getBundle((_crd && Constants === void 0 ? (_reportPossibleCrUseOfConstants({
  125. error: Error()
  126. }), Constants) : Constants).bundleName.data);
  127. return new Promise((resolve, reject) => {
  128. bundle.load(path, TextAsset, (err, asset) => {
  129. if (err || !asset) {
  130. reject(err || new Error("\u52A0\u8F7D\u8D44\u6E90 " + path + " \u5931\u8D25"));
  131. } else {
  132. resolve(asset);
  133. }
  134. });
  135. });
  136. })();
  137. }
  138. /**
  139. * 调用事例 csvMgr.getTableArr('weapon');
  140. * 异步获取表数据(如果表未加载会自动加载)
  141. * @param tableName 表名
  142. * @returns Promise<T[]> 表数据数组
  143. */
  144. getTableArr(tableName) {
  145. return this._parser.getTableArr(tableName);
  146. }
  147. /**调用事例 csvMgr.findOne('weapon', w => w.quality === 'epic')
  148. * 查询单条记录
  149. * @param tableName 表名
  150. * @param predicate 查询条件函数
  151. * @returns 匹配的第一条记录或undefined
  152. */
  153. findOne(tableName, predicate) {
  154. return this.getTableArr(tableName).find(predicate);
  155. }
  156. /**
  157. * 查询多条记录
  158. * @param tableName 表名
  159. * @param predicate 查询条件函数
  160. * @returns 匹配的所有记录数组
  161. */
  162. findMany(tableName, predicate) {
  163. return this.getTableArr(tableName).filter(predicate);
  164. }
  165. }) || _class); //全局单例
  166. _export("csvMgr", csvMgr = CsvManager.ins());
  167. _cclegacy._RF.pop();
  168. _crd = false;
  169. }
  170. };
  171. });
  172. //# sourceMappingURL=9b79ff9bd223c8d33a684b187de331b9f0fcdc0c.js.map