private void _OnComplete() { Debug.Log(_CurrentLoopCount); _Processers.Current.CompleteAsObservable() .First() .Subscribe(_ => { if (_Processers.MoveNext()) { _OnComplete(); return; } else if (_LoopCount - 1 > _CurrentLoopCount) { _CurrentLoopCount++; var array = new EnemyActionProcesser[_Data.Count()]; for (int i = 0; i < array.Length; i++) { array[i] = new EnemyActionProcesser(_Enemy, _Data.ElementAt(i)); } _Processers = array.AsEnumerable().GetEnumerator(); _Processers.MoveNext(); _OnComplete(); return; } else { _CompleteObserver.OnNext(Unit.Default); } }); }
public EnemyProcesserManager(Enemy enemy, IEnumerable <EnemyActionData> data) { _OnCompleteObserver = new Subject <Unit> (); var processerArray = new EnemyActionProcesser[data.Count()]; for (int i = 0; i < processerArray.Length; i++) { processerArray[i] = new EnemyActionProcesser(enemy, data.ElementAt(i)); } _Processers = processerArray.AsEnumerable().GetEnumerator(); _Processers.MoveNext(); _OnComplete(); }
public RepeatEnemyProcesserManager(int loopCount, Enemy enemy, IEnumerable <EnemyActionData> data) { if (loopCount < 0) { throw new InvalidOperationException("LoopCountの値は1以上に設定してください"); } _Enemy = enemy; _Data = data; _LoopCount = loopCount; var array = new EnemyActionProcesser[data.Count()]; for (int i = 0; i < array.Length; i++) { array[i] = new EnemyActionProcesser(enemy, data.ElementAt(i)); } _Processers = array.AsEnumerable().GetEnumerator(); _Processers.MoveNext(); _OnComplete(); }
private void _OnComplete() { _ProcesserEnumRator.Current.CompleteAsObservable() .First() .Subscribe(_ => { if (_ProcesserEnumRator.MoveNext()) { _OnComplete(); } else { var processerArray = new EnemyActionProcesser[_Data.Count()]; for (int i = 0; i < processerArray.Length; i++) { processerArray[i] = new EnemyActionProcesser(_Enemy, _Data.ElementAt(i)); } _Processer = processerArray.AsEnumerable(); _ProcesserEnumRator = _Processer.GetEnumerator(); _ProcesserEnumRator.MoveNext(); _OnComplete(); } }); }