d10ce2f08cc75137742caa9b9638c82862d0d1b9.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397
  1. System.register(["__unresolved_0", "cc", "__unresolved_1", "__unresolved_2", "__unresolved_3", "__unresolved_4", "__unresolved_5", "__unresolved_6"], function (_export, _context) {
  2. "use strict";
  3. var _reporterNs, _cclegacy, __checkObsolete__, __checkObsoleteInNamespace__, _decorator, Component, Animation, ResUtil, Game, Utils, userIns, Enemy, GMap, _dec, _dec2, _class, _class2, _descriptor, _crd, ccclass, property, BuildEnemys;
  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 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); } }
  6. 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); }); }; }
  7. function _initializerDefineProperty(target, property, descriptor, context) { if (!descriptor) return; Object.defineProperty(target, property, { enumerable: descriptor.enumerable, configurable: descriptor.configurable, writable: descriptor.writable, value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 }); }
  8. function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
  9. function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'transform-class-properties is enabled and runs after the decorators transform.'); }
  10. function _reportPossibleCrUseOfResUtil(extras) {
  11. _reporterNs.report("ResUtil", "../utils/ResUtil", _context.meta, extras);
  12. }
  13. function _reportPossibleCrUseOfGame(extras) {
  14. _reporterNs.report("Game", "./Game", _context.meta, extras);
  15. }
  16. function _reportPossibleCrUseOfUtils(extras) {
  17. _reporterNs.report("Utils", "../utils/Utils", _context.meta, extras);
  18. }
  19. function _reportPossibleCrUseOfuserIns(extras) {
  20. _reporterNs.report("userIns", "../data/UserData", _context.meta, extras);
  21. }
  22. function _reportPossibleCrUseOfEnemy(extras) {
  23. _reporterNs.report("Enemy", "./Enemy", _context.meta, extras);
  24. }
  25. function _reportPossibleCrUseOfGMap(extras) {
  26. _reporterNs.report("GMap", "./GMap", _context.meta, extras);
  27. }
  28. return {
  29. setters: [function (_unresolved_) {
  30. _reporterNs = _unresolved_;
  31. }, function (_cc) {
  32. _cclegacy = _cc.cclegacy;
  33. __checkObsolete__ = _cc.__checkObsolete__;
  34. __checkObsoleteInNamespace__ = _cc.__checkObsoleteInNamespace__;
  35. _decorator = _cc._decorator;
  36. Component = _cc.Component;
  37. Animation = _cc.Animation;
  38. }, function (_unresolved_2) {
  39. ResUtil = _unresolved_2.ResUtil;
  40. }, function (_unresolved_3) {
  41. Game = _unresolved_3.Game;
  42. }, function (_unresolved_4) {
  43. Utils = _unresolved_4.Utils;
  44. }, function (_unresolved_5) {
  45. userIns = _unresolved_5.userIns;
  46. }, function (_unresolved_6) {
  47. Enemy = _unresolved_6.Enemy;
  48. }, function (_unresolved_7) {
  49. GMap = _unresolved_7.GMap;
  50. }],
  51. execute: function () {
  52. _crd = true;
  53. _cclegacy._RF.push({}, "88af4GpYOpAS6rDUJ/7f1mw", "BuildEnemys", undefined);
  54. __checkObsolete__(['_decorator', 'Component', 'Node', 'Vec3', 'Animation']);
  55. ({
  56. ccclass,
  57. property
  58. } = _decorator);
  59. _export("BuildEnemys", BuildEnemys = (_dec = ccclass('BuildEnemys'), _dec2 = property({
  60. type: Animation,
  61. tooltip: "开门动画"
  62. }), _dec(_class = (_class2 = class BuildEnemys extends Component {
  63. constructor() {
  64. super(...arguments);
  65. _initializerDefineProperty(this, "openDoor", _descriptor, this);
  66. //所有敌人数据
  67. this.queueEnemys = [];
  68. //保存每一波临时数据定时器记录
  69. this.eTimeMaps = new Map();
  70. //当前生成的敌人
  71. this.allEnemys = [];
  72. //每连杀3个敌人的次数
  73. this.continuekillCount = 0;
  74. //map路径控制类
  75. this.map = null;
  76. //敌人排序定时器
  77. this.intervalId = 0;
  78. }
  79. start() {
  80. this.map = this.node.getComponent(_crd && GMap === void 0 ? (_reportPossibleCrUseOfGMap({
  81. error: Error()
  82. }), GMap) : GMap); //加载敌人数据
  83. this.allEnemys = []; //敌人排序
  84. if (this.intervalId != null) {
  85. clearInterval(this.intervalId);
  86. }
  87. this.intervalId = setInterval(dt => {
  88. if ((_crd && Game === void 0 ? (_reportPossibleCrUseOfGame({
  89. error: Error()
  90. }), Game) : Game).I.isGameOver || (_crd && Game === void 0 ? (_reportPossibleCrUseOfGame({
  91. error: Error()
  92. }), Game) : Game).I.isPause) return;
  93. this.sortEnemyList();
  94. }, 0.25 * 1000);
  95. }
  96. /**
  97. * 开始游戏创建敌人
  98. */
  99. loadLevelEnemys() {
  100. var _this = this;
  101. return _asyncToGenerator(function* () {
  102. if ((_crd && Game === void 0 ? (_reportPossibleCrUseOfGame({
  103. error: Error()
  104. }), Game) : Game).I.isGameOver || (_crd && Game === void 0 ? (_reportPossibleCrUseOfGame({
  105. error: Error()
  106. }), Game) : Game).I.isPause) return;
  107. _this.queueEnemys = _this.readLevelEnemys();
  108. _this.eTimeMaps.forEach((k, v) => {
  109. if (v) {
  110. clearInterval(v);
  111. }
  112. });
  113. _this.eTimeMaps.clear(); //总共每一个敌人延迟时间统计 0.1s检测一次
  114. var delay = 0;
  115. var interval = 0.0175; //敌人数据
  116. var _loop = function* _loop() {
  117. var eData = _this.queueEnemys[idx]; //每一种之间兵种间隔随机
  118. var t = (_crd && Utils === void 0 ? (_reportPossibleCrUseOfUtils({
  119. error: Error()
  120. }), Utils) : Utils).getRandomFloat(eData.min_interval, eData.max_interval); //延迟时间
  121. delay += t;
  122. var tData = {
  123. data: eData,
  124. delay: delay,
  125. curTime: 0,
  126. createComplete: false
  127. };
  128. var time_id = setInterval(() => {
  129. if ((_crd && Game === void 0 ? (_reportPossibleCrUseOfGame({
  130. error: Error()
  131. }), Game) : Game).I.isGameOver || (_crd && Game === void 0 ? (_reportPossibleCrUseOfGame({
  132. error: Error()
  133. }), Game) : Game).I.isPause) return;
  134. tData.curTime += interval; //延迟时间到了然后开始创建敌人
  135. if (tData.curTime >= tData.delay && !tData.createComplete) {
  136. tData.createComplete = true;
  137. _this.createEnemy(tData.data).then(() => {
  138. var _this$eTimeMaps;
  139. var timeFun = (_this$eTimeMaps = _this.eTimeMaps) == null ? void 0 : _this$eTimeMaps.get(tData);
  140. if (timeFun) {
  141. clearInterval(timeFun);
  142. _this.eTimeMaps.delete(tData);
  143. }
  144. });
  145. }
  146. }, interval * 1000);
  147. _this.eTimeMaps.set(tData, time_id);
  148. };
  149. for (var idx = 0; idx < _this.queueEnemys.length; idx++) {
  150. yield* _loop();
  151. } //敌人创建完成后 播放开门动画
  152. _this.scheduleOnce(() => {
  153. _this.openDoor.play();
  154. }, delay);
  155. })();
  156. }
  157. /**
  158. * 读取敌人关卡数据
  159. */
  160. readLevelEnemys() {
  161. var data = (_crd && userIns === void 0 ? (_reportPossibleCrUseOfuserIns({
  162. error: Error()
  163. }), userIns) : userIns).getCurLevelData();
  164. if (!data) return;
  165. (_crd && Game === void 0 ? (_reportPossibleCrUseOfGame({
  166. error: Error()
  167. }), Game) : Game).I.player.setPlayerPos(); //最终生成的敌人队列 普通敌人临时存储 BOSS敌人临时存储
  168. var enemyQueue = [],
  169. normalEnemies = [],
  170. bossEnemies = []; //拆分并处理每个敌人配置
  171. data.dispose.split('|').forEach(item => {
  172. var [enemyId, count] = item.split('_').map(Number);
  173. var enemyData = (_crd && Utils === void 0 ? (_reportPossibleCrUseOfUtils({
  174. error: Error()
  175. }), Utils) : Utils).clone((_crd && userIns === void 0 ? (_reportPossibleCrUseOfuserIns({
  176. error: Error()
  177. }), userIns) : userIns).enemyTable).find(e => e.id === enemyId); //敌人生命成长系数{生命值*(1+系数)}
  178. enemyData.hp = Math.floor((1 + data.coefficient) * enemyData.hp);
  179. if (enemyData) {
  180. //根据类型分类
  181. if (enemyData.type === 2) {
  182. // BOSS类型
  183. for (var i = 0; i < count; i++) {
  184. bossEnemies.push(_extends({}, enemyData));
  185. }
  186. } else {
  187. //小兵类型
  188. for (var _i = 0; _i < count; _i++) {
  189. normalEnemies.push(_extends({}, enemyData));
  190. }
  191. }
  192. }
  193. }); //普通敌人乱序处理
  194. normalEnemies.sort(() => Math.random() - 0.5); //合并队列:普通敌人在前,BOSS在后
  195. enemyQueue.push(...normalEnemies, ...bossEnemies);
  196. return enemyQueue;
  197. }
  198. /**
  199. * 创建敌人
  200. * @param data 敌人数据
  201. * @returns 返回敌人
  202. */
  203. createEnemy(data) {
  204. var _this2 = this;
  205. return _asyncToGenerator(function* () {
  206. if (!(_crd && Game === void 0 ? (_reportPossibleCrUseOfGame({
  207. error: Error()
  208. }), Game) : Game).I.map || !(_crd && Game === void 0 ? (_reportPossibleCrUseOfGame({
  209. error: Error()
  210. }), Game) : Game).I.map || !_this2.allEnemys || !data) return;
  211. var item = yield (_crd && ResUtil === void 0 ? (_reportPossibleCrUseOfResUtil({
  212. error: Error()
  213. }), ResUtil) : ResUtil).loadEnemyRes(data.prb_name, (_crd && Game === void 0 ? (_reportPossibleCrUseOfGame({
  214. error: Error()
  215. }), Game) : Game).I.map.node);
  216. var posArr = _this2.map.getPaths(data); //创建绕Y轴旋转90度的四元数
  217. /*const rotation = new Quat();
  218. Quat.fromAxisAngle(rotation, Vec3.UP, Math.PI / 2)
  219. e.node.rotate(rotation, NodeSpace.WORLD);*/
  220. var e = item.getComponent(_crd && Enemy === void 0 ? (_reportPossibleCrUseOfEnemy({
  221. error: Error()
  222. }), Enemy) : Enemy);
  223. yield e.init(data);
  224. e.walk(posArr);
  225. _this2.allEnemys.push(e);
  226. return e;
  227. })();
  228. }
  229. /**
  230. * 敌人被打死统计
  231. * @param enemy 敌人
  232. */
  233. subtractEnemy(enemy) {
  234. if (!enemy || !enemy.node) return; //删除一个敌人
  235. (_crd && Utils === void 0 ? (_reportPossibleCrUseOfUtils({
  236. error: Error()
  237. }), Utils) : Utils).remove(this.allEnemys, enemy);
  238. this.allEnemys.forEach(e => {
  239. e.addDiffHP();
  240. });
  241. if ((_crd && Game === void 0 ? (_reportPossibleCrUseOfGame({
  242. error: Error()
  243. }), Game) : Game).I.isGameOver) return;
  244. }
  245. /**
  246. * 敌人节点排序
  247. */
  248. sortEnemyList() {
  249. if ((_crd && Game === void 0 ? (_reportPossibleCrUseOfGame({
  250. error: Error()
  251. }), Game) : Game).I.isPause || (_crd && Game === void 0 ? (_reportPossibleCrUseOfGame({
  252. error: Error()
  253. }), Game) : Game).I.isGameOver) return;
  254. if (this.allEnemys.length <= 1) return;
  255. return;
  256. var minSortNum = 400;
  257. var k = this.allEnemys.length + 20;
  258. if (this.allEnemys.length == 1) {
  259. if (this.allEnemys[0].node.parent) {
  260. this.allEnemys[0].node.setSiblingIndex(k + minSortNum);
  261. }
  262. } else {
  263. this.allEnemys.sort(function (x, y) {
  264. var a = x.node.position;
  265. var b = y.node.position;
  266. if (a.y - b.y > 0.01) {
  267. return -1;
  268. } else if (a.y == b.y) {
  269. return 0;
  270. }
  271. return 1;
  272. });
  273. for (var i = 0; i < this.allEnemys.length; i++) {
  274. if (this.allEnemys[0].node.parent) {
  275. this.allEnemys[i].node.setSiblingIndex(i + k + minSortNum);
  276. }
  277. }
  278. }
  279. }
  280. /**
  281. * 销毁数据
  282. */
  283. recycle() {
  284. this.eTimeMaps.forEach((k, v) => {
  285. if (v != undefined && v != null) {
  286. clearInterval(v);
  287. }
  288. });
  289. this.eTimeMaps.clear();
  290. this.allEnemys.forEach(e => {
  291. e.recycle(false);
  292. });
  293. this.allEnemys = [];
  294. this.map.resetData();
  295. }
  296. /**
  297. * 当前杀敌数
  298. */
  299. getCurKillNum() {
  300. return this.queueEnemys.length - this.allEnemys.length;
  301. }
  302. onDisable() {
  303. if (this.intervalId != null) {
  304. clearInterval(this.intervalId);
  305. }
  306. }
  307. }, (_descriptor = _applyDecoratedDescriptor(_class2.prototype, "openDoor", [_dec2], {
  308. configurable: true,
  309. enumerable: true,
  310. writable: true,
  311. initializer: function initializer() {
  312. return null;
  313. }
  314. })), _class2)) || _class));
  315. _cclegacy._RF.pop();
  316. _crd = false;
  317. }
  318. };
  319. });
  320. //# sourceMappingURL=d10ce2f08cc75137742caa9b9638c82862d0d1b9.js.map