Esempio n. 1
0
 public void EmitDamage()
 {
     foreach (var character in _targets)
     {
         character.EmitDamage(_damageProvider.OnDamageChanged().Value);
     }
 }
Esempio n. 2
0
        public void Initialize()
        {
            // StandBy phase to Move phase
            _turnCharacter.OnTurnCharacterChanged()
            .Subscribe(_ => _phaseRegister.OnNextPhase())
            .AddTo(_disposable);

            // Move phase to Attack phase
            _moveHandler.OnMoveEvent()
            .Subscribe(_ => _phaseRegister.OnNextPhase())
            .AddTo(_disposable);

            // Attack phase to Dice phase
            _skillModel.OnSkillSubmit()
            .Subscribe(_ => _phaseRegister.OnNextPhase())
            .AddTo(_disposable);

            // Dice phase to Damage phase
            _damageProvider.OnDamageChanged()
            .Subscribe(_ => _phaseRegister.OnNextPhase())
            .AddTo(_disposable);

            // Damage phase to End phase
            _targetProvider.OnTargetCharacters()
            .Subscribe(targets =>
            {
                _targets.Dispose();
                var stream = targets.Select(c => c.OnHpChanged()).Merge();
                _targets   = stream
                             .Buffer(stream.Throttle(TimeSpan.FromMilliseconds(100)))
                             .Subscribe(_ => _phaseRegister.OnNextPhase());
            })
            .AddTo(_disposable);
        }