EnemyMgr.ts 2.5 KB

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