internal AdmiralRankingPoints(Admiral rpAdmiral) { r_Owner = rpAdmiral; r_AdmiralID = rpAdmiral.ID; ApiService.SubscribeOnce("api_port/port", delegate { ReloadInitialRankingPoints(); PreviousUpdateDifference = new AdmiralRankingPointsDifference(this, AdmiralRankingPointsDifferenceType.PreviousUpdate); DayDifference = new AdmiralRankingPointsDifference(this, AdmiralRankingPointsDifferenceType.Day); MonthDifference = new AdmiralRankingPointsDifference(this, AdmiralRankingPointsDifferenceType.Month); Update(); var rNow = DateTimeOffset.Now; var rRankUpdateTime = rNow.ToOffset(TimeSpan.FromHours(7.0)).DateAsOffset(); var rDayTimeSpan = TimeSpan.FromDays(1.0); Observable.Timer(rRankUpdateTime.AddDays(1.0), rDayTimeSpan).Subscribe(delegate { PreviousUpdateDifference.Reload(); DayDifference.Reload(); OnPropertyChanged(nameof(PreviousUpdateDifference)); OnPropertyChanged(nameof(DayDifference)); }); rRankUpdateTime += TimeSpan.FromHours(12.0); if (DateTimeOffset.Now > rRankUpdateTime) { rRankUpdateTime += rDayTimeSpan; } Observable.Timer(rRankUpdateTime, rDayTimeSpan).Subscribe(delegate { PreviousUpdateDifference.Reload(); OnPropertyChanged(nameof(PreviousUpdateDifference)); }); var rNextStartTime = rNow.ToOffset(TimeSpan.FromHours(9.0)).StartOfNextMonth(); Observable.Timer(rNextStartTime.AddHours(8.0)).Subscribe(_ => FinalScore = null); Observable.Timer(rNextStartTime.AddHours(-2.0)).Subscribe(_ => FinalizeThisMonth()); Observable.Timer(rNextStartTime).Subscribe(delegate { PreviousUpdateDifference.Reload(); DayDifference.Reload(); MonthDifference.Reload(); OnPropertyChanged(nameof(PreviousUpdateDifference)); OnPropertyChanged(nameof(DayDifference)); OnPropertyChanged(nameof(MonthDifference)); IsFinalized = false; }); RecordService.Instance.Update += RecordService_Update; }); }
internal AdmiralRankingPoints(Admiral rpAdmiral) { r_Owner = rpAdmiral; r_AdmiralID = rpAdmiral.ID; ApiService.SubscribeOnce("api_port/port", delegate { ReloadInitialRankingPoints(); PreviousUpdateDifference = new AdmiralRankingPointsDifference(this, AdmiralRankingPointsDifferenceType.PreviousUpdate); DayDifference = new AdmiralRankingPointsDifference(this, AdmiralRankingPointsDifferenceType.Day); MonthDifference = new AdmiralRankingPointsDifference(this, AdmiralRankingPointsDifferenceType.Month); Update(); var rRankUpdateTime = new DateTimeOffset(DateTimeOffset.Now.Date, TimeSpan.FromHours(6.0)); var rDayTimeSpan = TimeSpan.FromDays(1.0); Observable.Timer(rRankUpdateTime.AddDays(1.0), rDayTimeSpan).Subscribe(delegate { PreviousUpdateDifference.Reload(); DayDifference.Reload(); OnPropertyChanged(nameof(PreviousUpdateDifference)); OnPropertyChanged(nameof(DayDifference)); }); rRankUpdateTime += TimeSpan.FromHours(12.0); if (DateTimeOffset.Now > rRankUpdateTime) { rRankUpdateTime += rDayTimeSpan; } Observable.Timer(rRankUpdateTime, rDayTimeSpan).Subscribe(delegate { PreviousUpdateDifference.Reload(); OnPropertyChanged(nameof(PreviousUpdateDifference)); }); var rNow = DateTimeOffset.Now; var rFinalizationTime = new DateTimeOffset(rNow.Year, rNow.Month, 1, 0, 0, 0, TimeSpan.FromHours(9.0)).AddMonths(1).AddHours(-2.0); if (rNow >= rFinalizationTime) { FinalizeThisMonth(); } else { Observable.Return(Unit.Default).Delay(rFinalizationTime).Subscribe(_ => FinalizeThisMonth()); } Observable.Return(Unit.Default).Delay(rFinalizationTime.AddHours(2.0)).Subscribe(_ => r_IsFinalized = false); RecordService.Instance.Update += RecordService_Update; }); }