EnemyMgr.ts 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import { _decorator, Component, instantiate, Node, Vec3 } from 'cc';
  2. import { ModulerBase } from '../../GameFrameWork/ModulerBase';
  3. import { resMgr } from '../../../Frames/ResourcesMgr';
  4. import { Role } from '../Role';
  5. import { Enemy } from './Enemy';
  6. import { LevelData, RoleData } from '../../../DataItem/ItemData';
  7. import { dataMgr } from '../../../Frames/DataManager';
  8. import { GameInfo } from '../../../GameInfo';
  9. import { GameMgr } from '../../GameFrameWork/GameMgr';
  10. import { TouchMgr } from '../TouchMgr';
  11. import { TouchGame } from '../TouchGame';
  12. import { Tools } from '../../Tools/Tools';
  13. import { Top } from './Top';
  14. import { gameResMgr } from '../../GameResMgr';
  15. const { ccclass, property } = _decorator;
  16. @ccclass('EnemyMgr')
  17. export class EnemyMgr extends ModulerBase {
  18. private _lvDts: LevelData[] = [];
  19. private _lvDt: LevelData = null;
  20. private _roleDatas: RoleData[] = [];
  21. private _hight: number = 0;
  22. private _top: Top = null;
  23. protected onLoad(): void {
  24. this._lvDts = dataMgr.getAllDataByName("LevelDt");
  25. this._hight = GameMgr.Instance.getModuler(TouchGame)._hight;
  26. this._roleDatas = dataMgr.getAllDataByName("RoleCardData");
  27. this._top = GameMgr.Instance.getModuler(Top);
  28. }
  29. init() {
  30. //第几关的数据
  31. this._lvDt = this._lvDts[GameInfo.Instance.getCurlv() + 1];
  32. this._createEnemy();
  33. this.schedule(() => {
  34. this._createEnemy();
  35. }, 60)
  36. //设置敌方防御塔血量
  37. this._top.enemyTotalHp = this._lvDt.enemyTowerHp;
  38. }
  39. private _createEnemy() {
  40. const enemy: Node = instantiate(resMgr.getPrefab("Enemy"));
  41. enemy.parent = this.node;
  42. const enemyTS = enemy.getComponent(Enemy);
  43. const imgNameArray = this._lvDt.imgName;
  44. if (imgNameArray && imgNameArray.length > 0) {
  45. //随机获取图片名
  46. //const randomIndex = Math.floor(Math.random() * imgNameArray.length)
  47. const name = imgNameArray[Tools.randomNumber(imgNameArray.length)];
  48. //0 1 2 3 4
  49. const y = 180 + (Tools.randomNumber(5) + 1) * this._hight - this._hight / 2;
  50. enemyTS.init(name, new Vec3(1230, y, 0), this._roleDatas, 0);
  51. } else {
  52. Error("imgNameArray is null");
  53. }
  54. }
  55. }