private void CheckHostileMissions() { var hostileMissions = ObjectContainer.Instance.Missions.Where(m => m.MovementType == MovementType.Hostile).ToList(); if (!hostileMissions.Any()) { return; } foreach (var mission in hostileMissions) { if (WorkerQueueActionRunner.ExecutionQueue.All(a => a.ActionId != mission.MissionId)) { WorkerQueueActionRunner.QueueAction(new TimeExecutionAction(mission.MissionId, ActionTarget.FleetSave) { Action = async() => { var fleetSaveMission = await OGameFleetSender.SaveFleet(Client, mission.DestinationId ?? 0); if (fleetSaveMission != null) { WorkerQueueActionRunner.QueueAction(new TimeExecutionAction(ActionTarget.ReturnFleet) { Action = async() => { await SafeHttpTask(() => Client.ReturnMission(fleetSaveMission)); }, ExecutionTime = DateTime.Now.AddMinutes(10) }); } else { throw new Exception("Utworzenie misji fleetSave nie powiodło się"); } }, ExecutionTime = mission.ArrivalTime.AddMinutes(-5) }); } } }
public MainWindowViewModel(OGameHttpClient client) : base(client) { ResourcesViewModel = new ResourcesViewModel(client); TopBarViewModel = new TopBarViewModel(ResourcesViewModel); GalaxyViewModel = new GalaxyViewModel(client); Observable.Interval(TimeSpan.FromMinutes(5)) .SubscribeOnDispatcher() .DelayTask(() => TimeSpan.FromMinutes(Random.Next(10, 20))) .Select(i => SafeHttpTask(() => RefreshObjectContainerTask(false))) .Subscribe(); Observable.Interval(TimeSpan.FromMinutes(1)) .SubscribeOnDispatcher() .Where(i => WorkerQueueActionRunner.ExecutionQueue.Any()) .Subscribe(token => { WorkerQueueActionRunner.CheckQueue(); }); Init(); }