示例#1
0
 public async Task StopAsync()
 {
     await Task.WhenAll(
         BadFilterReportModel.StopAsync(),
         BackgroundEvent.StopAsync(),
         FiltersEvent.StopAsync());
 }
示例#2
0
        public void Background(Token keyword, Token name)
        {
            var scenario = new Scenario(name.Content, file, currentFeature, keyword.LineInFile.Line);

            currentScenario = scenario;
            events.Enqueue(new BackgroundEvent(currentScenario, e => BackgroundEvent.Invoke(this, new EventArgs <Scenario>(scenario))));
        }
示例#3
0
        private void StyleButton_Click(object sender, RoutedEventArgs e)
        {
            if (!(e.Source is Button srcButton))
            {
                return;
            }
            var name = srcButton.Name;

            if (name == "ChangeBg")
            {
                BackgroundEvent.Restart();
                return;
            }
            if (name == "ThemeBtn")
            {
                var res = MessageBox.Show(
                    "При смене темы могут возникнуть \"артефакты\".\nРекомендую перезапустить приложение.",
                    "Внимание", MessageBoxButton.OKCancel, MessageBoxImage.Warning);
                if (Settings.Program.Configure.Theme == Themes.Dark)
                {
                    if (res == MessageBoxResult.OK)
                    {
                        ThemeChange(Themes.Light);
                    }
                }
                else
                {
                    if (res == MessageBoxResult.OK)
                    {
                        ThemeChange(Themes.Dark);
                    }
                }
            }
        }
示例#4
0
 public async Task <bool> SaveBeaconEventState(string pid, BeaconEventType enter)
 {
     LastEventState[pid] = new BackgroundEvent()
     {
         BeaconId = pid, EventTime = DateTimeOffset.Now, LastEvent = enter
     };
     return(true);
 }
示例#5
0
 public void Run()
 {
     ServerEvents.Connected    += GameDataEvent_Connected;
     ServerEvents.Disconnected += GameDataEvent_Disconnected;
     GameView.Run();
     GameModel.Start(ServerEvents, FiltersEvent,
                     $"{Settings.Program.Directories.Temp}/GameData.json",
                     $"{Settings.Program.Directories.Temp}/NewsData.json");
     BackgroundEvent.Start();
 }
示例#6
0
        private bool IsValidEnterEvent(BackgroundEvent history, Beacon beacon, int outOfRangeDb)
        {
            if (history == null)
            {
                return(true);
            }

            if (!SuppressBurst)
            {
                return(history.LastEvent == BeaconEventType.Exit || !IsOutOfRange(outOfRangeDb, beacon) && history.EventTime.AddMilliseconds(AppSettings.BeaconExitTimeout) < DateTimeOffset.Now);
            }
            return(!IsOutOfRange(outOfRangeDb, beacon) && history.EventTime.AddMilliseconds(AppSettings.BeaconExitTimeout) < DateTimeOffset.Now);
        }
示例#7
0
        public void TestEventStateStorage()
        {
            string s = FileStorageHelper.BeaconEventStateToString("1", BeaconEventType.Enter, DateTimeOffset.Parse("2015-04-16T14:00:00.000+0000"));

            Assert.AreEqual("1,1,1429192800000", s);

            BackgroundEvent be = FileStorageHelper.BeaconEventStateFromString(s);

            Assert.AreEqual("1", be.BeaconId);
            Assert.AreEqual(DateTimeOffset.Parse("2015-04-16T14:00:00.000+0000"), be.EventTime);
            Assert.AreEqual(BeaconEventType.Enter, be.LastEvent);
            Assert.IsNull(FileStorageHelper.BeaconEventStateFromString(""));
            Assert.IsNull(FileStorageHelper.BeaconEventStateFromString(null));
        }
示例#8
0
        /// <summary>
        /// Generates BeaconArgs from beacon events.
        /// For instance if a beacon is seen for the first time, BeaconArgs with enter type is generated.
        /// </summary>
        private async Task AddBeaconsToBeaconArgsAsync(int outOfRangeDb)
        {
            Logger.Trace("AddBeaconsToBeaconArgsAsync");
            foreach (var beacon in Beacons)
            {
                BackgroundEvent history = await ServiceManager.StorageService.GetLastEventStateForBeacon(beacon.Pid);

                if (IsValidEnterEvent(history, beacon, outOfRangeDb))
                {
                    // No history for this beacon. Let's save it and add it to event args array for solving.
                    AddBeaconArgs(beacon, BeaconEventType.Enter);
                    await ServiceManager.StorageService.SaveBeaconEventState(beacon.Pid, BeaconEventType.Enter);
                }
                else if (history.LastEvent == BeaconEventType.Enter)
                {
                    if (IsOutOfRange(outOfRangeDb, beacon))
                    {
                        // Exit event
                        AddBeaconArgs(beacon, BeaconEventType.Exit);
                        await ServiceManager.StorageService.SaveBeaconEventState(beacon.Pid, BeaconEventType.Exit);
                    }
                }
            }
        }
示例#9
0
        public static EventBase Parse(string s)
        {
            var        parts = s.Split(Constants.Splitter.Comma);
            EventTypes etype;
            EventBase  result;

            if (Enum.TryParse(parts[0], out etype))
            {
                var path = "";
                if (parts.Length > 3)
                {
                    path = parts[3].Trim('\"');
                }
                switch (etype)
                {
                case (EventTypes.Sprite):
                    result = new SpriteEvent(path,
                                             (EventLayer)Enum.Parse(typeof(EventLayer), parts[1]),
                                             (Origin)Enum.Parse(typeof(Origin), parts[2]), float.Parse(parts[4], Constants.IO.CULTUREINFO), float.Parse(parts[5], Constants.IO.CULTUREINFO));
                    break;

                case (EventTypes.Animation):
                    Looptypes lt;
                    result = new AnimationEvent(path,
                                                int.Parse(parts[6]), int.Parse(parts[7]), (EventLayer)Enum.Parse(typeof(EventLayer), parts[1]), (Origin)Enum.Parse(typeof(Origin), parts[2]), float.Parse(parts[4], Constants.IO.CULTUREINFO), float.Parse(parts[5], Constants.IO.CULTUREINFO), Enum.TryParse(parts[8], out lt) ? lt : Looptypes.LoopForever);
                    break;

                case (EventTypes.Sample):
                    result = new SampleEvent(parts[3], int.Parse(parts[1]),
                                             int.Parse(parts[4]), (EventLayer)int.Parse(parts[2]));
                    break;

                case (EventTypes.Background):
                    result = new BackgroundEvent(int.Parse(parts[1]), parts[2].Trim('"'),
                                                 parts.Length > 3 ? int.Parse(parts[3]) : 0, parts.Length > 4 ? int.Parse(parts[4]) : 0);
                    break;

                case (EventTypes.Video):
                    result = new VideoEvent(int.Parse(parts[1]), parts[2].Trim('"'));
                    break;

                case (EventTypes.Break):
                    result = new BreakEvent(int.Parse(parts[1]), int.Parse(parts[2]));
                    break;

                case (EventTypes.Backgroundcolor):
                    result = new BackgroundColorEvent(int.Parse(parts[1]), int.Parse(parts[2]), int.Parse(parts[3]),
                                                      int.Parse(parts[4]));
                    break;

                default:
                    result = new UndefinedEvent(parts);
                    break;
                }
            }
            else
            {
                result = new UndefinedEvent(parts);
            }
            return(result);
            //0,0,"JamesHa.jpg",0,0 //image
            //Video,4655,"Jmmxp.avi" //video
            //2,110843,118365 //break
            //3 //Backgroundcolor
        }