private void Present() { // Enemy Model -> Views // 敵の名前をViewに表示する _enemyView.DisplayName(_enemy.Name); // 敵の姿をViewに表示する _enemyView.DisplayFigure(_enemy.Figure); // 敵のHPをViewに表示する _enemy.CurrentHitPoint .Subscribe(_enemyView.DisplayHp) .AddTo(_compositeDisposable); // 敵が攻撃を受けたことをViewに通知する _enemy.OnDamagedAsObservable() .Subscribe(damagedPoint => _enemyView.DisplayDamaged(damagedPoint)) .AddTo(_compositeDisposable); // 敵が殺されたことをViewに通知する _enemy.OnDiedAsObservable() .Subscribe(attackerName => _enemyView.DisplayDied(attackerName)) .AddTo(_compositeDisposable); // Player Model -> Views // プレイヤーの名前をViewに表示する _playerView.DisplayName(_player.Name); // プレイヤーの姿をViewに表示する _playerView.DisplayFigure(_player.Figure); // プレイヤーのHPをViewに表示する _player.CurrentHitPoint .Subscribe(_playerView.DisplayHp) .AddTo(_compositeDisposable); // プレイヤーが攻撃されたことをViewに通知する _player.OnDamagedAsObservable() .Subscribe(damagedPoint => _playerView.DisplayDamaged(damagedPoint)) .AddTo(_compositeDisposable); // プレイヤーが死んだことをViewに通知する _player.OnDiedAsObservable() .Subscribe(attackerName => _playerView.DisplayDied(attackerName)) .AddTo(_compositeDisposable); // プレイヤーが回復したことをViewに通知する _player.OnHealedAsObservable() .Subscribe(healedPoint => _playerView.DisplayHealed(healedPoint)) .AddTo(_compositeDisposable); // Enemy View -> Models // 敵が攻撃したことをModelに通知する _enemyView.OnAttackTriggerAsObservable() .Subscribe(attackerName => _player.TakeDamage(attackerName, _enemy.AttackPower)) .AddTo(_compositeDisposable); // Player View -> Models // プレイヤーが攻撃したことを通知する _playerView.OnAttackTriggerAsObservable() .Subscribe(attackerName => _enemy.TakeDamage(attackerName, _player.AttackPower)) .AddTo(_compositeDisposable); // プレイヤーが回復魔法を唱えたことを通知する _playerView.OnHealTriggerAsObservable() .Subscribe(_ => _player.Heal(_player.HealPower)) .AddTo(_compositeDisposable); // 今回は一時的にここでBGM再生処理を行う _bgmPlayer.Play(); }