예제 #1
0
파일: AppForm.cs 프로젝트: lnl122/Solver2
 /// <summary>
 /// ивент на логон в игре
 /// </summary>
 private void mGameLogonClick(object sender, EventArgs e)
 {
     logonData = new Logon();
     if (!logonData.isSuccessful)
     {
         MessageBox.Show(strBadLogon);
     }
     else
     {
         var menu = Program.D.F.Menu.MenuItems[0].MenuItems;
         foreach (MenuItem m1 in menu)
         {
             if (m1.Text == mtGameLogon)
             {
                 m1.Enabled = false;
             }
             if (m1.Text == mtGameSelect)
             {
                 m1.Enabled = true;
             }
         }
     }
 }
예제 #2
0
        /// <summary>
        /// получаем список игр МШ текущего игрока
        /// выход - список спиков из урл, номера, названия игр
        /// </summary>
        /// <param name="logonData">ид логона</param>
        public GameSelect(Logon logonData)
        {
            // перенесем авторизацию
            username = logonData.username;
            password = logonData.password;
            userid   = logonData.userid;

            isSuccessful = true;
            string pageSource = GetUserGames();

            if (isSuccessful == false)
            {
                MessageBox.Show("Не удалось прочитать список игр, подробная причина указана в логе..");
                return;
            }
            List <string>         DirtyList = GetDirtyListGames(pageSource);
            List <List <string> > res       = GetCleanListGames(DirtyList);
            // в res сейчас перечень игр или пусто. Необходимо пользователю сделать выбор.

            // форма для ввода данных, создаем
            Form SelectGame = CreateForm(res);

            // выберем игру
            string page = "";
            bool   fl   = true;

            while (fl)
            {
                if (SelectGame.ShowDialog() == DialogResult.OK)
                {
                    isSuccessful = true;
                    GetDomainAndIdGame(tbGname.Text);
                    if (isSuccessful == false)
                    {
                        continue;
                    }

                    // если авторизовались успешно - запоминаем игру
                    string ps2 = Engine.Logon("http://" + gamedomain + "/Login.aspx", username, password);
                    if (ps2.IndexOf("action=logout") != -1)
                    {
                        // прочесть игру и узнать её параметры
                        string ps5 = GetAndParseGamePage(gamedomain, gameid);
                        GetGameType(ps5);
                        if (!isBrain)
                        {
                            isSuccessful = false; MessageBox.Show("Это не МШ.."); continue;
                        }

                        // *** потом убрать. заглушка для потенциальных линейных игр МШ
                        if (!isStorm)
                        {
                            isSuccessful = false; MessageBox.Show("Последовательность не штурмовая.."); continue;
                        }

                        // прочитаем игру
                        string game_url = "http://" + gamedomain + "/gameengines/encounter/play/" + gameid;
                        page = Engine.GetPage(game_url);
                        page = page.ToLower();
                        if (page.IndexOf("class=\"gamecongratulation\"") != -1)
                        {
                            isSuccessful = false; MessageBox.Show("Эта игра уже закончилась.."); continue;
                        }
                        if (page.IndexOf("<span id=\"animate\">поздравляем!!!</span>") != -1)
                        {
                            isSuccessful = false; MessageBox.Show("Эта игра уже закончилась.."); continue;
                        }
                        if (page.IndexOf("капитан команды не включил вас в состав для участия в этой игре.") != -1)
                        {
                            isSuccessful = false; MessageBox.Show("Капитан команды не включил вас в состав для участия в этой игре.."); continue;
                        }
                        if (page.IndexOf("<span id=\"panel_lblgameerror\">") != -1)
                        {
                            isSuccessful = false; MessageBox.Show("Эта игра ещё не началась.."); continue;
                        }
                        if (page.IndexOf("вход в игру произойдет автоматически") != -1)
                        {
                            isSuccessful = false; MessageBox.Show("Эта игра ещё не началась.."); continue;
                        }
                        if (page.IndexOf("ошибка. состав вашей команды превышает") != -1)
                        {
                            isSuccessful = false; MessageBox.Show("Состав вашей команды превышает установленный максимум.."); continue;
                        }

                        //определим количтсво уровней
                        gamelevels = GetLevelsCount(page);
                        if ((isStorm == true) && (gamelevels == 0))
                        {
                            isSuccessful = false; MessageBox.Show("Выходит что штурмовая последовательность с 0 уровнями, фигня.."); continue;
                        }

                        // поставим флаг выхода
                        fl = false;

                        // в лог
                        Log.Write("en.cx Открыта игра " + gameid);
                        // отобразим на форме
                        Program.D.F.Text = Program.D.F.Text + " / " + game_url;
                        isSuccessful     = true;
                    }
                    else
                    {
                        // если не успешно - вернемся в вводу пользователя
                        Log.Write("en.cx ERROR: Не удалось подключиться к " + gamedomain);
                        MessageBox.Show("Не удалось подключиться к " + gamedomain);
                        isSuccessful = false;
                    }
                }
                else
                {
                    // если отказались выбирать игру - выходим
                    fl           = false;
                    isSuccessful = false;
                }
            } // выход только если fl = false -- это или отказ польователя в диалоге, или если нажато ОК - проверка пройдена

            // смотрим на page - если не пусто - то подключились
            if (isSuccessful)
            {
                Engine.SetId(userid, username, password, gameid, gamedomain, gamelevels);
            }
        }