Exemplo n.º 1
0
        /// <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;
             */
        }