public void Initialize() { _Process = _FirstProcess; _AttackProcesser.Initialize(); _MoveProcesser.Initialize(); _AttackProcesser.CompleteAsObservable() .Zip(_MoveProcesser.CompleteAsObservable(), (l, r) => r) .First() .Subscribe(_ => _CompleteObserver.OnNext(Unit.Default)); }
public EnemyActionProcesser(Enemy enemy, EnemyActionData data) { _Enemy = enemy; _Data = data; if (data.AttackData.Count() == 0) { _AttackProcesser = new NullAttackProcesser(); } else { _AttackProcesser = new EnemyAttackProcesser(data.AttackData, enemy); } _MoveProcesser = new EnemyMoveProcesser(enemy, data.MoveData); _CompleteObserver = new Subject <Unit> (); _AttackProcesser.CompleteAsObservable() .Zip(_MoveProcesser.CompleteAsObservable(), (l, r) => r) .First() .Subscribe(_ => _CompleteObserver.OnNext(Unit.Default)); _CompleteObserver.Subscribe(_ => _Process = _FirstProcess); _Process = _FirstProcess; }