public async Task StartAsync()
        {
            _webDriver.Url = _url;

            var selectElement    = _webDriver.FindElement(By.Name("example_length"));
            var selectDropButton = new SelectElement(selectElement);

            selectDropButton.SelectByValue("-1");

            var gamesinfo = _webDriver.FindElements(By.XPath(@"//tr[@role='row']//td[@class='dt-gametitle sorting_1']//a"));
            var gameUrls  = gamesinfo
                            .Select(t => t.GetAttribute("href"))
                            .ToArray();

            foreach (var gameurl in gameUrls)
            {
                _webDriver.Url = gameurl;

                var mainGameInfo = _webDriver.FindElements(By.XPath("//div[@class='full-story-content']/span")).FirstOrDefault().Text;

                if (mainGameInfo == null)
                {
                    throw new Exception("mainGameInfo was null, maybe cant get tags");
                }

                var gameInfoArray = mainGameInfo.Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);

                GameInfoModel gameInfoModel = new GameInfoModel
                {
                    Name        = _webDriver.FindElement(By.Id("news-title")).Text,
                    Rate        = _webDriver.FindElement(By.ClassName("rate")).Text,
                    Release     = gameInfoArray[0].Replace("▶Дата выпуска: ", string.Empty),
                    Developer   = gameInfoArray[1].Replace("▶ Разработчик, издатель: ", string.Empty),
                    Genre       = gameInfoArray[2].Replace("▶Жанр: ", string.Empty),
                    Platform    = gameInfoArray[3].Replace("▶Платформа: ", string.Empty),
                    Language    = gameInfoArray[4].Replace("▶Язык: ", string.Empty),
                    Description = gameInfoArray.Skip(6).Take(5).Aggregate(string.Empty, (t, k) => t + k)
                };

                OnGameReceived?.Invoke(this, new CooplandGameDataArgs {
                    Game = gameInfoModel
                });
            }
        }
        public override void ResponseReceived(string response)
        {
            JObject jObject;

            try
            {
                jObject = JObject.Parse(response);
            }
            catch (JsonReaderException)
            {
                return;
            }

            if (jObject["Solution"] == null)
            {
                OnGameReceived?.Invoke(this, response);
                return;
            }

            OnSolutionReceived?.Invoke(this, jObject["Solution"].ToString());
        }
Beispiel #3
0
        public override void ResponseReceived(string response)
        {
            response = response.TrimJasonEnd();
            JObject responseJason;

            try
            {
                responseJason = JObject.Parse(response);
            }
            catch (JsonReaderException e)
            {
                return;
            }

            if (responseJason.Property("Direction") != null)
            {
                JToken token = responseJason.Property("Direction").Value;
                UpdateRivalLocation(token.Value <string>());
                OnOpponentMoved?.Invoke(this, token.Value <string>());
                return;
            }

            OnGameReceived?.Invoke(this, response);
        }