コード例 #1
0
    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);
        }
    }
コード例 #2
0
    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();
            }
        };
    }