GameMain.ts 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. import { _decorator, Node, instantiate, Vec3, Label } from "cc";
  2. import UIParent from "../../../Common/Base/UIParent";
  3. import { GameEvent } from "../../../Common/Base/GameEventConfig";
  4. import GameMainCtrl from "../../Ctrl/GameMainCtrl";
  5. import LevelCtrl from "../../Ctrl/LevelCtrl";
  6. import GameUtils from "../../GameUtils/GameUtils";
  7. import GameMainLine from "./GameMainLine";
  8. import GameMainPoint from "./GameMainPoint";
  9. import { GameManager } from "../../../Manager/GameManager";
  10. import GameEventManager from "../../../Common/Base/GameEventManager";
  11. import { LevelData } from "../../Config/LevelConfig";
  12. const { ccclass, property } = _decorator;
  13. @ccclass
  14. export default class GameMain extends UIParent {
  15. @property(Node)
  16. pointNode: Node = null;
  17. @property(Node)
  18. pointNodeParent: Node = null;
  19. @property(Node)
  20. ropeNode: Node = null;
  21. @property(Node)
  22. ropeNodeParent: Node = null;
  23. @property(Label)
  24. moveCountLabel: Label = null;
  25. @property(Node)
  26. gameDes: Node = null;
  27. movecount: number = 0;
  28. levelDatas: LevelData[] = []
  29. start() {
  30. GameEventManager.getInstance().pushNodeEvent(this);
  31. }
  32. ShowUI() {
  33. super.ShowUI();
  34. this.InitLevelConfig();
  35. // this.pathNode.scale = GameMainCtrl.getInstance().getViewSize()
  36. let leveldata = this.levelDatas[GameManager.getInstance().curLevel - 1];
  37. if (leveldata == null) return;
  38. GameMainCtrl.getInstance().setNowLevelData(leveldata);
  39. this.createLevelConfig()
  40. }
  41. HideUI() {
  42. super.HideUI();
  43. this.removeObjs();
  44. }
  45. InitUI(uiMain) {
  46. super.InitUI(uiMain)
  47. GameUtils.getInstance().setVisible(this.pointNode, false)
  48. GameUtils.getInstance().setVisible(this.ropeNode, false)
  49. GameUtils.getInstance().setVisible(this.gameDes, false)
  50. }
  51. private removeObjs() {
  52. for (let i = 0; i < this.pointNodeParent.children.length; i++) {
  53. this.pointNodeParent.children[i].getComponent(GameMainPoint).destroySelf();
  54. }
  55. for (let i = 0; i < this.ropeNodeParent.children.length; i++) {
  56. this.ropeNodeParent.children[i].getComponent(GameMainLine).destroySelf();
  57. }
  58. }
  59. InitData() {
  60. }
  61. Pause(flag) {
  62. super.Pause(flag);
  63. }
  64. //获取关卡配置,按配置生成连线
  65. createLevelConfig() {
  66. let levelData = GameMainCtrl.getInstance().getNowLevelData()
  67. console.log(levelData);
  68. let pathList = levelData.pathList
  69. let allPoint: GameMainPoint[] = []
  70. this.movecount = pathList[2];
  71. this.moveCountLabel.string = "剩余拖拽次数:" + this.movecount;
  72. this.removeObjs();
  73. let posList = pathList[0]
  74. for (let index = 0; index < posList.length; index++) {
  75. let data = posList[index];
  76. let obj = instantiate(this.pointNode)
  77. GameUtils.getInstance().setVisible(obj, true)
  78. this.pointNodeParent.addChild(obj)
  79. obj.setPosition(new Vec3(data[0], data[1]))
  80. let spr = obj.getComponent(GameMainPoint)
  81. spr.resetData(index)
  82. allPoint.push(spr)
  83. }
  84. let allLine: GameMainLine[] = []
  85. let idList = pathList[1]
  86. for (let index = 0; index < idList.length; index++) {
  87. let rope = idList[index];
  88. let pointOne = allPoint[rope[0]]
  89. let pointTwe = allPoint[rope[1]]
  90. let obj = instantiate(this.ropeNode)
  91. GameUtils.getInstance().setVisible(obj, true)
  92. this.ropeNodeParent.addChild(obj)
  93. let spr = obj.getComponent(GameMainLine)
  94. spr.resetData(pointOne, pointTwe)
  95. allLine.push(spr)
  96. pointOne.addRopeData({ rope: spr, linkPoint: pointTwe })
  97. pointTwe.addRopeData({ rope: spr, linkPoint: pointOne })
  98. }
  99. // for (let index = 0; index < allPoint.length; index++) {
  100. // let line = allPoint[index];
  101. // line.resetPointLine()
  102. // }
  103. GameMainCtrl.getInstance().setAllPointList(allPoint)
  104. GameMainCtrl.getInstance().setAllLineList(allLine)
  105. GameMainCtrl.getInstance().resetLineIntersection()
  106. }
  107. onClickShowDes() {
  108. GameUtils.getInstance().setVisible(this.gameDes, true)
  109. }
  110. onClickCloseDes() {
  111. GameUtils.getInstance().setVisible(this.gameDes, false)
  112. }
  113. onDispathcGameEvent(eventId: GameEvent, eventData: any) {
  114. switch (eventId) {
  115. case GameEvent.MonkeyMove:
  116. {
  117. this.movecount--;
  118. if (this.movecount > 0) {
  119. this.moveCountLabel.string = "剩余拖拽次数:" + this.movecount;
  120. } else {//游戏结束
  121. GameManager.getInstance().gameFail();
  122. }
  123. }
  124. break
  125. default:
  126. super.onDispathcGameEvent(eventId, eventData);
  127. break;
  128. }
  129. }
  130. InitLevelConfig() {
  131. this.levelDatas = [];
  132. let levelConfig = LevelCtrl.getInstance().getLevelConfig()
  133. for (let index = 0; index < levelConfig.length; index++) {
  134. let data = levelConfig[index];//每关的点信息
  135. let levelData = { level: index + 1, pathList: data }
  136. this.levelDatas.push(levelData);
  137. }
  138. }
  139. }