GameLevel.ts 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. // Learn TypeScript:
  2. // - https://docs.cocos.com/creator/2.4/manual/en/scripting/typescript.html
  3. // Learn Attribute:
  4. // - https://docs.cocos.com/creator/2.4/manual/en/scripting/reference/attributes.html
  5. // Learn life-cycle callbacks:
  6. // - https://docs.cocos.com/creator/2.4/manual/en/scripting/life-cycle-callbacks.html
  7. import EventName, { ItemName, PopName, SofaColor } from "../EventName/EventName";
  8. import { BusNodeData, BusType, ChangeCountDown, ChangeGraySitDownColor, ChangeMapInitOver, ChangeRoloInitOver, ChangeRoloQueues, ChangetableData, ChangetableDataBusType, ChangetableDataMen, MapData, MapDataBusTypes, MapDataBusTypes_ByYinDao, MapDataCountDown, MapDataCountDown_ByYinDao, MapDataGraySitDownColor, MapDataGraySitDownColor_ByYinDao, MapDataRoloQueues, MapDataRoloQueues_ByYinDao, MapData_ByYinDao, MapInitOver, MenPos, RoloInitOver, tableData } from "../GameLogic/DataConfig";
  9. import HTTPS, { NetPost } from "../Template/HTTPS";
  10. import LocalData, { WorkState } from "../Template/LocalData";
  11. import MyComponent from "../Template/MyComponent";
  12. import PopManger, { GameOver } from "./PopManger";
  13. const { ccclass, property } = cc._decorator;
  14. @ccclass
  15. export default class GameLevel extends MyComponent {
  16. //当前游戏关卡
  17. static gameLevel: number = 1
  18. @property(cc.SpriteFrame)
  19. sp_on: cc.SpriteFrame = null
  20. @property(cc.SpriteFrame)
  21. sp_off: cc.SpriteFrame = null
  22. protected onEnable(): void {
  23. GameLevel.gameLevel = 1
  24. cc.systemEvent.emit(EventName.driveBus, 0)
  25. }
  26. onLoad(): void {
  27. super.onLoad();
  28. this.regEvent(EventName.NextCoustomGame, this.NextCoustomGame, this)
  29. this.regEvent(EventName.driveBusOver, this.driveBusOver, this)
  30. this.regEvent(EventName.driveBusMind, this.driveBusMind, this)
  31. this.setGameSlider()
  32. }
  33. //开车结束了
  34. driveBusOver() {
  35. //生成车门
  36. cc.systemEvent.emit(EventName.BronDoor)
  37. }
  38. //开车到一半了
  39. driveBusMind() {
  40. PopManger.getInstance().Pop(PopName.CurrentLevel)
  41. ChangeRoloInitOver(false)
  42. ChangeMapInitOver(false)
  43. //现在的关卡状态
  44. let _WorkState = LocalData.getInstance().getWorkState()
  45. switch (_WorkState) {
  46. case WorkState.引导:
  47. console.log('当前是引导关卡');
  48. //改变地图数据
  49. this.changeMap_ByYinDao()
  50. break;
  51. case WorkState.上班:
  52. console.log('当前是上班关卡');
  53. //改变地图数据
  54. this.changeMap()
  55. break;
  56. case WorkState.加班:
  57. console.log('当前是加班关卡');
  58. GameLevel.gameLevel = 6
  59. //改变地图数据
  60. this.changeMap()
  61. break;
  62. default:
  63. cc.error('未知状态');
  64. break;
  65. }
  66. //加载人物
  67. this.loadRole()
  68. //加载车子皮肤 设置位置
  69. this.loadMapBg()
  70. //加载车子皮肤 设置位置
  71. this.loadBus()
  72. //加载地图
  73. this.loadMap()
  74. }
  75. //下一关
  76. NextCoustomGame() {
  77. //现在的关卡状态
  78. let _WorkState = LocalData.getInstance().getWorkState()
  79. switch (_WorkState) {
  80. case WorkState.引导:
  81. cc.systemEvent.emit(EventName.driveBus, 1.5, false)
  82. PopManger.getInstance().Pop(PopName.Successfully)
  83. LocalData.getInstance().setWorkState(WorkState.上班)
  84. break;
  85. case WorkState.上班:
  86. //关卡++
  87. GameLevel.gameLevel++
  88. if (GameLevel.gameLevel == 6) {
  89. this.GameSecceed()
  90. } else {
  91. //恢复时间
  92. cc.systemEvent.emit(EventName.RestoreCountDown)
  93. //开始发车
  94. cc.systemEvent.emit(EventName.driveBus)
  95. }
  96. break;
  97. case WorkState.加班:
  98. cc.systemEvent.emit(EventName.driveBus, 1.5, false)
  99. PopManger.getInstance().Pop(PopName.Successfully)
  100. //发送服务器游戏成功or 失败
  101. PopManger.getInstance().GameOver(GameOver.succeed)
  102. break;
  103. default:
  104. cc.error('未知状态');
  105. break;
  106. }
  107. }
  108. GameSecceed() {
  109. PopManger.getInstance().Pop(PopName.Successfully)
  110. LocalData.getInstance().setWorkState(WorkState.加班)
  111. //发送服务器游戏成功or 失败
  112. PopManger.getInstance().GameOver(GameOver.succeed)
  113. //加班
  114. console.error('游戏通关了');
  115. console.error('执行加班处理');
  116. }
  117. protected update(dt: number): void {
  118. if (RoloInitOver && MapInitOver) {
  119. ChangeRoloInitOver(false)
  120. ChangeMapInitOver(false)
  121. cc.systemEvent.emit(EventName.InitCountDown)
  122. cc.systemEvent.emit(EventName.RoleStartBus)
  123. }
  124. }
  125. setGameSlider() {
  126. let Level_Array = this.node.getComponentsInChildren(cc.Sprite);
  127. // 进度
  128. for (let i = 0; i < Level_Array.length; i++) {
  129. if (i < GameLevel.gameLevel) {
  130. Level_Array[i].spriteFrame = this.sp_on; // 根据游戏级别设置为开启状态
  131. } else {
  132. Level_Array[i].spriteFrame = this.sp_off; // 其余的设置为关闭状态
  133. }
  134. }
  135. }
  136. //#region 引导关卡初始化
  137. changeMap_ByYinDao() {
  138. //加载地图数据 在加载车子
  139. ChangetableData(MapData_ByYinDao[0])
  140. //加载车子类型
  141. ChangetableDataBusType(MapDataBusTypes_ByYinDao[0])
  142. //修改车门位置
  143. ChangetableDataMen(MenPos[BusType])
  144. //加载灰色座位数据
  145. ChangeGraySitDownColor(MapDataGraySitDownColor_ByYinDao[0])
  146. //加载乘客数据
  147. ChangeRoloQueues(MapDataRoloQueues_ByYinDao[0])
  148. //加载倒计时时间
  149. ChangeCountDown(MapDataCountDown_ByYinDao[0])
  150. }
  151. //#endregion
  152. //#region 上班关卡初始化
  153. changeMap() {
  154. //加载地图数据 在加载车子
  155. ChangetableData(MapData[GameLevel.gameLevel - 1])
  156. //加载车子类型
  157. ChangetableDataBusType(MapDataBusTypes[GameLevel.gameLevel - 1])
  158. //修改车门位置
  159. ChangetableDataMen(MenPos[BusType])
  160. //加载灰色座位数据
  161. ChangeGraySitDownColor(MapDataGraySitDownColor[GameLevel.gameLevel - 1])
  162. //加载乘客数据
  163. ChangeRoloQueues(MapDataRoloQueues[GameLevel.gameLevel - 1])
  164. //加载倒计时时间
  165. ChangeCountDown(MapDataCountDown[GameLevel.gameLevel - 1])
  166. }
  167. //#endregion
  168. loadRole() {
  169. //初始化排队人群位置
  170. cc.systemEvent.emit(EventName.initRoleQueuePos)
  171. //生成人物
  172. cc.systemEvent.emit(EventName.BronRole)
  173. }
  174. //加载车子皮肤
  175. loadBus() {
  176. //生成车子皮肤
  177. cc.systemEvent.emit(EventName.BronBus)
  178. }
  179. //加载地图
  180. loadMap() {
  181. this.setGameSlider()
  182. }
  183. loadMapBg() {
  184. let bgNode = this.node.parent.getChildByName('background')
  185. let path = BusNodeData[BusType][LocalData.getInstance().getBusSkin() - 1].BgImage
  186. PopManger.getInstance().LoadAssets<cc.Texture2D>(path).then((sp) => {
  187. if (sp) {
  188. bgNode.getComponent(cc.Sprite).spriteFrame = new cc.SpriteFrame(sp)
  189. }
  190. }).catch((error) => {
  191. // 加载失败的处理
  192. });
  193. let Rail = BusNodeData[BusType][LocalData.getInstance().getBusSkin() - 1].Rail
  194. if (Rail) {
  195. for (let index = 0; index < bgNode.children.length; index++) {
  196. const sub_bgNode = bgNode.children[index];
  197. const element = Rail[index];
  198. if (element) {
  199. sub_bgNode.setPosition(element[0], element[1])
  200. sub_bgNode.setScale(element[2], element[3])
  201. sub_bgNode.active = true
  202. } else {
  203. sub_bgNode.active = false
  204. }
  205. }
  206. } else {
  207. bgNode.children.forEach(e => { e.active = false })
  208. }
  209. }
  210. }