public StageEnemyTargetObserver(StageController stageController) { _stageController = stageController; _stageController = NrcGameManager.NrcGameStageObserver.GetNowStageController(); foreach (EnemyTargetPointController enemyTargetPointController in _stageController.EnemyTargetPointControllerList) { EnemyTargetModel enemyTargetModel = NrcGameManager.NrcGameDatabaseService.GetEnemyTargetModelById(enemyTargetPointController.Id); GameObject enemyTarget = GameObject.Instantiate(enemyTargetModel.Prefab, NrcGameManager.NrcGameStageObserver.GetNowStageController().transform); EnemyTargetController enemyTargetController = enemyTarget.GetComponent <EnemyTargetController>(); enemyTargetController.transform.position = enemyTargetPointController.transform.position; enemyTargetController.Init(enemyTargetModel); enemyTargetController.EnemyTargetDeadBeforeEvent += (etc) => { _enemyTargetControllerList.Remove(etc); if (_enemyTargetControllerList.Count < 1) { NrcGameManager.NrcGameEnemyTargetService.EnemyTargetAllDeadEvent(); } }; _enemyTargetControllerList.Add(enemyTargetController); } }
public void Init(EnemyTargetModel enemyTargetModel) { _enemyTargetModel = enemyTargetModel; _hp = EnemyTargetModel.Hp; _maxHp = _hp; EnemyTargetDamageService.EnemyTargetHpChangeEvent += (hp) => { _hp = hp; if (hp == 0) { EnemyTargetDeadBeforeEvent(this); GameObject.Destroy(this.gameObject); EnemyTargetDeadAfterEvent(); } }; }