コード例 #1
0
        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)
                    });
                }
            }
        }
コード例 #2
0
        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();
        }