03207447b6b33a9b6c756b33ce2b5c9c56cde41e 7.3 KB

12345678910111213141516171819202122232425
  1. {
  2. "code": "import { SceneController } from \"./SceneController\";\r\nimport { PoolManager } from \"./PoolManager\";\r\nimport PlayerController from \"./PlayerController\";\r\nimport Game_Tool from \"../Util/Game_Tool\";\r\nimport Dictionary from \"../Util/Dictionary\";\r\nimport { GlobalVariable } from \"../game_module/GlobalVariable\";\r\nimport { CfgManager } from \"./CfgManager\";\r\nimport { EnemyCarData } from \"./EnemyController\";\r\nimport { EnemyCar } from \"./EnemyCar\";\r\nimport LevelController from \"./LevelController\";\r\nimport { BossCar } from \"./BossCar\";\r\nimport Car from \"./Car\";\r\nimport GameManager from \"./GameManager\";\r\nimport GameUi from \"../Window/GameUi\";\r\nexport default class AIController {\r\n constructor() {\r\n this.curTeamIndex = 1;\r\n this.AiDic = new Dictionary();\r\n this.trackIndex = [1, 2, 3, 3, 2, 1, 2, 1, 3, 2, 3, 1];\r\n }\r\n static get Instance() {\r\n return this.instance || (this.instance = new AIController());\r\n }\r\n Init() {\r\n this.teams = LevelController.Instance._level.enemy_lis;\r\n this.curTeamIndex = 1;\r\n this.enemyCount = this.teams.length;\r\n }\r\n InitAiData() {\r\n }\r\n CheckIsNeedCreateCar() {\r\n if (this.curTeamIndex > this.teams.length)\r\n return false;\r\n if (this.AiDic.size >= GlobalVariable.maxCarCount)\r\n return false;\r\n else\r\n return true;\r\n }\r\n CreateAiForType(tar) {\r\n let enemyteamdate = CfgManager.Instance.GetEnemyTeam(Number(this.teams[this.curTeamIndex - 1]));\r\n if (!enemyteamdate)\r\n return;\r\n let carid = enemyteamdate.car_id;\r\n let isboss = CfgManager.Instance.GetCar(carid).is_boss;\r\n if (isboss) {\r\n this.CreateBoss(tar, carid, this.GetData(enemyteamdate));\r\n }\r\n else {\r\n this.CreateEnemy(tar, carid, this.GetData(enemyteamdate));\r\n }\r\n }\r\n CreateEnemy(tar, index, data) {\r\n let name = PoolManager.pooltype.EnemyCar + index;\r\n ;\r\n let enC = PoolManager.Instance.SetActiveObject(name);\r\n SceneController.Instance._enemycars.addChild(enC);\r\n enC.transform.localPosition = tar.position.clone();\r\n enC.transform.localRotationEuler = tar.localRotationEuler.clone();\r\n let type = this.GetTrack();\r\n if (!type) {\r\n console.error(\"设置错误\");\r\n return;\r\n }\r\n let encB = enC.addComponent(EnemyCar);\r\n encB.SetTrack(type, PlayerController.Instance.playerCar, index, data);\r\n encB.CreateEnemy();\r\n this.AiDic.set(type, enC);\r\n this.curTeamIndex++;\r\n Laya.timer.frameOnce(10, this, () => {\r\n PlayerController.Instance.CreateAiForPlayer();\r\n });\r\n }\r\n CreateBoss(tar, index, data) {\r\n let name = PoolManager.pooltype.BossCar + index;\r\n ;\r\n let enC = PoolManager.Instance.SetActiveObject(name);\r\n SceneController.Instance._enemycars.addChild(enC);\r\n enC.transform.localPosition = tar.position.clone();\r\n enC.transform.localRotationEuler = tar.localRotationEuler.clone();\r\n let type = this.GetTrack();\r\n if (!type) {\r\n console.error(\"设置错误\");\r\n return;\r\n }\r\n let encB = enC.addComponent(BossCar);\r\n encB.SetTrack(type, PlayerController.Instance.playerCar, index, data);\r\n this.AiDic.set(type, enC);\r\n this.curTeamIndex++;\r\n Laya.timer.frameOnce(10, this, () => {\r\n PlayerController.Instance.CreateAiForPlayer();\r\n });\r\n }\r\n GetData(d) {\r\n return new EnemyCarData(d.car_id, Game_Tool.SpliteString(d.enemy_list), d.car_hp, Game_Tool.SpliteString(d.halmet_type), Game_Tool.SpliteString(d.halmet_hp), d.wheel_hp, d.driver_add_priority, Game_Tool.SpliteString(d.hit_count), Game_Tool.SpliteString(d.frequency), d.hit_rate);\r\n }\r\n GetTrack() {\r\n let index = Game_Tool.randomInt(0, 3);\r\n let arr = [];\r\n arr.push(this.trackIndex[index * 3]);\r\n arr.push(this.trackIndex[index * 3 + 1]);\r\n arr.push(this.trackIndex[index * 3 + 2]);\r\n for (let index = 0; index < arr.length; index++) {\r\n const element = arr[index];\r\n if (!this.AiDic.has(element))\r\n return element;\r\n }\r\n }\r\n ClearCar(track) {\r\n if (this.AiDic.has(track)) {\r\n this.AiDic.delete(track);\r\n this.enemyCount--;\r\n }\r\n if (this.JundgeCanWin() && !GameManager.Instance.isResult && !GameManager.Instance.isgamePause) {\r\n GameManager.Instance.GameWin();\r\n }\r\n }\r\n Reset() {\r\n let arr = [];\r\n for (const key in this.AiDic.container) {\r\n arr.push(key);\r\n }\r\n if (arr.length > 0) {\r\n for (let index = 0; index < arr.length; index++) {\r\n const element = arr[index];\r\n let s = this.AiDic.get(element);\r\n let s_s = s.getComponent(Car);\r\n if (s_s)\r\n s_s.Reset();\r\n }\r\n }\r\n }\r\n CreateHpBar() {\r\n if (!GameUi.Instance)\r\n return;\r\n let hpBar = new Laya.ProgressBar(\"gameRes/game_1.png\");\r\n hpBar.value = 1;\r\n hpBar.anchorX = 0.5;\r\n hpBar.anchorY = 0.5;\r\n GameUi.Instance.addChild(hpBar);\r\n hpBar.width = 250;\r\n hpBar.height = 20;\r\n return hpBar;\r\n }\r\n JundgeCanWin() {\r\n if (this.enemyCount <= 0) {\r\n this.enemyCount = 100000;\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n}\r\n",
  3. "references": [
  4. "D:/GitProject/GunGang/gungang_laya/gungang/src/GameLogic/GameDefined.ts",
  5. "D:/GitProject/GunGang/gungang_laya/gungang/src/GameLogic/SceneController.ts",
  6. "D:/GitProject/GunGang/gungang_laya/gungang/src/GameLogic/PoolManager.ts",
  7. "D:/GitProject/GunGang/gungang_laya/gungang/src/GameLogic/PlayerController.ts",
  8. "D:/GitProject/GunGang/gungang_laya/gungang/src/GameLogic/EventManager.ts",
  9. "D:/GitProject/GunGang/gungang_laya/gungang/src/Util/Game_Tool.ts",
  10. "D:/GitProject/GunGang/gungang_laya/gungang/src/Util/Dictionary.ts",
  11. "D:/GitProject/GunGang/gungang_laya/gungang/src/game_module/GlobalVariable.ts",
  12. "D:/GitProject/GunGang/gungang_laya/gungang/src/Util/Mathf.ts",
  13. "D:/GitProject/GunGang/gungang_laya/gungang/src/GameLogic/CfgManager.ts",
  14. "D:/GitProject/GunGang/gungang_laya/gungang/src/GameLogic/DefinedType.ts",
  15. "D:/GitProject/GunGang/gungang_laya/gungang/src/GameLogic/EnemyController.ts",
  16. "D:/GitProject/GunGang/gungang_laya/gungang/src/GameLogic/EnemyCar.ts",
  17. "D:/GitProject/GunGang/gungang_laya/gungang/src/GameLogic/LevelController.ts",
  18. "D:/GitProject/GunGang/gungang_laya/gungang/src/GameLogic/BossCar.ts",
  19. "D:/GitProject/GunGang/gungang_laya/gungang/src/Window/MainUi.ts",
  20. "D:/GitProject/GunGang/gungang_laya/gungang/src/GameLogic/Car.ts",
  21. "D:/GitProject/GunGang/gungang_laya/gungang/src/GameLogic/GameManager.ts",
  22. "D:/GitProject/GunGang/gungang_laya/gungang/src/Window/GameUi.ts"
  23. ]
  24. }