DynamicBuilding.js 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712
  1. const Constants = require('Constants');
  2. var reGameStates = require('GameStates');
  3. cc.Class({
  4. extends: cc.Component,
  5. properties: {
  6. HighWay: {
  7. // ATTRIBUTES:
  8. default: [], // The default value will be used only when the component attaching
  9. // to a node for the first time
  10. type: cc.Prefab, // optional, default is typeof default
  11. serializable: true, // optional, default is true
  12. },
  13. _tiledMap: {
  14. default: null,
  15. type: cc.TiledMap,
  16. serializable: false,
  17. visible: false,
  18. },
  19. _MainCamera: {
  20. default: null,
  21. type: cc.Camera,
  22. serializable: false,
  23. visible: false,
  24. },
  25. //触摸一开始的位置
  26. _touchPosition: {
  27. default: new cc.Vec2(),
  28. visible: false,
  29. serializable: false
  30. },
  31. _StartPosition: {
  32. default: new cc.Vec2(),
  33. serializable: false
  34. },
  35. _EndPosition: {
  36. default: new cc.Vec2(),
  37. serializable: false
  38. },
  39. //上一个位置
  40. _LastPosition: {
  41. default: new cc.Vec2(),
  42. serializable: false
  43. },
  44. _highPath: {
  45. default: [],
  46. type: [cc.Node],
  47. visible: false,
  48. },
  49. selectTouch: {
  50. default: null,
  51. type: cc.Node,
  52. },
  53. buildingTouch: {
  54. default: null,
  55. type: cc.Node,
  56. },
  57. //如果只初始化一次的话
  58. // _isInitOnce: {
  59. // default: false,
  60. // visible: false,
  61. // }
  62. //如果自动移动
  63. isAutoMove: { default: false, visible: false },
  64. //是否创建斑马线
  65. isCreateZebra: { default: true, visible: false },
  66. // createStartTiledPos: null,
  67. },
  68. // LIFE-CYCLE CALLBACKS:
  69. onLoad() {
  70. this.highwayPool = new cc.NodePool();
  71. let initCount = 50;
  72. for (let i = 0; i < initCount; ++i) {
  73. let highway = cc.instantiate(this.HighWay[0]); // 创建节点
  74. this.highwayPool.put(highway); // 通过 putInPool 接口放入对象池
  75. }
  76. },
  77. start() {
  78. var self = this;
  79. self._MainCamera = GlobalD.game.MainCamera;
  80. self._tiledMap = GlobalD.TiledMap._tiledMap;
  81. //获取对应的地图层级
  82. this.buildLayer = this._tiledMap.getLayer('BuildsHighway');
  83. self._game = GlobalD.game;
  84. //初始化时候设置一下位置
  85. //后面只要点击生成铺路就需要重置一下
  86. let startTiledPos = GlobalD.TiledMap._tilePosFromLocation(self.node.getPosition());
  87. let startEndPos = GlobalD.TiledMap._getTheMiddleLocationFromtilePos(startTiledPos);
  88. self.node.setPosition(startEndPos);
  89. //记录一下初始位置
  90. // self.createStartTiledPos = startTiledPos;
  91. self.node.on(cc.Node.EventType.TOUCH_MOVE, function (event) {
  92. // cc.log(event.touch.getDelta());
  93. GlobalD.GameControl._isBuildingMove = true;
  94. var delta = event.touch.getDelta();
  95. self._touchPosition.x += delta.x / self._MainCamera.zoomRatio;
  96. self._touchPosition.y += delta.y / self._MainCamera.zoomRatio;
  97. // self.node.setPosition(self._touchPosition);
  98. let tiledPos = GlobalD.TiledMap._tilePosFromLocation(self._touchPosition);
  99. //不相等的时候才绘制
  100. if (tiledPos.sub(self._EndPosition).mag() != 0) {
  101. // cc.log('tiledPostiledPostiledPos', tiledPos,self._EndPosition)
  102. self._EndPosition = tiledPos;
  103. if (self.buildingTouch.active) {
  104. if (self._StartPosition.x == self._EndPosition.x
  105. || self._StartPosition.y == self._EndPosition.y) {
  106. self.onCancelCreateHighway();
  107. self.onBuildingFromPath(self._StartPosition, self._EndPosition);
  108. let endPos = GlobalD.TiledMap._getTheMiddleLocationFromtilePos(tiledPos);
  109. self.node.setPosition(endPos);
  110. }
  111. } else {
  112. let endPos = GlobalD.TiledMap._getTheMiddleLocationFromtilePos(tiledPos);
  113. self.node.setPosition(endPos);
  114. }
  115. }
  116. //开启编辑UI
  117. // self._game._ManageUIScript.onEditorialBuildings(self.node);
  118. }, self.node);
  119. self.node.on(cc.Node.EventType.TOUCH_START, function (event) {
  120. // var touches = event.getTouches();
  121. // var touchLoc = touches[0].getLocation();
  122. self.isMoving = true;
  123. // if(!self._isInitOnce){
  124. // self._StartPosition = GlobalD.TiledMap._tilePosFromLocation(self.node.getPosition());
  125. // }
  126. //如果要选框就去掉这里
  127. // self.onInitStartPosition();
  128. self._touchPosition = self.node.getPosition();
  129. // cc.log('self._StartPosition', self._StartPosition, self._touchPosition);
  130. }, self.node);
  131. self.node.on(cc.Node.EventType.TOUCH_END, function (event) {
  132. //起始触摸位置
  133. GlobalD.GameControl._isBuildingMove = false;
  134. }, self.node);
  135. self.node.on(cc.Node.EventType.TOUCH_CANCEL, function (event) {
  136. //起始触摸位置
  137. GlobalD.GameControl._isBuildingMove = false;
  138. }, self.node);
  139. },
  140. // 自动移动,在ManagerControl 里面调用
  141. onAutoMove(delta) {
  142. this.isAutoMove = true;
  143. let self = this;
  144. self._touchPosition.x += delta.x;
  145. self._touchPosition.y += delta.y;
  146. let tiledPos = GlobalD.TiledMap._tilePosFromLocation(self._touchPosition);
  147. //不相等的时候才绘制
  148. if (tiledPos.sub(self._EndPosition).mag() != 0) {
  149. self._EndPosition = tiledPos;
  150. if (self.buildingTouch.active) {
  151. if (self._StartPosition.x == self._EndPosition.x
  152. || self._StartPosition.y == self._EndPosition.y) {
  153. self.onCancelCreateHighway();
  154. self.onBuildingFromPath(self._StartPosition, self._EndPosition);
  155. let endPos = GlobalD.TiledMap._getTheMiddleLocationFromtilePos(tiledPos);
  156. self.node.setPosition(endPos);
  157. }
  158. } else {
  159. let endPos = GlobalD.TiledMap._getTheMiddleLocationFromtilePos(tiledPos);
  160. self.node.setPosition(endPos);
  161. }
  162. }
  163. },
  164. onCancleAutoMove() {
  165. this.isAutoMove = false;
  166. },
  167. //隐藏时候铺路的状态
  168. onHideSetTouchState() {
  169. if (this.create1 || this.create2) {
  170. let _cancel1 = this.selectTouch.getChildByName('Cancel').getComponent(cc.Button);
  171. let _cancel2 = this.buildingTouch.getChildByName('Cancel').getComponent(cc.Button);
  172. _cancel1.interactable = true;
  173. _cancel1.enableAutoGrayEffect = false;
  174. _cancel2.interactable = true;
  175. _cancel2.enableAutoGrayEffect = false;
  176. if (this.create1)
  177. this.create1.stopAllActions();
  178. if (this.create2)
  179. this.create2.stopAllActions();
  180. }
  181. },
  182. //新手教程时候设置铺路状态
  183. onSetTouchState() {
  184. if (!task.virtualShadowPos) return;
  185. if (this.selectTouch.active) {
  186. let _cancel = this.selectTouch.getChildByName('Cancel').getComponent(cc.Button);
  187. _cancel.interactable = false;
  188. _cancel.enableAutoGrayEffect = true;
  189. this.create1 = this.selectTouch.getChildByName('Create');
  190. this.create1.stopAllActions();
  191. var s = cc.sequence(cc.scaleTo(0.6, 0.9), cc.scaleTo(0.9, 0.6));
  192. var repeat = cc.repeatForever(s);
  193. this.create1.runAction(repeat);
  194. } else {
  195. let _cancel = this.buildingTouch.getChildByName('Cancel').getComponent(cc.Button);
  196. _cancel.interactable = false;
  197. _cancel.enableAutoGrayEffect = true;
  198. this.create2 = this.buildingTouch.getChildByName('Create');
  199. this.create2.stopAllActions();
  200. var s = cc.sequence(cc.scaleTo(0.6, 0.9), cc.scaleTo(0.9, 0.6));
  201. var repeat = cc.repeatForever(s);
  202. this.create2.runAction(repeat);
  203. }
  204. },
  205. //切换状态
  206. onSwitchBuidingTouch() {
  207. //如果是新手指引的情况下,需要显示对应的遮挡模板
  208. if (task.virtualShadowPos) {
  209. let _curentTiled = GlobalD.TiledMap._tilePosFromLocation(this.node.getPosition());;
  210. if (_curentTiled.sub(task.virtualShadowPos).mag() !== 0) {
  211. // console.error('没有移动到指定位置:', _curentTiled, task.virtualShadowPos);
  212. cc.loader.loadRes('resUI/ShowNotEnoughMoney', function (err, texture) {
  213. var prefab = cc.instantiate(texture);
  214. prefab.getComponent('ShowNotEnoughMoney').Text('请移动到虚影的<起始>位置!');
  215. cc.find('Canvas').getChildByName('UICamera').addChild(prefab);
  216. }.bind(this));
  217. return;
  218. } else {
  219. // console.log(task.virtualTarget);
  220. let _taskHighway = task.getTaskNode('taskPrefabTiledTileHighway');
  221. if (_taskHighway) {
  222. _taskHighway.getChildByName('Arrow').active = false;
  223. _taskHighway.getChildByName('Hand1').active = true;
  224. }
  225. }
  226. }
  227. this.selectTouch.active = false;
  228. this.buildingTouch.active = true;
  229. //设置一下状态
  230. this.onSetTouchState();
  231. //设置斑马线
  232. this.isCreateZebra = true;
  233. // this._isInitOnce = true;
  234. // 记录编辑状态时候的初始位置
  235. this.onInitStartPosition();
  236. },
  237. // 重置下初始位置
  238. onInitStartPosition() {
  239. this._StartPosition = GlobalD.TiledMap._tilePosFromLocation(this.node.getPosition());
  240. // //如果是新手指引的情况下,需要显示对应的遮挡模板
  241. // if (task.isMushBuildState) {
  242. // let _confirmButton = this.HighwayBuildingNode.getChildByName('SelectTouch').getChildByName('Create');
  243. // let _taskNodes = [];
  244. // _taskNodes.push(_confirmButton);
  245. // task.onInitTaskMask(_taskNodes);
  246. // }
  247. },
  248. //相同一个点的时候点的时候
  249. onBuildingFromPathEqual(tiledPos) {
  250. // cc.log('onBuildingFromPathEqual');
  251. if (!GlobalD.TiledMap.getTiledTileAt(tiledPos.x, tiledPos.y)) {
  252. let highwayTemp = null;
  253. if (this.highwayPool.size() > 0) { // 通过 size 接口判断对象池中是否有空闲的对象
  254. highwayTemp = this.highwayPool.get();
  255. } else { // 如果没有空闲对象,也就是对象池中备用对象不够时,我们就用 cc.instantiate 重新创建
  256. highwayTemp = cc.instantiate(this.HighWay[0]);
  257. // cc.log('重新创建')
  258. }
  259. highwayTemp.parent = this.buildLayer.node;
  260. let tiledTile = highwayTemp.addComponent('TiledTile');
  261. tiledTile.x = tiledPos.x;
  262. tiledTile.y = tiledPos.y;
  263. }
  264. },
  265. //不同点的时候
  266. //在路径上面创建公路预制
  267. onBuildingFromPath(start_tiledPos, end_tiledPos) {
  268. //移动了就不创建斑马线了
  269. this.isCreateZebra = false;
  270. let _highwayStart = null;
  271. let isChangeHighwayStart = false;
  272. let spawnPos = 0;
  273. //最后一个点判断是否重合
  274. let EndPos = [];
  275. let tempMaxY = 0;
  276. let tempMinY = 0;
  277. if (start_tiledPos.y > end_tiledPos.y) {
  278. tempMaxY = start_tiledPos.y;
  279. tempMinY = end_tiledPos.y;
  280. } else {
  281. tempMaxY = end_tiledPos.y;
  282. tempMinY = start_tiledPos.y;
  283. }
  284. let tempY = end_tiledPos.y - start_tiledPos.y;
  285. for (let i = tempMinY; i <= tempMaxY; i++) {
  286. spawnPos = cc.v2(start_tiledPos.x, i);
  287. //写入index 数组
  288. GlobalD.TiledMap.setIndexArray(spawnPos, EndPos);
  289. // if (!GlobalD.TiledMap.getTiledTileAt(spawnPos.x, spawnPos.y))
  290. {
  291. // cc.log('绘制Y', spawnPos)
  292. let highwayTemp = null;
  293. if (this.highwayPool.size() > 0) { // 通过 size 接口判断对象池中是否有空闲的对象
  294. highwayTemp = this.highwayPool.get();
  295. } else { // 如果没有空闲对象,也就是对象池中备用对象不够时,我们就用 cc.instantiate 重新创建
  296. highwayTemp = cc.instantiate(this.HighWay[0]);
  297. // cc.log('重新创建')
  298. }
  299. highwayTemp.parent = this.buildLayer.node;
  300. let tiledTile = highwayTemp.addComponent('TiledTile');
  301. tiledTile.x = spawnPos.x;
  302. tiledTile.y = spawnPos.y;
  303. if (GlobalD.game.getManageGameIndexArrayAt(tiledTile)) {
  304. highwayTemp.getComponent('TipSprite').onSetRedSpriteFrame();
  305. }
  306. //没有重复的时候
  307. // cc.log('设置Y值:', reGameStates.HighwayType.moveY);
  308. highwayTemp.getComponent('HighwayInfo').onChangeHighwayStyles(reGameStates.HighwayType.moveY);
  309. //记录第一个临时节点
  310. if (!_highwayStart) {
  311. _highwayStart = highwayTemp;
  312. }
  313. }
  314. }
  315. let tempMaxX = 0;
  316. let tempMinX = 0;
  317. if (start_tiledPos.x > end_tiledPos.x) {
  318. tempMaxX = start_tiledPos.x;
  319. tempMinX = end_tiledPos.x;
  320. } else {
  321. tempMaxX = end_tiledPos.x;
  322. tempMinX = start_tiledPos.x;
  323. }
  324. for (let i = tempMinX; i <= tempMaxX; i++) {
  325. spawnPos = cc.v2(i, start_tiledPos.y + tempY);
  326. //这里判断最大最小点是否重合
  327. if (!GlobalD.TiledMap.getIndexArrayAt(spawnPos, EndPos)) {
  328. // cc.log('绘制x', spawnPos)
  329. let highwayTemp = null;
  330. if (this.highwayPool.size() > 0) { // 通过 size 接口判断对象池中是否有空闲的对象
  331. highwayTemp = this.highwayPool.get();
  332. } else { // 如果没有空闲对象,也就是对象池中备用对象不够时,我们就用 cc.instantiate 重新创建
  333. highwayTemp = cc.instantiate(this.HighWay[0]);
  334. // cc.log('重新创建')
  335. }
  336. // let highwayTemp = cc.instantiate(this.HighWay[0]);
  337. highwayTemp.parent = this.buildLayer.node;
  338. let tiledTile = highwayTemp.addComponent('TiledTile');
  339. tiledTile.x = spawnPos.x;
  340. tiledTile.y = spawnPos.y;
  341. // this._highPath.push(highwayTemp);
  342. if (GlobalD.game.getManageGameIndexArrayAt(tiledTile)) {
  343. highwayTemp.getComponent('TipSprite').onSetRedSpriteFrame();
  344. }
  345. highwayTemp.getComponent('HighwayInfo').onChangeHighwayStyles(reGameStates.HighwayType.moveX);
  346. if (_highwayStart && !isChangeHighwayStart) {
  347. // cc.log('修正第一个起始点。');
  348. isChangeHighwayStart = true;
  349. _highwayStart.getComponent('HighwayInfo').onChangeHighwayStyles(reGameStates.HighwayType.moveX);
  350. }
  351. }
  352. }
  353. },
  354. //取消创建
  355. //对象池回收
  356. onCancelCreateHighway() {
  357. //删除对应层的子节点
  358. let tempNode = this.buildLayer.node.children;
  359. let length = tempNode.length;
  360. for (let i = length - 1; i >= 0; i--) {
  361. //设置回默认的提示图片
  362. tempNode[i].getComponent('TipSprite').onReset();
  363. tempNode[i].getComponent('HighwayInfo').onChangeHighwayStyles(reGameStates.HighwayType.none);
  364. if (tempNode[i].getComponent('TiledTile')) {
  365. tempNode[i].removeComponent('TiledTile');
  366. }
  367. // 和初始化时的方法一样,将节点放进对象池,这个方法会同时调用节点的 removeFromParent
  368. this.highwayPool.put(tempNode[i]);
  369. }
  370. },
  371. //创建道路
  372. onCreateHighway() {
  373. //获取最后建造公路的层级
  374. this.HighwayLayer = this._tiledMap.getLayer('Highway');
  375. if (this.isCreateZebra) {
  376. // cc.log('创建斑马线,', this._StartPosition);
  377. //检测新手引导时候道路,不设计一个点
  378. if (task.isMushBuildState) {
  379. console.error('新手教程下不创建单个公路');
  380. cc.loader.loadRes('resUI/ShowNotEnoughMoney', function (err, texture) {
  381. var prefab = cc.instantiate(texture);
  382. prefab.getComponent('ShowNotEnoughMoney').Text('请移动到虚影的<终点>位置!');
  383. cc.find('Canvas').getChildByName('UICamera').addChild(prefab);
  384. }.bind(this));
  385. return;
  386. }
  387. let buildIndex = GlobalD.TiledMap.getIndex(this._StartPosition);
  388. if (GlobalD.game.onGetHighwayFromIndex(buildIndex)) {
  389. let tempNode = this.HighwayLayer.node.children;
  390. let length = tempNode.length;
  391. for (let i = length - 1; i >= 0; i--) {
  392. let tiledTile = tempNode[i].getComponent('TiledTile');
  393. let tiledVector2 = new cc.Vec2(tiledTile.x, tiledTile.y);
  394. let tiledIndex = GlobalD.TiledMap.getIndex(tiledVector2);
  395. if (tiledIndex === buildIndex) {
  396. let _highwayInfo = tempNode[i].getComponent('HighwayInfo');
  397. // cc.log(_highwayInfo);
  398. let _switchHighwayType = reGameStates.HighwayType.none;
  399. if (_highwayInfo.currenHighwayType == reGameStates.HighwayType.moveX) {
  400. _switchHighwayType = reGameStates.HighwayType.ZebraCrossingX;
  401. } else if (_highwayInfo.currenHighwayType == reGameStates.HighwayType.moveY) {
  402. _switchHighwayType = reGameStates.HighwayType.ZebraCrossingY;
  403. // cc.log('Y', _switchHighwayType)
  404. }
  405. //修改节点样式
  406. _highwayInfo.onChangeHighwayStyles(_switchHighwayType);
  407. //更新公路样式
  408. GlobalD.game.onUpdateDifferentRoadStyles({
  409. _highwayType: _switchHighwayType,
  410. _roadIndex: buildIndex,
  411. });
  412. break;
  413. }
  414. }
  415. } else {//没有就创建
  416. let tiledVector2 = this._StartPosition;
  417. let highwayTemp = cc.instantiate(this.HighWay[1]);
  418. highwayTemp.parent = this.HighwayLayer.node;
  419. let tiledTile = highwayTemp.addComponent('TiledTile');
  420. tiledTile.x = tiledVector2.x;
  421. tiledTile.y = tiledVector2.y;
  422. // cc.log('onCreateHighway');
  423. AStar.setMapSolid(tiledVector2.x, tiledVector2.y, 0);
  424. // _buildId ==0 是公路
  425. let _buildId = 0;
  426. let occupyTemp = cc.v2(_buildId, buildIndex);
  427. GlobalD.game.OccupyArray.push(occupyTemp);
  428. //添加公路样式
  429. GlobalD.game.onCreateDifferentRoadStyles({
  430. _buildId: _buildId,
  431. _highwayType: reGameStates.HighwayType.ZebraCrossingX,
  432. _roadIndex: buildIndex,
  433. _hightwayNode: highwayTemp
  434. });
  435. }
  436. } else {
  437. let tempNode = this.buildLayer.node.children;
  438. let length = tempNode.length;
  439. //检测新手引导时候道路,检测最后一个点
  440. //如果是新手指引的情况下,需要显示对应的遮挡模板
  441. if (task.virtualShadowPosEnd) {
  442. let _taskTiledTile = tempNode[length - 1].getComponent('TiledTile');
  443. if (task.virtualShadowPosEnd.sub(cc.v2(_taskTiledTile.x, _taskTiledTile.y)).mag() !== 0) {
  444. console.error('没有移动到终点位置:', cc.v2(_taskTiledTile.x, _taskTiledTile.y), task.virtualShadowPosEnd);
  445. cc.loader.loadRes('resUI/ShowNotEnoughMoney', function (err, texture) {
  446. var prefab = cc.instantiate(texture);
  447. prefab.getComponent('ShowNotEnoughMoney').Text('请移动到虚影的<终点>位置!');
  448. cc.find('Canvas').getChildByName('UICamera').addChild(prefab);
  449. }.bind(this));
  450. return;
  451. } else {
  452. //铺路教程成功
  453. //移除虚影路径
  454. task.removeTaskNode('taskPrefabTiledTileHighway');
  455. //设置任务状态
  456. task.onShadowArchitectureReset();
  457. dialogmanager.init(task.Canvas, function () {
  458. dialogmanager.paveEnd();
  459. }.bind(this));
  460. dialogmanager.setOnCloseDialog(function () {
  461. task.showManagerhide();
  462. // task.setListView(18);
  463. task._setTaskIconCountClick(1);
  464. setTimeout(() => {
  465. task.taskCallBack();
  466. }, 500);
  467. }.bind(this));
  468. }
  469. }
  470. for (let i = length - 1; i >= 0; i--) {
  471. let tiledTile = tempNode[i].getComponent('TiledTile');
  472. //获取临时对象里面的公路脚本信息
  473. let _highwayInfoTemp = tempNode[i].getComponent('HighwayInfo');
  474. let tiledVector2 = new cc.Vec2(tiledTile.x, tiledTile.y);
  475. //重复的道路模块不创建
  476. if (!GlobalD.game.getManageGameIndexArrayAt(tiledVector2)) {
  477. let highwayTemp = cc.instantiate(this.HighWay[1]);
  478. highwayTemp.parent = this.HighwayLayer.node;
  479. let tiledTile = highwayTemp.addComponent('TiledTile');
  480. tiledTile.x = tiledVector2.x;
  481. tiledTile.y = tiledVector2.y;
  482. // cc.log('onCreateHighway');
  483. AStar.setMapSolid(tiledVector2.x, tiledVector2.y, 0);
  484. let index = GlobalD.TiledMap.getIndex(tiledVector2);
  485. // _buildId ==0 是公路
  486. let _buildId = 0;
  487. let occupyTemp = cc.v2(_buildId, index);
  488. GlobalD.game.OccupyArray.push(occupyTemp);
  489. // cc.log('创建时候的值:', _highwayInfoTemp.currenHighwayType)
  490. // highwayTemp.getComponent('HighwayInfo').onChangeHighwayStyles(_highwayInfoTemp.currenHighwayType);
  491. //添加公路样式
  492. GlobalD.game.onCreateDifferentRoadStyles({
  493. _buildId: _buildId,
  494. _highwayType: _highwayInfoTemp.currenHighwayType,
  495. _roadIndex: index,
  496. _hightwayNode: highwayTemp
  497. });
  498. }
  499. else {
  500. // cc.log('有道路重复!', tiledVector2);
  501. let buildIndex = GlobalD.TiledMap.getIndex(tiledVector2);
  502. let tempNode = this.HighwayLayer.node.children;
  503. let length = tempNode.length;
  504. for (let i = length - 1; i >= 0; i--) {
  505. let tiledTile = tempNode[i].getComponent('TiledTile');
  506. let tiledVector2 = new cc.Vec2(tiledTile.x, tiledTile.y);
  507. let tiledIndex = GlobalD.TiledMap.getIndex(tiledVector2);
  508. if (tiledIndex === buildIndex) {
  509. let _highwayInfo = tempNode[i].getComponent('HighwayInfo');
  510. //修改节点样式
  511. _highwayInfo.onChangeHighwayStyles(_highwayInfoTemp.currenHighwayType);
  512. //更新公路样式
  513. GlobalD.game.onUpdateDifferentRoadStyles({
  514. _highwayType: _highwayInfoTemp.currenHighwayType,
  515. _roadIndex: buildIndex,
  516. });
  517. break;
  518. }
  519. }
  520. }
  521. }
  522. }
  523. //清空回收临时对象
  524. this.onCancelCreateHighway();
  525. //统一取消
  526. this.onHide();
  527. // if (this.isCreateZebra) {
  528. // this.onHide();
  529. // } else {
  530. // //成功创建后,重置下初始位置
  531. // this.onInitStartPosition();
  532. // }
  533. },
  534. //删除
  535. onDelete() {
  536. this.onCancelCreateHighway();
  537. this.highwayPool.clear();// 调用这个方法就可以清空对象池
  538. this.node.destroy();
  539. },
  540. //隐藏
  541. onHide() {
  542. this.onCancelCreateHighway();
  543. this.node.active = false;
  544. // this._isInitOnce = false;
  545. //绿色选中框选中要下面两个代码切换
  546. this.selectTouch.active = true;
  547. this.buildingTouch.active = false;
  548. GlobalD.game.onClearCurrentBuildingTarget();
  549. //显示铺路引导
  550. task.onTaskPaveRoadsMask();
  551. },
  552. onDisable() {
  553. //隐藏时候重置下状态
  554. this.onHideSetTouchState();
  555. //收起底部菜单栏
  556. GlobalD.game._ManageUIScript.onBottomMenuView(true);
  557. },
  558. onEnable() {
  559. // console.log(111);
  560. //修改按钮状态
  561. this.onSetTouchState();
  562. //收起底部菜单栏
  563. GlobalD.game._ManageUIScript.onBottomMenuView(false);
  564. }
  565. // update (dt) {},
  566. });