90cb08bdd2589bd4780881bf755dafe0306918a1.js 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651
  1. System.register(["__unresolved_0", "cc", "__unresolved_1", "__unresolved_2", "__unresolved_3", "__unresolved_4", "__unresolved_5", "__unresolved_6", "__unresolved_7", "__unresolved_8", "__unresolved_9", "__unresolved_10"], function (_export, _context) {
  2. "use strict";
  3. var _reporterNs, _cclegacy, __checkObsolete__, __checkObsoleteInNamespace__, _decorator, BoxCollider, Component, instantiate, Node, NodePool, Prefab, Quat, RigidBody, ch_util, gui, table_idiom, table_level, Hall, UI_Idioms, UI_Main, CreateIdiom, Cube_Infor, Cube_State, GameCtl, _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor, _descriptor2, _descriptor3, _crd, ccclass, property, Container_Manager;
  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 _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 }); }
  7. 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; }
  8. 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.'); }
  9. function _reportPossibleCrUseOfch_util(extras) {
  10. _reporterNs.report("ch_util", "../../ch/ch_util", _context.meta, extras);
  11. }
  12. function _reportPossibleCrUseOfgui(extras) {
  13. _reporterNs.report("gui", "../../core/ui/ui", _context.meta, extras);
  14. }
  15. function _reportPossibleCrUseOftable_idiom(extras) {
  16. _reporterNs.report("table_idiom", "../../module_extra/table_ts/table_idiom", _context.meta, extras);
  17. }
  18. function _reportPossibleCrUseOftable_level(extras) {
  19. _reporterNs.report("table_level", "../../module_extra/table_ts/table_level", _context.meta, extras);
  20. }
  21. function _reportPossibleCrUseOfHall(extras) {
  22. _reporterNs.report("Hall", "../hall/Hall", _context.meta, extras);
  23. }
  24. function _reportPossibleCrUseOfUI_Idioms(extras) {
  25. _reporterNs.report("UI_Idioms", "../ui/UI_Idioms/UI_Idioms", _context.meta, extras);
  26. }
  27. function _reportPossibleCrUseOfUI_Main(extras) {
  28. _reporterNs.report("UI_Main", "../ui/UI_Main/UI_Main", _context.meta, extras);
  29. }
  30. function _reportPossibleCrUseOfCreateIdiom(extras) {
  31. _reporterNs.report("CreateIdiom", "./CreateIdiom", _context.meta, extras);
  32. }
  33. function _reportPossibleCrUseOfCube_Infor(extras) {
  34. _reporterNs.report("Cube_Infor", "./Cube_Infor", _context.meta, extras);
  35. }
  36. function _reportPossibleCrUseOfCube_State(extras) {
  37. _reporterNs.report("Cube_State", "./Cube_Infor", _context.meta, extras);
  38. }
  39. function _reportPossibleCrUseOfGameCtl(extras) {
  40. _reporterNs.report("GameCtl", "./GameCtl", _context.meta, extras);
  41. }
  42. return {
  43. setters: [function (_unresolved_) {
  44. _reporterNs = _unresolved_;
  45. }, function (_cc) {
  46. _cclegacy = _cc.cclegacy;
  47. __checkObsolete__ = _cc.__checkObsolete__;
  48. __checkObsoleteInNamespace__ = _cc.__checkObsoleteInNamespace__;
  49. _decorator = _cc._decorator;
  50. BoxCollider = _cc.BoxCollider;
  51. Component = _cc.Component;
  52. instantiate = _cc.instantiate;
  53. Node = _cc.Node;
  54. NodePool = _cc.NodePool;
  55. Prefab = _cc.Prefab;
  56. Quat = _cc.Quat;
  57. RigidBody = _cc.RigidBody;
  58. }, function (_unresolved_2) {
  59. ch_util = _unresolved_2.default;
  60. }, function (_unresolved_3) {
  61. gui = _unresolved_3.gui;
  62. }, function (_unresolved_4) {
  63. table_idiom = _unresolved_4.table_idiom;
  64. }, function (_unresolved_5) {
  65. table_level = _unresolved_5.table_level;
  66. }, function (_unresolved_6) {
  67. Hall = _unresolved_6.Hall;
  68. }, function (_unresolved_7) {
  69. UI_Idioms = _unresolved_7.UI_Idioms;
  70. }, function (_unresolved_8) {
  71. UI_Main = _unresolved_8.UI_Main;
  72. }, function (_unresolved_9) {
  73. CreateIdiom = _unresolved_9.CreateIdiom;
  74. }, function (_unresolved_10) {
  75. Cube_Infor = _unresolved_10.Cube_Infor;
  76. Cube_State = _unresolved_10.Cube_State;
  77. }, function (_unresolved_11) {
  78. GameCtl = _unresolved_11.GameCtl;
  79. }],
  80. execute: function () {
  81. _crd = true;
  82. _cclegacy._RF.push({}, "e84de8IXbZDjZbYlbQpevuI", "Container_Manager", undefined);
  83. __checkObsolete__(['_decorator', 'BoxCollider', 'Component', 'find', 'instantiate', 'Node', 'NodePool', 'Prefab', 'Quat', 'random', 'RigidBody']);
  84. ({
  85. ccclass,
  86. property
  87. } = _decorator);
  88. _export("Container_Manager", Container_Manager = (_dec = ccclass('Container_Manager'), _dec2 = property(Prefab), _dec3 = property(_crd && CreateIdiom === void 0 ? (_reportPossibleCrUseOfCreateIdiom({
  89. error: Error()
  90. }), CreateIdiom) : CreateIdiom), _dec4 = property([Node]), _dec(_class = (_class2 = class Container_Manager extends Component {
  91. constructor() {
  92. super(...arguments);
  93. _initializerDefineProperty(this, "prefab", _descriptor, this);
  94. this.level_config = null;
  95. //关卡配置
  96. this.config = null;
  97. //成语库
  98. this.idioms = [];
  99. //生成的成语
  100. this.index = [];
  101. //生成的成语角标,避免生成重复成语
  102. _initializerDefineProperty(this, "create_node", _descriptor2, this);
  103. _initializerDefineProperty(this, "nodes", _descriptor3, this);
  104. //位置节点 用于成语放入
  105. this.node_isIdiom = new Array(10).fill(false);
  106. this.idiom_combine = new Map();
  107. this.Cube_Pool = new NodePool();
  108. this.nodeReferences = [];
  109. // 额外维护的节点引用数组
  110. this.count = 0;
  111. }
  112. instantiateCube() {
  113. for (var i = 0; i < this.idioms.length * 2; i++) {
  114. var newCube = instantiate(this.prefab);
  115. newCube.active = true; // 初始时设置为非激活状态
  116. // 按顺序为节点赋值文字内容
  117. var idiomIndex = Math.floor(i / 2);
  118. var isPiece1 = i % 2 === 0;
  119. newCube.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  120. error: Error()
  121. }), Cube_Infor) : Cube_Infor).Text = isPiece1 ? this.idioms[idiomIndex].piece_1_word : this.idioms[idiomIndex].piece_2_word;
  122. console.log("生成第" + i + "个节点:" + newCube.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  123. error: Error()
  124. }), Cube_Infor) : Cube_Infor).Text);
  125. this.Cube_Pool.put(newCube);
  126. }
  127. }
  128. getCube() {
  129. console.log(this.Cube_Pool.size());
  130. var cube = this.Cube_Pool.get();
  131. if (cube) cube.active = true;
  132. return cube;
  133. } // 将方块回收到对象池
  134. recycleCube(cube) {
  135. cube.active = false; // 将方块设置为非激活状态
  136. this.Cube_Pool.put(cube);
  137. } //合成规则导入
  138. start() {
  139. this.config = (_crd && table_idiom === void 0 ? (_reportPossibleCrUseOftable_idiom({
  140. error: Error()
  141. }), table_idiom) : table_idiom).getList();
  142. if (this.config.length === 2052) {
  143. console.log("合成规则导入成功");
  144. }
  145. this.level_config = (_crd && table_level === void 0 ? (_reportPossibleCrUseOftable_level({
  146. error: Error()
  147. }), table_level) : table_level).getList();
  148. if (this.level_config.length === 5) {
  149. console.log("关卡配置导入成功");
  150. }
  151. this.level_idioms();
  152. }
  153. update(deltaTime) {}
  154. checkIdiom_Combine(matchedcube2, outMatchedCubes) {
  155. var _this = this;
  156. if (this.idiom_combine.size < 2) {
  157. return false; // 至少需要两个方块
  158. }
  159. var _loop = function _loop(cube) {
  160. // 遍历 idioms 列表,检查是否匹配成语
  161. var matchedIdiom = _this.idioms.find(idiom => idiom.piece_1_word === cube.Text && idiom.piece_2_word === matchedcube2.Text);
  162. if (matchedIdiom) {
  163. // 匹配成功
  164. outMatchedCubes.push(cube, matchedcube2);
  165. _this.nodeReferences = _this.nodeReferences.filter(el => el !== matchedcube2.node && el !== cube.node);
  166. console.log("成功拼成成语: " + matchedIdiom.piece_1_word + matchedIdiom.piece_2_word);
  167. return {
  168. v: true
  169. };
  170. } // 再检查逆序组合是否匹配
  171. var reverseMatchedIdiom = _this.idioms.find(idiom => idiom.piece_1_word === matchedcube2.Text && idiom.piece_2_word === cube.Text);
  172. if (reverseMatchedIdiom) {
  173. // 匹配成功
  174. outMatchedCubes.push(matchedcube2, cube);
  175. _this.nodeReferences = _this.nodeReferences.filter(el => el !== matchedcube2.node && el !== cube.node);
  176. console.log("成功拼成成语: " + reverseMatchedIdiom.piece_1_word + reverseMatchedIdiom.piece_2_word);
  177. return {
  178. v: true
  179. };
  180. }
  181. },
  182. _ret;
  183. for (var cube of this.idiom_combine.keys()) {
  184. _ret = _loop(cube);
  185. if (_ret) return _ret.v;
  186. }
  187. return false; // 没有匹配到成语
  188. }
  189. level_idioms() {
  190. var _this2 = this;
  191. return _asyncToGenerator(function* () {
  192. var level = (_crd && Hall === void 0 ? (_reportPossibleCrUseOfHall({
  193. error: Error()
  194. }), Hall) : Hall).getInstance().player.get_max_floor();
  195. var validConfig = [];
  196. if (level === 0) {
  197. var str2 = _this2.level_config[level].idiom_type_2;
  198. var idiom_type_2 = str2.split("_");
  199. console.log("idiom_type_2:", idiom_type_2);
  200. var selectedIdioms = {};
  201. [...idiom_type_2].forEach(rule => {
  202. var filteredIdioms = _this2.config.filter(item => item.piece_2_word === rule);
  203. console.log("\u7B5B\u90092 " + rule + " \u540E\u7684\u6210\u8BED\uFF1A", filteredIdioms);
  204. selectedIdioms[rule] = filteredIdioms;
  205. });
  206. for (var rule in selectedIdioms) {
  207. if (selectedIdioms.hasOwnProperty(rule)) {
  208. _this2.idioms.push(...selectedIdioms[rule]);
  209. }
  210. }
  211. console.log("最终选中的成语:", _this2.idioms);
  212. } else {
  213. // 获取当前层级的筛选条件
  214. var str1 = _this2.level_config[level].idiom_type_1;
  215. var idiom_type_1 = str1.split("_"); // 分割成数组
  216. console.log("idiom_type_1:", idiom_type_1);
  217. var _str = _this2.level_config[level].idiom_type_2;
  218. var _idiom_type_ = _str.split("_"); // 分割成数组
  219. console.log("idiom_type_2:", _idiom_type_); // 初始化保存结果的数组
  220. var _selectedIdioms = {}; // 遍历 idiom_type_1的每个规律
  221. [...idiom_type_1].forEach(rule => {
  222. // 从 config 中筛选符合当前规律的成语
  223. var filteredIdioms = _this2.config.filter(item => item.piece_1_word === rule);
  224. console.log("\u7B5B\u9009 " + rule + " \u540E\u7684\u6210\u8BED\uFF1A", filteredIdioms);
  225. if (filteredIdioms.length < _this2.level_config[level].count) {
  226. console.error("\u89C4\u5F8B " + rule + " \u7684\u6210\u8BED\u6570\u91CF\u4E0D\u8DB3\uFF0C\u4EC5\u6709 " + filteredIdioms.length + " \u4E2A");
  227. } else {
  228. console.log("\u89C4\u5F8B " + rule + " \u7684\u6210\u8BED\u6570\u91CF\uFF1A" + filteredIdioms.length);
  229. var selected = []; // 随机选择不重复的成语
  230. for (var i = 0; i < _this2.level_config[level].count;) {
  231. var rand = (_crd && ch_util === void 0 ? (_reportPossibleCrUseOfch_util({
  232. error: Error()
  233. }), ch_util) : ch_util).getRandomInt(0, filteredIdioms.length - 1); // 确保 rand 在有效范围内
  234. var selectedIdiom = filteredIdioms[rand]; // 从数组中移除已选成语,避免再次选择
  235. filteredIdioms.splice(rand, 1); // 添加到已选数组中
  236. selected.push(selectedIdiom);
  237. console.log("\u9009\u4E2D\u7684\u6210\u8BED\uFF1A" + selectedIdiom.idiom);
  238. i++;
  239. }
  240. _selectedIdioms[rule] = selected;
  241. }
  242. }); // 遍历idiom_type_2 的每个规律
  243. [..._idiom_type_].forEach(rule => {
  244. // 从 config 中筛选符合当前规律的成语
  245. var filteredIdioms = _this2.config.filter(item => item.piece_2_word === rule);
  246. console.log("\u7B5B\u90092 " + rule + " \u540E\u7684\u6210\u8BED\uFF1A", filteredIdioms);
  247. if (filteredIdioms.length < _this2.level_config[level].count) {
  248. console.error("\u89C4\u5F8B2 " + rule + " \u7684\u6210\u8BED\u6570\u91CF\u4E0D\u8DB3\uFF0C\u4EC5\u6709 " + filteredIdioms.length + " \u4E2A");
  249. } else {
  250. console.log("\u89C4\u5F8B2 " + rule + " \u7684\u6210\u8BED\u6570\u91CF\uFF1A" + filteredIdioms.length);
  251. var selected = []; // 随机选择不重复的成语
  252. for (var i = 0; i < _this2.level_config[level].count;) {
  253. var rand = (_crd && ch_util === void 0 ? (_reportPossibleCrUseOfch_util({
  254. error: Error()
  255. }), ch_util) : ch_util).getRandomInt(0, filteredIdioms.length - 1); // 确保 rand 在有效范围内
  256. var selectedIdiom = filteredIdioms[rand]; // 从数组中移除已选成语,避免再次选择
  257. filteredIdioms.splice(rand, 1); // 添加到已选数组中
  258. selected.push(selectedIdiom);
  259. console.log("\u9009\u4E2D\u7684\u6210\u8BED\uFF1A" + selectedIdiom.idiom);
  260. i++;
  261. }
  262. _selectedIdioms[rule] = selected;
  263. }
  264. }); // 将所有选中的成语合并到 idioms 数组
  265. for (var _rule in _selectedIdioms) {
  266. if (_selectedIdioms.hasOwnProperty(_rule)) {
  267. _this2.idioms.push(..._selectedIdioms[_rule]); // 使用扩展运算符合并成语
  268. }
  269. }
  270. console.log("最终选中的成语:", _this2.idioms); // 打印最终的成语数组
  271. }
  272. _this2.count = _this2.level_config[level].count;
  273. yield _this2.instantiateCube();
  274. yield (_crd && gui === void 0 ? (_reportPossibleCrUseOfgui({
  275. error: Error()
  276. }), gui) : gui).show(_crd && UI_Idioms === void 0 ? (_reportPossibleCrUseOfUI_Idioms({
  277. error: Error()
  278. }), UI_Idioms) : UI_Idioms);
  279. yield _this2.create_node.nodeMoving();
  280. (_crd && gui === void 0 ? (_reportPossibleCrUseOfgui({
  281. error: Error()
  282. }), gui) : gui).show(_crd && UI_Main === void 0 ? (_reportPossibleCrUseOfUI_Main({
  283. error: Error()
  284. }), UI_Main) : UI_Main);
  285. })();
  286. } //消除一组
  287. eliminate() {
  288. var _this3 = this;
  289. //先判断槽内是否有方块,如果有,匹配槽内最前面一个与散落方块中的
  290. var cube;
  291. for (var [key, value] of this.idiom_combine) {
  292. if (value === 0) {
  293. cube = key;
  294. break;
  295. }
  296. } //槽中有方块
  297. if (cube) {
  298. var originalReferences = [...this.nodeReferences];
  299. var _loop2 = function _loop2(element) {
  300. if (_this3.idioms.find(c => c.idiom == element.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  301. error: Error()
  302. }), Cube_Infor) : Cube_Infor).Text + cube.Text) && element.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  303. error: Error()
  304. }), Cube_Infor) : Cube_Infor) !== cube) {
  305. console.log(element.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  306. error: Error()
  307. }), Cube_Infor) : Cube_Infor).Text);
  308. element.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  309. error: Error()
  310. }), Cube_Infor) : Cube_Infor).state = (_crd && Cube_State === void 0 ? (_reportPossibleCrUseOfCube_State({
  311. error: Error()
  312. }), Cube_State) : Cube_State).wait;
  313. element.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  314. error: Error()
  315. }), Cube_Infor) : Cube_Infor).rigidbody.type = RigidBody.Type.STATIC;
  316. element.getComponent(BoxCollider).enabled = false;
  317. var targetRotation = new Quat();
  318. Quat.fromEuler(targetRotation, -90, 0, 0);
  319. element.rotation = targetRotation; // 使用filter过滤掉当前元素
  320. (_crd && GameCtl === void 0 ? (_reportPossibleCrUseOfGameCtl({
  321. error: Error()
  322. }), GameCtl) : GameCtl).instance.combine_ani(element.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  323. error: Error()
  324. }), Cube_Infor) : Cube_Infor), cube);
  325. _this3.nodeReferences = _this3.nodeReferences.filter(el => el !== element && el !== cube.node);
  326. return 0; // break
  327. } else if (_this3.idioms.find(c => c.idiom == cube.Text + element.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  328. error: Error()
  329. }), Cube_Infor) : Cube_Infor).Text) && element.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  330. error: Error()
  331. }), Cube_Infor) : Cube_Infor) !== cube) {
  332. console.log(element.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  333. error: Error()
  334. }), Cube_Infor) : Cube_Infor).Text);
  335. element.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  336. error: Error()
  337. }), Cube_Infor) : Cube_Infor).state = (_crd && Cube_State === void 0 ? (_reportPossibleCrUseOfCube_State({
  338. error: Error()
  339. }), Cube_State) : Cube_State).wait;
  340. element.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  341. error: Error()
  342. }), Cube_Infor) : Cube_Infor).rigidbody.type = RigidBody.Type.STATIC;
  343. element.getComponent(BoxCollider).enabled = false;
  344. var _targetRotation = new Quat();
  345. Quat.fromEuler(_targetRotation, -90, 0, 0);
  346. element.rotation = _targetRotation;
  347. (_crd && GameCtl === void 0 ? (_reportPossibleCrUseOfGameCtl({
  348. error: Error()
  349. }), GameCtl) : GameCtl).instance.combine_ani(cube, element.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  350. error: Error()
  351. }), Cube_Infor) : Cube_Infor));
  352. _this3.nodeReferences = _this3.nodeReferences.filter(el => el !== element && el !== cube.node);
  353. return 0; // break
  354. }
  355. },
  356. _ret2;
  357. for (var element of originalReferences) {
  358. _ret2 = _loop2(element);
  359. if (_ret2 === 0) break;
  360. }
  361. } //槽中没有方块
  362. else {
  363. var flag = false;
  364. var originalReferences1 = [...this.nodeReferences];
  365. var originalReferences2 = [...this.nodeReferences];
  366. var _loop3 = function _loop3(element1) {
  367. var _loop4 = function _loop4(element2) {
  368. if (_this3.idioms.find(c => c.idiom == element1.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  369. error: Error()
  370. }), Cube_Infor) : Cube_Infor).Text + element2.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  371. error: Error()
  372. }), Cube_Infor) : Cube_Infor).Text)) {
  373. element1.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  374. error: Error()
  375. }), Cube_Infor) : Cube_Infor).state = (_crd && Cube_State === void 0 ? (_reportPossibleCrUseOfCube_State({
  376. error: Error()
  377. }), Cube_State) : Cube_State).wait;
  378. element1.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  379. error: Error()
  380. }), Cube_Infor) : Cube_Infor).rigidbody.type = RigidBody.Type.STATIC;
  381. var targetRotation = new Quat();
  382. Quat.fromEuler(targetRotation, -90, 0, 0);
  383. element1.rotation = targetRotation;
  384. element2.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  385. error: Error()
  386. }), Cube_Infor) : Cube_Infor).state = (_crd && Cube_State === void 0 ? (_reportPossibleCrUseOfCube_State({
  387. error: Error()
  388. }), Cube_State) : Cube_State).wait;
  389. element2.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  390. error: Error()
  391. }), Cube_Infor) : Cube_Infor).rigidbody.type = RigidBody.Type.STATIC;
  392. element2.getComponent(BoxCollider).enabled = false;
  393. element2.rotation = targetRotation; // 使用filter过滤掉当前元素
  394. (_crd && GameCtl === void 0 ? (_reportPossibleCrUseOfGameCtl({
  395. error: Error()
  396. }), GameCtl) : GameCtl).instance.combine_ani(element1.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  397. error: Error()
  398. }), Cube_Infor) : Cube_Infor), element2.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  399. error: Error()
  400. }), Cube_Infor) : Cube_Infor));
  401. _this3.nodeReferences = _this3.nodeReferences.filter(el => el !== element1 && el !== element2);
  402. flag = true;
  403. return 0; // break
  404. }
  405. if (_this3.idioms.find(c => c.idiom == element2.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  406. error: Error()
  407. }), Cube_Infor) : Cube_Infor).Text + element1.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  408. error: Error()
  409. }), Cube_Infor) : Cube_Infor).Text)) {
  410. element1.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  411. error: Error()
  412. }), Cube_Infor) : Cube_Infor).state = (_crd && Cube_State === void 0 ? (_reportPossibleCrUseOfCube_State({
  413. error: Error()
  414. }), Cube_State) : Cube_State).wait;
  415. element1.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  416. error: Error()
  417. }), Cube_Infor) : Cube_Infor).rigidbody.type = RigidBody.Type.STATIC;
  418. var _targetRotation2 = new Quat();
  419. Quat.fromEuler(_targetRotation2, -90, 0, 0);
  420. element1.rotation = _targetRotation2;
  421. element2.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  422. error: Error()
  423. }), Cube_Infor) : Cube_Infor).state = (_crd && Cube_State === void 0 ? (_reportPossibleCrUseOfCube_State({
  424. error: Error()
  425. }), Cube_State) : Cube_State).wait;
  426. element2.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  427. error: Error()
  428. }), Cube_Infor) : Cube_Infor).rigidbody.type = RigidBody.Type.STATIC;
  429. element2.getComponent(BoxCollider).enabled = false;
  430. element2.rotation = _targetRotation2; // 使用filter过滤掉当前元素
  431. (_crd && GameCtl === void 0 ? (_reportPossibleCrUseOfGameCtl({
  432. error: Error()
  433. }), GameCtl) : GameCtl).instance.combine_ani(element2.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  434. error: Error()
  435. }), Cube_Infor) : Cube_Infor), element1.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  436. error: Error()
  437. }), Cube_Infor) : Cube_Infor));
  438. _this3.nodeReferences = _this3.nodeReferences.filter(el => el !== element1 && el !== element2);
  439. flag = true;
  440. return 0; // break
  441. }
  442. },
  443. _ret3;
  444. for (var element2 of originalReferences2) {
  445. _ret3 = _loop4(element2);
  446. if (_ret3 === 0) break;
  447. }
  448. if (flag === true) {
  449. return 1; // break
  450. }
  451. };
  452. for (var element1 of originalReferences1) {
  453. if (_loop3(element1)) break;
  454. }
  455. }
  456. }
  457. shuffle() {
  458. var _this4 = this;
  459. return _asyncToGenerator(function* () {
  460. // 回收所有非槽内的活跃节点
  461. _this4.nodeReferences.forEach(node => {
  462. var cubeInfo = node.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  463. error: Error()
  464. }), Cube_Infor) : Cube_Infor);
  465. if (cubeInfo.state === (_crd && Cube_State === void 0 ? (_reportPossibleCrUseOfCube_State({
  466. error: Error()
  467. }), Cube_State) : Cube_State).live) {
  468. _this4.recycleCube(node); // 回收到池中
  469. }
  470. });
  471. _this4.shufflePool(); // 等待节点移动完成后执行后续逻辑
  472. yield _this4.create_node.nodeMoving();
  473. })();
  474. } //清空槽子
  475. Empty() {
  476. for (var idiom of this.idiom_combine.keys()) {
  477. idiom.rigidbody.type = RigidBody.Type.DYNAMIC;
  478. idiom.state = (_crd && Cube_State === void 0 ? (_reportPossibleCrUseOfCube_State({
  479. error: Error()
  480. }), Cube_State) : Cube_State).live;
  481. idiom.node.position = this.create_node.node.position;
  482. }
  483. this.idiom_combine.clear();
  484. this.node_isIdiom.fill(false);
  485. (_crd && gui === void 0 ? (_reportPossibleCrUseOfgui({
  486. error: Error()
  487. }), gui) : gui).get(_crd && UI_Idioms === void 0 ? (_reportPossibleCrUseOfUI_Idioms({
  488. error: Error()
  489. }), UI_Idioms) : UI_Idioms).all_light_Hide();
  490. }
  491. shufflePool() {
  492. var poolSize = this.Cube_Pool.size();
  493. var tempArray = []; // 从池中取出所有节点到临时数组
  494. for (var i = 0; i < poolSize; i++) {
  495. tempArray.push(this.Cube_Pool.get());
  496. } // 只打乱部分节点(以 50% 为例,可调整比例)
  497. var shuffleCount = Math.ceil(poolSize * 0.5); // 只打乱前 50%
  498. for (var _i = 0; _i < shuffleCount; _i++) {
  499. var randomIndex = Math.floor(Math.random() * poolSize);
  500. [tempArray[_i], tempArray[randomIndex]] = [tempArray[randomIndex], tempArray[_i]];
  501. } // 将打乱的节点放回池中
  502. tempArray.forEach(cube => this.Cube_Pool.put(cube));
  503. }
  504. }, (_descriptor = _applyDecoratedDescriptor(_class2.prototype, "prefab", [_dec2], {
  505. configurable: true,
  506. enumerable: true,
  507. writable: true,
  508. initializer: function initializer() {
  509. return null;
  510. }
  511. }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "create_node", [_dec3], {
  512. configurable: true,
  513. enumerable: true,
  514. writable: true,
  515. initializer: function initializer() {
  516. return null;
  517. }
  518. }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "nodes", [_dec4], {
  519. configurable: true,
  520. enumerable: true,
  521. writable: true,
  522. initializer: function initializer() {
  523. return [];
  524. }
  525. })), _class2)) || _class));
  526. _cclegacy._RF.pop();
  527. _crd = false;
  528. }
  529. };
  530. });
  531. //# sourceMappingURL=90cb08bdd2589bd4780881bf755dafe0306918a1.js.map