9eddfc0e89ad6921747c967f3f36130ca21d1684.js 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564
  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, sys, Singleton, Constants, Utils, csvMgr, stateMgr, _dec, _class, _crd, ccclass, property, UserData, userIns;
  4. function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
  5. function _reportPossibleCrUseOfSingleton(extras) {
  6. _reporterNs.report("Singleton", "../core/manager/Singleton", _context.meta, extras);
  7. }
  8. function _reportPossibleCrUseOfConstants(extras) {
  9. _reporterNs.report("Constants", "./Constants", _context.meta, extras);
  10. }
  11. function _reportPossibleCrUseOfUtils(extras) {
  12. _reporterNs.report("Utils", "../utils/Utils", _context.meta, extras);
  13. }
  14. function _reportPossibleCrUseOfcsvMgr(extras) {
  15. _reporterNs.report("csvMgr", "../core/csv/CsvManager", _context.meta, extras);
  16. }
  17. function _reportPossibleCrUseOfstateMgr(extras) {
  18. _reporterNs.report("stateMgr", "../core/manager/StateManager", _context.meta, extras);
  19. }
  20. return {
  21. setters: [function (_unresolved_) {
  22. _reporterNs = _unresolved_;
  23. }, function (_cc) {
  24. _cclegacy = _cc.cclegacy;
  25. __checkObsolete__ = _cc.__checkObsolete__;
  26. __checkObsoleteInNamespace__ = _cc.__checkObsoleteInNamespace__;
  27. _decorator = _cc._decorator;
  28. sys = _cc.sys;
  29. }, function (_unresolved_2) {
  30. Singleton = _unresolved_2.Singleton;
  31. }, function (_unresolved_3) {
  32. Constants = _unresolved_3.Constants;
  33. }, function (_unresolved_4) {
  34. Utils = _unresolved_4.Utils;
  35. }, function (_unresolved_5) {
  36. csvMgr = _unresolved_5.csvMgr;
  37. }, function (_unresolved_6) {
  38. stateMgr = _unresolved_6.stateMgr;
  39. }],
  40. execute: function () {
  41. _crd = true;
  42. _cclegacy._RF.push({}, "5c502bBHDZPy7Y4+NP+L5YS", "UserData", undefined);
  43. __checkObsolete__(['_decorator', 'sys', 'utils']);
  44. ({
  45. ccclass,
  46. property
  47. } = _decorator);
  48. UserData = (_dec = ccclass("UserData"), _dec(_class = class UserData extends (_crd && Singleton === void 0 ? (_reportPossibleCrUseOfSingleton({
  49. error: Error()
  50. }), Singleton) : Singleton) {
  51. constructor() {
  52. super(...arguments);
  53. //枪的属性列表
  54. this.gunAttrKeys = ["attack", "bulletSpeed", "stability", "magazine", "reloadingSpeed", "zoomingSpeed"];
  55. //玩家是否连续通关
  56. this.isContinuePass = false;
  57. //玩家数据
  58. this._data = null;
  59. //敌人表
  60. this._enemyTable = null;
  61. //敌人使用的武器表
  62. this._enemyWeaponTable = null;
  63. //扔飞票的表
  64. this._boomerangTable = null;
  65. //扔飞票商店
  66. this._boomerangShopTable = null;
  67. //商店
  68. this._shopTable = null;
  69. //玩家表
  70. this._playerTable = null;
  71. //关卡数据表
  72. this._levelsTable = null;
  73. //item数据表
  74. this._itemTable = null;
  75. //玩家所有枪
  76. this._playerGunsTable = null;
  77. //玩家所有枪的属性
  78. this._playerGunAttsTable = null;
  79. //杂物比如沙袋油漆桶数据
  80. this._sundriesTable = null;
  81. }
  82. get data() {
  83. if (!this._data) {
  84. this.loadFromCache();
  85. this._data = new Proxy(this._data, {
  86. set: (target, prop, value) => {
  87. target[prop] = value;
  88. if (prop === "gold") {
  89. //金币
  90. (_crd && stateMgr === void 0 ? (_reportPossibleCrUseOfstateMgr({
  91. error: Error()
  92. }), stateMgr) : stateMgr).updateAllUI((_crd && Constants === void 0 ? (_reportPossibleCrUseOfConstants({
  93. error: Error()
  94. }), Constants) : Constants).gold);
  95. } else if (prop === "diamond") {
  96. //钻石
  97. (_crd && stateMgr === void 0 ? (_reportPossibleCrUseOfstateMgr({
  98. error: Error()
  99. }), stateMgr) : stateMgr).updateAllUI((_crd && Constants === void 0 ? (_reportPossibleCrUseOfConstants({
  100. error: Error()
  101. }), Constants) : Constants).diamond);
  102. }
  103. this.saveToCache();
  104. return true;
  105. }
  106. });
  107. }
  108. return this._data;
  109. }
  110. get enemyTable() {
  111. if (!this._enemyTable) {
  112. this._enemyTable = (_crd && csvMgr === void 0 ? (_reportPossibleCrUseOfcsvMgr({
  113. error: Error()
  114. }), csvMgr) : csvMgr).getTableArr('enemy');
  115. }
  116. return this._enemyTable;
  117. }
  118. get enemyWeaponTable() {
  119. if (!this._enemyWeaponTable) {
  120. this._enemyWeaponTable = (_crd && csvMgr === void 0 ? (_reportPossibleCrUseOfcsvMgr({
  121. error: Error()
  122. }), csvMgr) : csvMgr).getTableArr('enemy_guns');
  123. }
  124. return this._enemyWeaponTable;
  125. }
  126. get boomerangTable() {
  127. if (!this._boomerangTable) {
  128. this._boomerangTable = (_crd && csvMgr === void 0 ? (_reportPossibleCrUseOfcsvMgr({
  129. error: Error()
  130. }), csvMgr) : csvMgr).getTableArr('boomerang');
  131. }
  132. return this._boomerangTable;
  133. }
  134. get boomerangShopTable() {
  135. if (!this._boomerangShopTable) {
  136. this._boomerangShopTable = (_crd && csvMgr === void 0 ? (_reportPossibleCrUseOfcsvMgr({
  137. error: Error()
  138. }), csvMgr) : csvMgr).getTableArr('boomerang_shop');
  139. }
  140. return this._boomerangShopTable;
  141. }
  142. get shopTable() {
  143. if (!this._shopTable) {
  144. this._shopTable = (_crd && csvMgr === void 0 ? (_reportPossibleCrUseOfcsvMgr({
  145. error: Error()
  146. }), csvMgr) : csvMgr).getTableArr('shop');
  147. }
  148. return this._shopTable;
  149. }
  150. get playerTable() {
  151. if (!this._playerTable) {
  152. this._playerTable = (_crd && csvMgr === void 0 ? (_reportPossibleCrUseOfcsvMgr({
  153. error: Error()
  154. }), csvMgr) : csvMgr).getTableArr('player');
  155. }
  156. return this._playerTable;
  157. }
  158. get levelsTable() {
  159. if (!this._levelsTable) {
  160. this._levelsTable = (_crd && csvMgr === void 0 ? (_reportPossibleCrUseOfcsvMgr({
  161. error: Error()
  162. }), csvMgr) : csvMgr).getTableArr('levels');
  163. }
  164. return this._levelsTable;
  165. }
  166. get itemTable() {
  167. if (!this._itemTable) {
  168. this._itemTable = (_crd && csvMgr === void 0 ? (_reportPossibleCrUseOfcsvMgr({
  169. error: Error()
  170. }), csvMgr) : csvMgr).getTableArr('item');
  171. }
  172. return this._itemTable;
  173. }
  174. get playerGunsTable() {
  175. if (!this._playerGunsTable) {
  176. this._playerGunsTable = (_crd && csvMgr === void 0 ? (_reportPossibleCrUseOfcsvMgr({
  177. error: Error()
  178. }), csvMgr) : csvMgr).getTableArr('player_guns');
  179. }
  180. return this._playerGunsTable;
  181. }
  182. get playerGunAttsTable() {
  183. if (!this._playerGunAttsTable) {
  184. this._playerGunAttsTable = (_crd && csvMgr === void 0 ? (_reportPossibleCrUseOfcsvMgr({
  185. error: Error()
  186. }), csvMgr) : csvMgr).getTableArr('player_guns_atts');
  187. }
  188. return this._playerGunAttsTable;
  189. }
  190. get sundriesTable() {
  191. if (!this._sundriesTable) {
  192. this._sundriesTable = (_crd && csvMgr === void 0 ? (_reportPossibleCrUseOfcsvMgr({
  193. error: Error()
  194. }), csvMgr) : csvMgr).getTableArr('sundries');
  195. }
  196. return this._sundriesTable;
  197. }
  198. /**
  199. * 读取数据缓存
  200. */
  201. loadFromCache() {
  202. var l = sys.localStorage.getItem((_crd && Constants === void 0 ? (_reportPossibleCrUseOfConstants({
  203. error: Error()
  204. }), Constants) : Constants).localCache.playerData);
  205. if (l) {
  206. //解密出来转成序列化JSON
  207. this._data = JSON.parse((_crd && Utils === void 0 ? (_reportPossibleCrUseOfUtils({
  208. error: Error()
  209. }), Utils) : Utils).decrypt(l));
  210. } else {
  211. //玩家配置数据
  212. var configData = (_crd && Utils === void 0 ? (_reportPossibleCrUseOfUtils({
  213. error: Error()
  214. }), Utils) : Utils).clone(this.playerTable[0]); //查询玩家所有枪
  215. this._data = _extends({
  216. gold: 88880,
  217. //金币
  218. diamond: 88880,
  219. //钻石
  220. boomerang: 0,
  221. //飞镖个数
  222. level: 1
  223. }, configData, {
  224. //转化的基础配置数据
  225. guns: [],
  226. //玩家拥有的枪
  227. useIdx: 0
  228. });
  229. this.getGunData(configData.defaultWeapon, true);
  230. }
  231. }
  232. /**
  233. * 查询一个枪的数据 顺带把枪的属性等级提升的部分参数带过来
  234. * @param id 枪的id
  235. * @param isSave 是否保存绑定在玩家身上
  236. * @returns 返回枪查询的枪的数据
  237. */
  238. getGunData(id, isSave) {
  239. if (isSave === void 0) {
  240. isSave = false;
  241. }
  242. //如果玩家已经拥有该枪 则直接返回
  243. var gData = this._data.guns.find(e => e.id == id);
  244. if (!gData) {
  245. gData = (_crd && Utils === void 0 ? (_reportPossibleCrUseOfUtils({
  246. error: Error()
  247. }), Utils) : Utils).clone(this.playerGunsTable).find(e => e.id == id);
  248. }
  249. if (!gData) return;
  250. this.gunAttrKeys.forEach((arg_name, idx) => {
  251. var levelKey = arg_name + "Level";
  252. var attrLevel = 1;
  253. if (gData[levelKey] != null) {
  254. attrLevel = gData[levelKey];
  255. }
  256. var fun = (i, l, name) => {
  257. var data = this.playerGunAttsTable.find(e => e.id == i && e.level == l && e.attribute_name == name);
  258. return data;
  259. };
  260. var glData = fun(id, attrLevel, arg_name);
  261. if (glData) {
  262. var nextGLData = fun(id, attrLevel + 1, arg_name);
  263. if (!nextGLData) {
  264. nextGLData = glData;
  265. }
  266. ; //unique_id 这个字段为了识别到时候同一个属性 升级极端情况下 材料消耗相同的时候的判断
  267. if (idx == 0) {
  268. gData.attack += glData.value; //伤害
  269. gData.attackUniqueId = nextGLData.unique_id; //属性等级下的唯一id
  270. gData.attackLevel = glData.level; //属性等级
  271. gData.attackExpenditure = glData.expenditure; //当前等级消耗
  272. gData.nextAttackExpenditure = nextGLData ? nextGLData.expenditure : null; //伤害下一个等级升级消耗
  273. } else if (idx == 1) {
  274. gData.bulletSpeed += glData.value; //射速
  275. gData.bulletSpeedUniqueId = nextGLData.unique_id; //属性等级下的唯一id
  276. gData.bulletSpeedLevel = glData.level; //属性等级
  277. gData.bulletSpeedExpenditure = glData.expenditure;
  278. gData.nextBulletSpeedExpenditure = nextGLData ? nextGLData.expenditure : null; //射速下一个等级升级消耗
  279. } else if (idx == 2) {
  280. gData.stability += glData.value; //稳定性
  281. gData.stabilityUniqueId = nextGLData.unique_id; //属性等级下的唯一id
  282. gData.stabilityLevel = glData.level; //属性等级
  283. gData.stabilityExpenditure = glData.expenditure;
  284. gData.nextStabilityExpenditure = nextGLData ? nextGLData.expenditure : null; //稳定性下一个等级升级消耗
  285. } else if (idx == 3) {
  286. gData.magazine += glData.value; //弹匣
  287. gData.magazineUniqueId = nextGLData.unique_id; //属性等级下的唯一id
  288. gData.magazineLevel = glData.level; //属性等级
  289. gData.magazineExpenditure = glData.expenditure;
  290. gData.nextMagazineExpenditure = nextGLData ? nextGLData.expenditure : null; //弹匣下一个等级升级消耗
  291. } else if (idx == 4) {
  292. gData.reloadingSpeed += glData.value; //装填速度
  293. gData.reloadingSpeedUniqueId = nextGLData.unique_id; //属性等级下的唯一id
  294. gData.reloadingSpeedLevel = glData.level; //属性等级
  295. gData.reloadingSpeedExpenditure = glData.expenditure;
  296. gData.nextReloadingSpeedExpenditure = nextGLData ? nextGLData.expenditure : null; //装填速度下一个等级升级消耗
  297. } else if (idx == 5) {
  298. gData.zoomingSpeed += glData.value; //缩放速度
  299. gData.zoomingSpeedUniqueId = nextGLData.unique_id; //属性等级下的唯一id
  300. gData.zoomingSpeedLevel = glData.level; //属性等级
  301. gData.zoomingSpeedExpenditure = glData.expenditure;
  302. gData.nextZoomingSpeedExpenditure = nextGLData ? nextGLData.expenditure : null; //缩放速度下一个等级升级消耗
  303. }
  304. }
  305. });
  306. if (isSave) {
  307. var indx = this._data.guns.findIndex(e => e.id == gData.id);
  308. if (indx == -1) {
  309. this._data.guns.push(gData);
  310. }
  311. this.saveToCache();
  312. }
  313. return gData;
  314. }
  315. /**
  316. * 查询玩家的一把武器的某个属性的总的值 和 武器某个属性升级的最大等级
  317. * @param gun 查询的枪
  318. * @param attribute_name 属性
  319. */
  320. getGunMaxValue(gun, attribute_name) {
  321. if (!gun) return {
  322. totalValue: 0,
  323. maxLevel: 0,
  324. isMaxLevel: false
  325. }; //过滤匹配的数据
  326. var filteredData = this.playerGunAttsTable.filter(e => e.id === gun.id && e.attribute_name === attribute_name); //计算总值
  327. var totalValue = filteredData.reduce((sum, item) => sum + item.value, 0); //计算最大等级 如果数组为空则返回0
  328. var maxLevel = filteredData.length > 0 ? Math.max(...filteredData.map(item => item.level)) : 0; //基础值 + 升级累加值
  329. var attrLevelKey = attribute_name + "Level";
  330. var baseData = userIns.playerGunsTable.find(e => e.id == gun.id);
  331. return {
  332. totalValue: baseData[attribute_name] + totalValue,
  333. maxLevel: maxLevel,
  334. isMaxLevel: gun[attrLevelKey] >= maxLevel
  335. };
  336. }
  337. /**
  338. * 升级某个枪的属性
  339. */
  340. upgradeGun(gun, attribute_name) {
  341. if (!gun) return;
  342. var hasGun = this.data.guns.find(e => e.id == gun.id);
  343. if (!hasGun) return; //查询属性的等级
  344. var attrLevelKey = attribute_name + "Level";
  345. hasGun[attrLevelKey] += 1;
  346. this.getGunData(gun.id, true);
  347. }
  348. /**
  349. * 得到当前用户使用的枪
  350. */
  351. getCurUseGun() {
  352. var pData = {};
  353. if (this.data.useIdx < this.data.guns.length) {
  354. var gun = this.data.guns[this.data.useIdx];
  355. Object.assign(pData, this._data, gun);
  356. }
  357. return pData;
  358. }
  359. /**
  360. * 用户切换使用的枪
  361. * @param id 枪的id
  362. */
  363. changeGun(id) {
  364. if ((_crd && Utils === void 0 ? (_reportPossibleCrUseOfUtils({
  365. error: Error()
  366. }), Utils) : Utils).isNull(id)) return;
  367. var idx = this.data.guns.findIndex(e => e.id == id);
  368. if (idx != -1) {
  369. this.data.useIdx = idx;
  370. this.getGunData(id, true);
  371. }
  372. }
  373. /**
  374. * 解锁全部枪玩家的枪
  375. */
  376. unlockAllGuns() {
  377. (_crd && Utils === void 0 ? (_reportPossibleCrUseOfUtils({
  378. error: Error()
  379. }), Utils) : Utils).clone(this.playerGunsTable).forEach(e => {
  380. this.getGunData(e.id, true);
  381. });
  382. }
  383. /**
  384. * 是否拥有这把枪
  385. */
  386. isHasGun(id) {
  387. if ((_crd && Utils === void 0 ? (_reportPossibleCrUseOfUtils({
  388. error: Error()
  389. }), Utils) : Utils).isNull(id)) return false;
  390. var gun = this.data.guns.find(e => e.id == id);
  391. return gun != null;
  392. }
  393. /**
  394. * 解锁武器
  395. * @param id 枪的id
  396. */
  397. unlockGun(id) {
  398. if ((_crd && Utils === void 0 ? (_reportPossibleCrUseOfUtils({
  399. error: Error()
  400. }), Utils) : Utils).isNull(id) || this.isHasGun(id)) return;
  401. this.getGunData(id, true);
  402. }
  403. /**
  404. * 得到当前关卡下的敌人数据
  405. */
  406. getCurLevelData() {
  407. var safeIndex = Math.min(this.data.level - 1, this.levelsTable.length - 1);
  408. return this.levelsTable[safeIndex];
  409. }
  410. /**
  411. * 下一个关卡
  412. */
  413. nextLevel() {
  414. var levels = this.levelsTable;
  415. var res = levels.filter(e => {
  416. return e.id == this.data.level + 1;
  417. });
  418. if (res) {
  419. this.data.level = levels.findIndex(e => e.id == res.id);
  420. }
  421. return res;
  422. }
  423. /**
  424. * 保存到缓存中
  425. */
  426. saveToCache() {
  427. var data = JSON.stringify(this.data); //序列化JSON字符串过后加密存储
  428. sys.localStorage.setItem((_crd && Constants === void 0 ? (_reportPossibleCrUseOfConstants({
  429. error: Error()
  430. }), Constants) : Constants).localCache.playerData, (_crd && Utils === void 0 ? (_reportPossibleCrUseOfUtils({
  431. error: Error()
  432. }), Utils) : Utils).encrypt(data));
  433. }
  434. /**
  435. * 删除缓存
  436. */
  437. removeData() {
  438. this._data = null;
  439. sys.localStorage.removeItem((_crd && Constants === void 0 ? (_reportPossibleCrUseOfConstants({
  440. error: Error()
  441. }), Constants) : Constants).localCache.playerData);
  442. this.loadFromCache();
  443. }
  444. }) || _class); //全局单例
  445. _export("userIns", userIns = UserData.ins());
  446. _cclegacy._RF.pop();
  447. _crd = false;
  448. }
  449. };
  450. });
  451. //# sourceMappingURL=9eddfc0e89ad6921747c967f3f36130ca21d1684.js.map