SpawnManager.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. const spawnGroup = require('spawnGroup');
  2. const levelStates = require('LevelStates');
  3. cc.Class({
  4. extends: cc.Component,
  5. properties: {
  6. ABPrefab: cc.Prefab,
  7. ABLayer: cc.Node,
  8. initPipeX: 0,
  9. //-- 创建PipeGroup需要的时间
  10. spawnInterval: 0,
  11. //当前要生成的地图数组
  12. currentSpawnArray: [],
  13. //当前生成什么项目
  14. currentSportsType: null,
  15. spawnIndex: 0,
  16. },
  17. onLoad() {
  18. GlobalData.spawnManager = this;
  19. //获取地图js
  20. //GlobalData.levelManager = this.node.getComponent('LevelManager');
  21. // this.LevelPool = new cc.NodePool();
  22. },
  23. start() {
  24. this.startSpawn();
  25. },
  26. startSpawn() {
  27. // this.schedule(this.spawnItem, this.spawnInterval);
  28. //新的项目从0开始
  29. this.spawnIndex = 0;
  30. if (!GlobalData.levelManager.spawnSportsName) {
  31. if(GlobalData.levelManager.spawnSportsName==0){
  32. this.SpawnSportsIndex = 1;//第一个项目,spawnSprint Enum ==1;
  33. this.SwitchSports(this.SpawnSportsIndex);
  34. this.spawnItem();
  35. }else{
  36. console.warn('GlobalData.levelManager.spawnSportsName 不存在!');
  37. }
  38. return;
  39. }
  40. this.SwitchSports(GlobalData.levelManager.spawnSportsName);
  41. // console.log('当前动态数组', this.currentSpawnArray, GlobalData.levelManager.SprintSports.sportsName);
  42. if (this.currentSpawnArray.length == 0) {
  43. return;
  44. }
  45. this.spawnItem();
  46. },
  47. SwitchSports(name){
  48. switch (name) {
  49. case levelStates.spawnSportsName.spawnSprint:
  50. this.currentSpawnArray = GlobalData.levelManager.SprintSports.itemPrefab;
  51. this.currentSportsType = GlobalData.levelManager.SprintSports.sportsName;
  52. break;
  53. case levelStates.spawnSportsName.spawnLongJump:
  54. this.currentSpawnArray = GlobalData.levelManager.LongJumpSports.itemPrefab;
  55. this.currentSportsType = GlobalData.levelManager.LongJumpSports.sportsName;
  56. break;
  57. case levelStates.spawnSportsName.spawnHurdle:
  58. this.currentSpawnArray = GlobalData.levelManager.HurdleSports.itemPrefab;
  59. this.currentSportsType = GlobalData.levelManager.HurdleSports.sportsName;
  60. break;
  61. case levelStates.spawnSportsName.spawnJavelin:
  62. this.currentSpawnArray = GlobalData.levelManager.JavelinSports.itemPrefab;
  63. this.currentSportsType = GlobalData.levelManager.JavelinSports.sportsName;
  64. break;
  65. case levelStates.spawnSportsName.spawnBike:
  66. this.currentSpawnArray = GlobalData.levelManager.BikeSports.itemPrefab;
  67. this.currentSportsType = GlobalData.levelManager.BikeSports.sportsName;
  68. break;
  69. }
  70. GlobalData.game.currentSpawnSport = this.currentSportsType;
  71. // console.log('当前生成项目的enum值:', GlobalData.game.currentSpawnSport);
  72. },
  73. //-- 需要生成全部体育项目
  74. SpawnAllSportsItem() {
  75. },
  76. //-- 创建
  77. spawnItem() {
  78. this.ABPrefab = this.currentSpawnArray[this.spawnIndex];
  79. let spawnGroupTemp = null;
  80. // if (this.LevelPool.size) {
  81. // spawnGroupTemp = this.LevelPool.get(spawnGroup);
  82. // console.log('取出对象',spawnGroupTemp);
  83. // } else {
  84. spawnGroupTemp = cc.instantiate(this.ABPrefab).getComponent(spawnGroup);
  85. // console.log('重新生成对象',spawnGroupTemp);
  86. // }
  87. this.ABLayer.addChild(spawnGroupTemp.node);
  88. spawnGroupTemp.node.active = true;
  89. // spawnGroupTemp.node.x = this.initPipeX;
  90. spawnGroupTemp.node.setPosition(this.initPipeX, 0);
  91. // console.log(spawnGroupTemp.node.name);
  92. //如果是结束的预制
  93. if (spawnGroupTemp.node.name == "FinishLine") {
  94. this.spawnIndex = 0;
  95. if(GlobalData.levelManager.spawnSportsName==0){
  96. this.SpawnSportsIndex++;
  97. this.SwitchSports(this.SpawnSportsIndex);
  98. //如果存在,说明是初始化全部项目。最后一个项目,设置成1;
  99. // console.log(this.SpawnSportsIndex);
  100. if(this.SpawnSportsIndex == 5){
  101. this.SpawnSportsIndex =0;
  102. }
  103. }
  104. } else {
  105. this.spawnIndex++;
  106. }
  107. },
  108. despawnPipe(destroyObj) {
  109. // destroyObj.node.removeFromParent();
  110. // destroyObj.node.active = false;
  111. // this.LevelPool.put(destroyObj.node);
  112. destroyObj.node.destroy();
  113. this.spawnItem();
  114. },
  115. reset() {
  116. this.unschedule(this.spawnItem);
  117. }
  118. });