/// <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; } } } }
/// <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); } }