04838f360c6d8ed59842bb190c8bfac7edfa3e15.js 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529
  1. System.register(["__unresolved_0", "cc", "__unresolved_1", "__unresolved_2", "__unresolved_3", "__unresolved_4"], function (_export, _context) {
  2. "use strict";
  3. var _reporterNs, _cclegacy, __checkObsolete__, __checkObsoleteInNamespace__, _decorator, Camera, Component, find, geometry, Layers, Node, PhysicsSystem, Quat, RigidBody, tween, Vec3, Cube_Infor, Cube_State, Container_Manager, UI_Idioms, gui, _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2, _class3, _crd, ccclass, property, GameCtl;
  4. 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 }); }
  5. 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; }
  6. 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.'); }
  7. function _reportPossibleCrUseOfCube_Infor(extras) {
  8. _reporterNs.report("Cube_Infor", "./Cube_Infor", _context.meta, extras);
  9. }
  10. function _reportPossibleCrUseOfCube_State(extras) {
  11. _reporterNs.report("Cube_State", "./Cube_Infor", _context.meta, extras);
  12. }
  13. function _reportPossibleCrUseOfContainer_Manager(extras) {
  14. _reporterNs.report("Container_Manager", "./Container_Manager", _context.meta, extras);
  15. }
  16. function _reportPossibleCrUseOfUI_Idioms(extras) {
  17. _reporterNs.report("UI_Idioms", "../module_game/ui/UI_Idioms/UI_Idioms", _context.meta, extras);
  18. }
  19. function _reportPossibleCrUseOfgui(extras) {
  20. _reporterNs.report("gui", "../core/ui/ui", _context.meta, extras);
  21. }
  22. return {
  23. setters: [function (_unresolved_) {
  24. _reporterNs = _unresolved_;
  25. }, function (_cc) {
  26. _cclegacy = _cc.cclegacy;
  27. __checkObsolete__ = _cc.__checkObsolete__;
  28. __checkObsoleteInNamespace__ = _cc.__checkObsoleteInNamespace__;
  29. _decorator = _cc._decorator;
  30. Camera = _cc.Camera;
  31. Component = _cc.Component;
  32. find = _cc.find;
  33. geometry = _cc.geometry;
  34. Layers = _cc.Layers;
  35. Node = _cc.Node;
  36. PhysicsSystem = _cc.PhysicsSystem;
  37. Quat = _cc.Quat;
  38. RigidBody = _cc.RigidBody;
  39. tween = _cc.tween;
  40. Vec3 = _cc.Vec3;
  41. }, function (_unresolved_2) {
  42. Cube_Infor = _unresolved_2.Cube_Infor;
  43. Cube_State = _unresolved_2.Cube_State;
  44. }, function (_unresolved_3) {
  45. Container_Manager = _unresolved_3.Container_Manager;
  46. }, function (_unresolved_4) {
  47. UI_Idioms = _unresolved_4.UI_Idioms;
  48. }, function (_unresolved_5) {
  49. gui = _unresolved_5.gui;
  50. }],
  51. execute: function () {
  52. _crd = true;
  53. _cclegacy._RF.push({}, "5237f+4/ftIlKW+rC062l8C", "GameCtl", undefined);
  54. __checkObsolete__(['_decorator', 'BoxCollider', 'Camera', 'Component', 'director', 'EventTouch', 'find', 'Game', 'geometry', 'Layers', 'Node', 'PhysicsSystem', 'Quat', 'RigidBody', 'Size', 'tween', 'UITransform', 'v3', 'Vec3']);
  55. ({
  56. ccclass,
  57. property
  58. } = _decorator);
  59. _export("GameCtl", GameCtl = (_dec = ccclass('GameCtl'), _dec2 = property(Camera), _dec3 = property([Node]), _dec(_class = (_class2 = (_class3 = class GameCtl extends Component {
  60. constructor() {
  61. super(...arguments);
  62. _initializerDefineProperty(this, "camera", _descriptor, this);
  63. _initializerDefineProperty(this, "Ani", _descriptor2, this);
  64. this.canTouch = true;
  65. }
  66. onLoad() {
  67. GameCtl.instance = this;
  68. console.log(find('Ani'));
  69. console.log('Camera value in onLoad:', this.camera);
  70. this.node.on(Node.EventType.TOUCH_START, this.onTouchStart, this);
  71. this.node.on(Node.EventType.TOUCH_MOVE, this.onTouchMove, this);
  72. this.node.on(Node.EventType.TOUCH_END, this.onTouchEnd, this);
  73. }
  74. update(deltaTime) {}
  75. onTouchStart(event) {}
  76. onTouchMove(event) {}
  77. onTouchEnd(event) {
  78. if (this.canTouch) {
  79. this.shootRay(event);
  80. }
  81. } //发射射线检测判断物体是否可消除
  82. shootRay(event) {
  83. if (!this.camera) return;
  84. var ray = new geometry.Ray();
  85. this.camera.screenPointToRay(event.getLocationX(), event.getLocationY(), ray);
  86. var index = Layers.nameToLayer('Cube');
  87. var cubeMask = 2 << index;
  88. var maxDistance = 100000;
  89. var queryTrigger = false;
  90. if (PhysicsSystem.instance.raycastClosest(ray, cubeMask, maxDistance, queryTrigger)) {
  91. var raycastClosestResult = PhysicsSystem.instance.raycastClosestResult;
  92. var hitPoint = raycastClosestResult.hitPoint;
  93. var hitNormal = raycastClosestResult.hitNormal;
  94. var collider = raycastClosestResult.collider;
  95. var distance = raycastClosestResult.distance;
  96. console.log(collider.node.name); //当前其余点击无效
  97. if (collider.node.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  98. error: Error()
  99. }), Cube_Infor) : Cube_Infor).state === (_crd && Cube_State === void 0 ? (_reportPossibleCrUseOfCube_State({
  100. error: Error()
  101. }), Cube_State) : Cube_State).live) {
  102. this.entryContainer(collider.node);
  103. }
  104. }
  105. console.log('发射了射线');
  106. }
  107. entryContainer(node) {
  108. // 判断容器剩余容量
  109. var startIndex = -1;
  110. var targetPos = new Vec3();
  111. var txt_length = node.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  112. error: Error()
  113. }), Cube_Infor) : Cube_Infor).Text.length;
  114. console.log(txt_length); // 判断字长 并 判断是否还有空间可放置
  115. switch (txt_length) {
  116. case 1:
  117. for (var i = 0; i < (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  118. error: Error()
  119. }), Container_Manager) : Container_Manager).instance.node_isIdiom.length; i++) {
  120. if ((_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  121. error: Error()
  122. }), Container_Manager) : Container_Manager).instance.node_isIdiom[i] === false) {
  123. startIndex = i; // 找到连续的三个 false,记录起始位置
  124. break; // 找到第一个符合条件的位置后停止
  125. }
  126. }
  127. if (startIndex !== -1) {
  128. // 如果找到了一个值为 false 的元素
  129. targetPos = (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  130. error: Error()
  131. }), Container_Manager) : Container_Manager).instance.nodes[startIndex].getWorldPosition().clone();
  132. (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  133. error: Error()
  134. }), Container_Manager) : Container_Manager).instance.node_isIdiom[startIndex] = true;
  135. console.log(targetPos);
  136. } else {
  137. console.log("没有空间了");
  138. }
  139. break;
  140. case 2:
  141. {
  142. for (var _i = 0; _i < (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  143. error: Error()
  144. }), Container_Manager) : Container_Manager).instance.node_isIdiom.length - 2; _i++) {
  145. if ((_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  146. error: Error()
  147. }), Container_Manager) : Container_Manager).instance.node_isIdiom[_i] === false && (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  148. error: Error()
  149. }), Container_Manager) : Container_Manager).instance.node_isIdiom[_i + 1] === false) {
  150. startIndex = _i; // 找到连续的两个 false,记录起始位置
  151. break; // 找到第一个符合条件的位置后停止
  152. }
  153. }
  154. if (startIndex !== -1) {
  155. console.log("找到连续的两个 false,起始索引是:", startIndex); // 可以在此使用 startIndex 进行后续操作,例如:
  156. var pos1 = (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  157. error: Error()
  158. }), Container_Manager) : Container_Manager).instance.nodes[startIndex].getWorldPosition();
  159. var pos2 = (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  160. error: Error()
  161. }), Container_Manager) : Container_Manager).instance.nodes[startIndex + 1].getWorldPosition();
  162. (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  163. error: Error()
  164. }), Container_Manager) : Container_Manager).instance.node_isIdiom[startIndex] = true;
  165. (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  166. error: Error()
  167. }), Container_Manager) : Container_Manager).instance.node_isIdiom[startIndex + 1] = true;
  168. targetPos.set((pos1.x + pos2.x) / 2, (pos1.y + pos2.y) / 2, (pos1.z + pos2.z) / 2);
  169. console.log(targetPos);
  170. }
  171. break;
  172. }
  173. case 3:
  174. {
  175. for (var _i2 = 0; _i2 < (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  176. error: Error()
  177. }), Container_Manager) : Container_Manager).instance.node_isIdiom.length - 2; _i2++) {
  178. if ((_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  179. error: Error()
  180. }), Container_Manager) : Container_Manager).instance.node_isIdiom[_i2] === false && (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  181. error: Error()
  182. }), Container_Manager) : Container_Manager).instance.node_isIdiom[_i2 + 1] === false && (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  183. error: Error()
  184. }), Container_Manager) : Container_Manager).instance.node_isIdiom[_i2 + 2] === false) {
  185. startIndex = _i2; // 找到连续的三个 false,记录起始位置
  186. break; // 找到第一个符合条件的位置后停止
  187. }
  188. }
  189. if (startIndex !== -1) {
  190. // 找到连续三个 false,startIndex 即为最前面的索引
  191. console.log("找到连续的三个 false,起始索引是:", startIndex); // 可以在此使用 startIndex 进行后续操作,例如:
  192. var _pos = (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  193. error: Error()
  194. }), Container_Manager) : Container_Manager).instance.nodes[startIndex].getWorldPosition();
  195. var _pos2 = (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  196. error: Error()
  197. }), Container_Manager) : Container_Manager).instance.nodes[startIndex + 1].getWorldPosition();
  198. var pos3 = (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  199. error: Error()
  200. }), Container_Manager) : Container_Manager).instance.nodes[startIndex + 2].getWorldPosition();
  201. (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  202. error: Error()
  203. }), Container_Manager) : Container_Manager).instance.node_isIdiom[startIndex] = true;
  204. (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  205. error: Error()
  206. }), Container_Manager) : Container_Manager).instance.node_isIdiom[startIndex + 1] = true;
  207. (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  208. error: Error()
  209. }), Container_Manager) : Container_Manager).instance.node_isIdiom[startIndex + 2] = true;
  210. targetPos.set((_pos.x + _pos2.x + pos3.x) / 3, (_pos.y + _pos2.y + pos3.y) / 3, (_pos.z + _pos2.z + pos3.z) / 3);
  211. console.log(targetPos);
  212. } else {
  213. console.log("没有找到连续的三个 false");
  214. }
  215. break;
  216. }
  217. default:
  218. return;
  219. }
  220. if (startIndex !== -1) {
  221. // node.getComponent(Cube_Infor).lock = true;
  222. node.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  223. error: Error()
  224. }), Cube_Infor) : Cube_Infor).state = (_crd && Cube_State === void 0 ? (_reportPossibleCrUseOfCube_State({
  225. error: Error()
  226. }), Cube_State) : Cube_State).wait;
  227. node.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  228. error: Error()
  229. }), Cube_Infor) : Cube_Infor).rigidbody.type = RigidBody.Type.STATIC; // 禁用重力
  230. var targetRotation = new Quat();
  231. Quat.fromEuler(targetRotation, -90, 0, 0);
  232. this.canTouch = false;
  233. tween(node).to(0.5, {
  234. position: new Vec3(targetPos.x, targetPos.y, targetPos.z + 0.4),
  235. rotation: targetRotation
  236. }).call(() => {
  237. (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  238. error: Error()
  239. }), Container_Manager) : Container_Manager).instance.idiom_combine.set(node.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  240. error: Error()
  241. }), Cube_Infor) : Cube_Infor), startIndex); // 执行判断成语合成逻辑
  242. var matchedCubes = [];
  243. var flag = (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  244. error: Error()
  245. }), Container_Manager) : Container_Manager).instance.checkIdiom_Combine(node.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  246. error: Error()
  247. }), Cube_Infor) : Cube_Infor), matchedCubes);
  248. if (flag) {
  249. // 执行合成动画
  250. console.log("匹配的成语方块:", matchedCubes);
  251. this.combine_ani(matchedCubes[0], matchedCubes[1]);
  252. } else {
  253. //高亮
  254. (_crd && gui === void 0 ? (_reportPossibleCrUseOfgui({
  255. error: Error()
  256. }), gui) : gui).get(_crd && UI_Idioms === void 0 ? (_reportPossibleCrUseOfUI_Idioms({
  257. error: Error()
  258. }), UI_Idioms) : UI_Idioms).light_Show(node.getComponent(_crd && Cube_Infor === void 0 ? (_reportPossibleCrUseOfCube_Infor({
  259. error: Error()
  260. }), Cube_Infor) : Cube_Infor));
  261. this.canTouch = true;
  262. }
  263. }).start();
  264. }
  265. } //合成动画
  266. combine_ani(cube1, cube2) {
  267. // 创建第一个 tween 动画
  268. var tween1 = tween(cube1.node).to(0.5, {
  269. position: new Vec3(this.Ani[0].position.x, this.Ani[0].position.y, this.Ani[0].position.z + 0.4)
  270. }).call(() => {
  271. for (var i = (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  272. error: Error()
  273. }), Container_Manager) : Container_Manager).instance.idiom_combine.get(cube1); i < (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  274. error: Error()
  275. }), Container_Manager) : Container_Manager).instance.idiom_combine.get(cube1) + cube1.Text.length; i++) {
  276. (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  277. error: Error()
  278. }), Container_Manager) : Container_Manager).instance.node_isIdiom[i] = false;
  279. }
  280. (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  281. error: Error()
  282. }), Container_Manager) : Container_Manager).instance.idiom_combine.delete(cube1);
  283. setTimeout(() => {
  284. cube1.state = (_crd && Cube_State === void 0 ? (_reportPossibleCrUseOfCube_State({
  285. error: Error()
  286. }), Cube_State) : Cube_State).dead;
  287. (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  288. error: Error()
  289. }), Container_Manager) : Container_Manager).instance.recycleCube(cube1.node);
  290. }, 1000.0);
  291. }); // 创建第二个 tween 动画
  292. var tween2 = tween(cube2.node).to(0.5, {
  293. position: new Vec3(this.Ani[1].position.x, this.Ani[1].position.y, this.Ani[1].position.z + 0.4)
  294. }).call(() => {
  295. for (var i = (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  296. error: Error()
  297. }), Container_Manager) : Container_Manager).instance.idiom_combine.get(cube2); i < (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  298. error: Error()
  299. }), Container_Manager) : Container_Manager).instance.idiom_combine.get(cube2) + cube2.Text.length; i++) {
  300. (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  301. error: Error()
  302. }), Container_Manager) : Container_Manager).instance.node_isIdiom[i] = false;
  303. }
  304. (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  305. error: Error()
  306. }), Container_Manager) : Container_Manager).instance.idiom_combine.delete(cube2);
  307. setTimeout(() => {
  308. cube2.state = (_crd && Cube_State === void 0 ? (_reportPossibleCrUseOfCube_State({
  309. error: Error()
  310. }), Cube_State) : Cube_State).dead; //在nodeReferences中修改该节点属性
  311. // Container_Manager.instance.nodeReferences.forEach((node, index) => {
  312. // if (node === cube2.node) {
  313. // Container_Manager.instance.nodeReferences[index].getComponent(Cube_Infor).state = Cube_State.dead;
  314. // }
  315. // });
  316. (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  317. error: Error()
  318. }), Container_Manager) : Container_Manager).instance.recycleCube(cube2.node);
  319. }, 1000.0);
  320. }); // 使用 tween 的并行组合功能
  321. tween(cube1.node).parallel(tween1, tween2) // 并行执行 tween1 和 tween2
  322. .call(() => {
  323. // 取消相关字的高亮显示
  324. (_crd && gui === void 0 ? (_reportPossibleCrUseOfgui({
  325. error: Error()
  326. }), gui) : gui).get(_crd && UI_Idioms === void 0 ? (_reportPossibleCrUseOfUI_Idioms({
  327. error: Error()
  328. }), UI_Idioms) : UI_Idioms).light_Hide(cube1, cube2);
  329. this.adjustContainer(); // 检测容器中哪些字需要高亮显示
  330. console.log((_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  331. error: Error()
  332. }), Container_Manager) : Container_Manager).instance.node_isIdiom); // 在所有动画结束后执行
  333. (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  334. error: Error()
  335. }), Container_Manager) : Container_Manager).instance.idioms = (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  336. error: Error()
  337. }), Container_Manager) : Container_Manager).instance.idioms.filter(c => c.idiom !== cube1.Text + cube2.Text);
  338. this.canTouch = true;
  339. }).start();
  340. }
  341. adjustContainer() {
  342. var container = (_crd && Container_Manager === void 0 ? (_reportPossibleCrUseOfContainer_Manager({
  343. error: Error()
  344. }), Container_Manager) : Container_Manager).instance; // 新的 node_isIdiom 状态数组
  345. var newNodeIsIdiom = Array(container.node_isIdiom.length).fill(false); // 新的 idiom_combine 映射表
  346. var newIdiomCombine = new Map(); // 遍历 idiom_combine,重新计算位置
  347. for (var [cube, startIndex] of container.idiom_combine.entries()) {
  348. var txtLength = cube.Text.length; // 获取字长
  349. var targetIndex = -1; // 目标位置起始索引
  350. var targetPos = new Vec3();
  351. switch (txtLength) {
  352. case 1:
  353. {
  354. // 找到一个空位
  355. for (var i = 0; i < container.node_isIdiom.length; i++) {
  356. if (!newNodeIsIdiom[i]) {
  357. targetIndex = i;
  358. break;
  359. }
  360. }
  361. if (targetIndex !== -1) {
  362. targetPos = container.nodes[targetIndex].getWorldPosition().clone();
  363. newNodeIsIdiom[targetIndex] = true; // 占用位置
  364. } else {
  365. console.log("没有空位容纳单字 Cube_Infor");
  366. }
  367. break;
  368. }
  369. case 2:
  370. {
  371. // 找到连续两个空位
  372. for (var _i3 = 0; _i3 < container.node_isIdiom.length - 1; _i3++) {
  373. if (!newNodeIsIdiom[_i3] && !newNodeIsIdiom[_i3 + 1]) {
  374. targetIndex = _i3;
  375. break;
  376. }
  377. }
  378. if (targetIndex !== -1) {
  379. var pos1 = container.nodes[targetIndex].getWorldPosition();
  380. var pos2 = container.nodes[targetIndex + 1].getWorldPosition();
  381. targetPos.set((pos1.x + pos2.x) / 2, (pos1.y + pos2.y) / 2, (pos1.z + pos2.z) / 2);
  382. newNodeIsIdiom[targetIndex] = true;
  383. newNodeIsIdiom[targetIndex + 1] = true;
  384. } else {
  385. console.log("没有连续两个空位容纳双字 Cube_Infor");
  386. }
  387. break;
  388. }
  389. case 3:
  390. {
  391. // 找到连续三个空位
  392. for (var _i4 = 0; _i4 < container.node_isIdiom.length - 2; _i4++) {
  393. if (!newNodeIsIdiom[_i4] && !newNodeIsIdiom[_i4 + 1] && !newNodeIsIdiom[_i4 + 2]) {
  394. targetIndex = _i4;
  395. break;
  396. }
  397. }
  398. if (targetIndex !== -1) {
  399. var _pos3 = container.nodes[targetIndex].getWorldPosition();
  400. var _pos4 = container.nodes[targetIndex + 1].getWorldPosition();
  401. var pos3 = container.nodes[targetIndex + 2].getWorldPosition();
  402. targetPos.set((_pos3.x + _pos4.x + pos3.x) / 3, (_pos3.y + _pos4.y + pos3.y) / 3, (_pos3.z + _pos4.z + pos3.z) / 3);
  403. newNodeIsIdiom[targetIndex] = true;
  404. newNodeIsIdiom[targetIndex + 1] = true;
  405. newNodeIsIdiom[targetIndex + 2] = true;
  406. } else {
  407. console.log("没有连续三个空位容纳三字 Cube_Infor");
  408. }
  409. break;
  410. }
  411. default:
  412. return;
  413. } // 移动 Cube_Infor 到目标位置
  414. if (targetIndex !== -1) {
  415. tween(cube.node).to(0.3, {
  416. position: new Vec3(targetPos.x, targetPos.y, targetPos.z + 0.4)
  417. }).start();
  418. newIdiomCombine.set(cube, targetIndex); // 更新新映射
  419. }
  420. } // 更新 container 状态
  421. container.node_isIdiom = newNodeIsIdiom;
  422. container.idiom_combine = newIdiomCombine;
  423. console.log("调整后的容器状态:", container.node_isIdiom);
  424. console.log("更新后的 idiom_combine:", [...container.idiom_combine.entries()]);
  425. }
  426. }, _class3.instance = null, _class3), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, "camera", [_dec2], {
  427. configurable: true,
  428. enumerable: true,
  429. writable: true,
  430. initializer: function initializer() {
  431. return null;
  432. }
  433. }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "Ani", [_dec3], {
  434. configurable: true,
  435. enumerable: true,
  436. writable: true,
  437. initializer: function initializer() {
  438. return [];
  439. }
  440. })), _class2)) || _class));
  441. _cclegacy._RF.pop();
  442. _crd = false;
  443. }
  444. };
  445. });
  446. //# sourceMappingURL=04838f360c6d8ed59842bb190c8bfac7edfa3e15.js.map