/// <summary> /// タイムラインスケジュールから対象バトラーを削除する /// </summary> /// <returns></returns> public AsyncSubject <Unit> TimelineScheduleRemove() { AsyncSubject <Unit> subject = new AsyncSubject <Unit>(); List <int> deleteIds = new List <int>(); _timelineData.ForEach(x => { if (BattlerDictionary.IsDeadByUniqId(x.uniqId)) { deleteIds.AddRange(_timelineSchedule.FindAll(id => id == x.id)); _timelineSchedule.RemoveAll(id => id == x.id); } }); if (deleteIds.Count != 0) { _timelineView.RemoveSchedule(deleteIds).Subscribe(_ => { FillTimelines().Subscribe(__ => { subject.OnNext(Unit.Default); subject.OnCompleted(); }); }); } else { ObservableUtils.AsyncSubjectTimeZeroCompleted(subject); } return(subject); /* * AsyncSubject<Unit> subject = new AsyncSubject<Unit>(); * if (battlers.Count != 0) * { * List<int> deleteIds = new List<int>(); * battlers.ForEach(battler => * { * var timeline = _timelineData.Find(x => BattlerDictionary.GetBattlerForUniqId(x.uniqId) == battler); * if (timeline != null) * { * deleteIds.Add(timeline.id); * _timelineSchedule.RemoveAll(x => x == timeline.id); * } * }); * * if (deleteIds.Count != 0) * { * _timelineView.RemoveSchedule(deleteIds).Subscribe(_ => * { * FillTimelines().Subscribe(__ => * { * subject.OnNext(Unit.Default); * subject.OnCompleted(); * }); * }); * } * else * ObservableUtils.AsyncSubjectTimeZeroCompleted(subject); * } * else * ObservableUtils.AsyncSubjectTimeZeroCompleted(subject); * * return subject; */ }