Esempio n. 1
0
 protected virtual void OnGameStatusChanged()
 {
     if (GameStatusChanged != null)
     {
         GameStatusChanged.Invoke();
     }
 }
 public void SetGameStatus(GameStatus status)
 {
     if (status != gameStatus)
     {
         Debug.Log("Set game status " + status);
         gameStatus = status;
         GameStatusChanged?.Invoke(status);
     }
 }
Esempio n. 3
0
        private void Watcher_Changed(object sender, FileSystemEventArgs e)
        {
            using (var reader = new StreamReader(_file.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite)))
            {
                while (!reader.EndOfStream)
                {
                    var json = reader.ReadToEnd();

                    if (String.IsNullOrEmpty(json))
                    {
                        continue;
                    }

                    GameStatusChanged?.Invoke(json);
                }
            }
        }
Esempio n. 4
0
 public void ChangeGameStatus(GameStatus newGameStatus)
 {
     CurrentGameStatus = newGameStatus;
     GameStatusChanged?.Invoke(this, newGameStatus);
 }
Esempio n. 5
0
 private void OnGameStatusChanged(Status newStatus)
 {
     Debug.Log($"Game Status changed: {GameStatus}");
     GameStatusChanged?.Invoke(newStatus);
 }
 public void OnLose(GameStatusChanged method)
 {
     this.OnLoseEvent += method;
 }
Esempio n. 7
0
        public async void StartWorkAsync()
        {
            IsWork = true;

            var screenShotCreator = new GwentWindowScreenShotCreator();
            var cv            = new OpenCvGwentStateChecker(screenShotCreator);
            var inputEmulator = new AutoitInputDeviceEmulator();   //脚本输入模拟

            var pageFactory = new PageObjectFactory();

            LogText = new StringBuilder();

            await Task.Run(() =>
            {
                LogText.Append($"{DateTime.Now.ToString("s")}:  Start Work");
                GameStatusChanged?.Invoke(LogText.ToString());
                while (IsWork)
                {
                    try
                    {
                        if (screenShotCreator.IsGameWindowFullVisible())
                        {
                            // 页面监测 是否长时间未变化
                            if (PageObject.IsPagesTooLongNotChanged())
                            {
                                if (GwentProcessStarter.CloseProcess())
                                {
                                    GwentProcessStarter.StartProcess();
                                }
                            }

                            if (cv.GetCurrentGlobalGameStates() !=
                                GlobalGameStates.GameModesTab)
                            {
                                pageFactory.CheckAndClearGlobalMessageBoxes();

                                pageFactory
                                .CheckAndClearOpponentSurrenderedMessageBox();

                                pageFactory
                                .CheckAndClearGameSessionExceptionMessageBoxes();

                                var gameSess = cv.GetCurrentGameSessionStates();
                                GameStatusChanged?.Invoke(gameSess.ToString());

                                if (gameSess != GameSessionStates.Unknown)
                                {
                                    if (gameSess == GameSessionStates.MatchResultsScreen ||
                                        gameSess == GameSessionStates.MatchRewardsScreen)
                                    {
                                        new MatchResultsRewardsScreenPage(cv, new DefaultWaitingService(), inputEmulator,
                                                                          new Game(new Deck(""), new User("")))
                                        .ClosePageStatistics();
                                    }
                                    else
                                    {
                                        new GameSessionPage(cv, new DefaultWaitingService(), inputEmulator,
                                                            new Game(new Deck(""), new User("")))
                                        .GiveUp()
                                        .ClosePageStatistics();
                                    }
                                }
                                pageFactory.StartGame()?.GotoGameModesPage();
                            }

                            var gameModes = new GameModesPage(cv, new DefaultWaitingService(), inputEmulator)
                                            .GotoSeasonalGameMode()
                                            .EndMulligan()
                                            .GiveUp()
                                            .ClosePageStatistics();
                        }
                        else
                        {
                            if (GwentProcessStarter.WindowExists() == false)
                            {
                                GwentProcessStarter.StartProcess();
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        GameStatusChanged?.Invoke(e.Message);
                        if (!e.Message.Contains("This is not a page")) //Это не страница
                        {
                            logger.Error(e.Message + e.StackTrace);
                        }
                    }
                }
                LogText.Append($"{DateTime.Now.ToString("s")}:  Stop Work");
                GameStatusChanged?.Invoke(LogText.ToString());
            });
        }