Example #1
0
        private void Bind()
        {
            // attack phase になった時の画面表示
            _phaseProvider.OnPhaseChanged()
            .Where(phase => phase == GamePhase.Attack)
            .Subscribe(_ =>
            {
                _index = 1;
                _targetUseCase.Target(_index);
                _screen.Open();
            })
            .AddTo(_disposable);

            // ターン変更時のキャラクター更新
            _turnCharacter.OnTurnCharacterChanged()
            .Subscribe(character =>
            {
                _attacker.Dispose();
                _attacker = character.OnDirectionChanged()
                            .Where(_ => _phaseProvider.OnPhaseChanged().Value == GamePhase.Attack)
                            .Subscribe(_ => _targetUseCase.Target(_index));
            }).AddTo(_disposable);

            // ターゲット変更時のSubmitボタンの有効可否
            _targetSubmitter.TargetOnChanged()
            .Subscribe(targets => _screen.IsEmitable(targets.Count != 0))
            .AddTo(_disposable);
        }
Example #2
0
        // 攻撃範囲の敵キャラクター取得
        public void Target(int skillIndex)
        {
            var attacker = _turnCharacter.OnTurnCharacterChanged().Value;

            _stageModel.TargetReset();

            var targets = _stageModel.TargetCharacterIds(attacker, skillIndex)
                          .Select(id => attacker.Owner == Owner.CPU
                    ? _residueCharacter.GetCharacter(id)
                    : _residueEnemy.GetCharacter(id))
                          .Where(character => character != null)
                          .ToList();

            _targetRegister.SetTargets(targets);
        }
Example #3
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);
        }
Example #4
0
 public void Initialize()
 {
     _turnCharacter.OnTurnCharacterChanged()
     .Subscribe(character =>
     {
         _currentDisposable.Dispose();
         _currentDisposable = character.Position()
                              .Subscribe(pos => _camera.transform.position = pos + Offset);
     })
     .AddTo(_disposable);
 }
Example #5
0
        private void Bind()
        {
            _phaseProvider.OnPhaseChanged()
            .Where(phase => phase == GamePhase.OutGame)
            .Subscribe(_ => _screen.Open())
            .AddTo(_disposable);
            _moveLoadRegister.OnLoadChanged()
            .ObserveCountChanged()
            .Subscribe(count => _screen.IsMovable(count != 0));

            _turnCharacter.OnTurnCharacterChanged()
            .Subscribe(CharacterEvents).AddTo(_disposable);
        }
Example #6
0
        public void Initialize()
        {
            var entity = _characterView.GetEntity();

            _character.Initialize(entity.Id, entity, entity.SkillEntities, entity.Owner);
            _residueCharacter.AddCharacter(_character);


            _moveLoadProvider.OnLoadSubmit()
            .Where(_ => _characterView.GetEntity() == _turnCharacter.OnTurnCharacterChanged().Value.CharacterEntity)
            .Subscribe(OnMove).AddTo(_disposable);


            _phaseProvider.OnPhaseChanged()
            .Where(phase => phase == GamePhase.Damage)
            .Where(_ => _character == _turnCharacter.OnTurnCharacterChanged().Value)
            .Subscribe(_ =>
            {
                _characterView.OnAnimation(_currentSkill.OnSkillChanged().Value.AnimationState);
                _characterView.OnAnimationEnded()
                .Take(1)
                .Subscribe(animation =>
                {
                    _damagePhaseFinalizer.EmitDamage();
                });
            }).AddTo(_disposable);
            _character.OnDirectionChanged()
            .Subscribe(_characterView.SetRotation).AddTo(_disposable);
            _character.Position()
            .Subscribe(_characterView.SetPosition)
            .AddTo(_disposable);
            _character.OnHpChanged()
            .Do(_ => _characterView.OnAnimation(AnimationState.Attacked))
            .Where(hp => hp <= 0)
            .Subscribe(_ => _characterView.OnDead())
            .AddTo(_disposable);
        }
Example #7
0
 public void Initialize()
 {
     _moveLoadProvider.OnLoadSubmit()
     .Where(_ => _characterView.GetEntity() == _turnCharacter.OnTurnCharacterChanged().Value.CharacterEntity)
     .Subscribe(OnMove).AddTo(_disposable);
 }
Example #8
0
 public void SelectSkillIndex(int index)
 {
     _currentSkill.OnSkillSet(_turnCharacter.OnTurnCharacterChanged().Value.Skill(index));
 }
Example #9
0
        public void Initialize()
        {
            var entity = _characterView.GetEntity();

            _character.Initialize(entity.Id, entity, entity.SkillEntities, entity.Owner);
            _enemyRegister.AddEnemy(_character);

            // 移動アニメーション
            _moveLoadProvider.OnLoadSubmit()
            .Where(_ => _characterView.GetEntity() == _turnCharacter.OnTurnCharacterChanged().Value.CharacterEntity)
            .Subscribe(OnMove).AddTo(_disposable);

            _phaseProvider.OnPhaseChanged()
            .Where(phase => phase == GamePhase.Damage)
            .Where(_ => _character == _turnCharacter.OnTurnCharacterChanged().Value)
            .Subscribe(_ =>
            {
                _characterView.OnAnimation(_currentSkill.OnSkillChanged().Value.AnimationState);
                _characterView.OnAnimationEnded()
                .Take(1)
                .Subscribe(animation =>
                {
                    _damagePhaseFinalizer.EmitDamage();
                });
            }).AddTo(_disposable);

            _character.OnDirectionChanged()
            .Subscribe(_characterView.SetRotation).AddTo(_disposable);
            _character.Position()
            .Subscribe(_characterView.SetPosition)
            .AddTo(_disposable);
            _character.OnHpChanged()
            .Where(hp => hp <= 0)
            .Subscribe(_ => _characterView.OnDead())
            .AddTo(_disposable);

            _phaseProvider.OnPhaseChanged()
            .Where(phase => phase == GamePhase.Move)
            .Where(_ => _character == _turnCharacter.OnTurnCharacterChanged().Value)
            .Subscribe(_ =>
            {
                var load          = _cpuUseCase.CpuMove();
                var panelEntities = load.ToList();
                if (panelEntities.Any())
                {
                    _cpuUseCase.MoveCharacter(panelEntities);
                }
                else
                {
                    _phaseRegister.SkipAttack();
                }
            })
            .AddTo(_disposable);

            _phaseProvider.OnPhaseChanged()
            .Where(phase => phase == GamePhase.Attack)
            .Where(_ => _character == _turnCharacter.OnTurnCharacterChanged().Value)
            .Subscribe(_ =>
            {
                if (!_cpuUseCase.CpuAttack())
                {
                    _phaseRegister.SkipAttack();
                }
            })
            .AddTo(_disposable);
        }