/// <summary> /// On click, resets character to null, removes player from server, stops NetClient, and takes user back to main menu /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void leaveGame_Click(object sender, EventArgs e) { _timer.Stop(); NetworkClasses.UpdateCharacter(User.PlayerId, null); NetworkClasses.FindRemovePlayer(Client.Conn, User.PlayerId); Client.ClientStop(); var form = new MainMenuForm(); form.Show(); Dispose(); }
/// <summary> /// Checks if user is closing the application, clsoes accordingly /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void PlayerLobby_Closing(object sender, FormClosingEventArgs e) { if (e.CloseReason != CloseReason.UserClosing) { return; } _timer.Stop(); Dispose(); NetworkClasses.UpdateCharacter(User.PlayerId, null); NetworkClasses.FindRemovePlayer(Client.Conn, User.PlayerId); Client.ClientStop(); Environment.Exit(0); }
/// <summary> /// On click, resets character to null, removes player from server, stops NetClient, and takes user back to main menu /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void leaveGame_Click(object sender, EventArgs e) { _timer.Stop(); NetworkClasses.UpdateUserValue("User_List", "_Character", null, User.PlayerId); NetworkClasses.UpdateUserValue("User_List", "Online", "Online", User.PlayerId); NetworkClasses.FindRemovePlayer(Client.Conn, User.PlayerId); Client.ClientStop(); Form form = new MainMenuForm(); form.Show(); _chat.Dispose(); if (!_profile.IsDisposed) { _profile.Dispose(); } Dispose(); }
/// <summary> /// Checks if user is closing the application, clsoes accordingly /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void PlayerLobby_Closing(object sender, FormClosingEventArgs e) { if (e.CloseReason != CloseReason.UserClosing) { return; } _timer.Stop(); _chat.Dispose(); if (!_profile.IsDisposed) { _profile.Dispose(); } Dispose(); NetworkClasses.UpdateUserValue("User_List", "_Character", null, User.PlayerId); NetworkClasses.UpdateUserValue("User_List", "Online", "Offline", User.PlayerId); NetworkClasses.FindRemovePlayer(Client.Conn, User.PlayerId); Client.ClientStop(); Environment.Exit(0); }
/// <summary> /// Updates the list of players with the current information about the server via the database /// </summary> private void UpdateList() { var done = true; try { //Gets server info and places it into a dataset var ds = NetworkClasses.GetServer(Client.Conn); //Checks if game has started if (ds.Tables[0].Rows[0]["Status"].ToString() == "In Progress") { NetworkClasses.UpdateUserValue("User_List", "Online", "In Game", User.PlayerId); //MainMenuForm form = new MainMenuForm(); //form.Show(); //_chat.Dispose(); if (!_profile.IsDisposed) { _profile.Dispose(); } _timer.Stop(); _gameTimer.Start(); Hide(); return; } var currentNumPlayers = NetworkClasses.GetNumPlayers(int.Parse(ds.Tables[0].Rows[0]["Server_ID"].ToString())); if (_players.Count == currentNumPlayers && _players.Count >= 1) { //Check if characters have changed var newPlayerChars = new List <DataSet> { NetworkClasses.GetPlayer(int.Parse(ds.Tables[0].Rows[0]["Host"].ToString())) }; for (var i = 2; i <= 6; i++) { if (!string.IsNullOrEmpty(ds.Tables[0].Rows[0]["Player_" + i].ToString())) { newPlayerChars.Add( NetworkClasses.GetPlayer(int.Parse(ds.Tables[0].Rows[0]["Player_" + i].ToString()))); } } for (var i = 0; i < newPlayerChars.Count; i++) { if (_players[i].Tables[0].Rows[0]["_Character"].ToString() != newPlayerChars[i].Tables[0].Rows[0]["_Character"].ToString()) { done = false; break; } } if (done) { return; } } //Updating _players.Clear(); playerList.Items.Clear(); var row = ds.Tables[0].Rows[0]; var grabber = NetworkClasses.GetPlayer(int.Parse(row["Host"].ToString())); _players.Add(grabber); var Character = ""; //Host var listItem = new ListViewItem(grabber.Tables[0].Rows[0]["Username"].ToString()); Character = grabber.Tables[0].Rows[0]["_Character"].ToString(); listItem.SubItems.Add(Character); //Add the row entry to the listview playerList.Items.Add(listItem); for (var i = 2; i <= 6; i++) { if (!string.IsNullOrEmpty(row["Player_" + i].ToString())) { grabber = NetworkClasses.GetPlayer(int.Parse(row["Player_" + i].ToString())); _players.Add(grabber); listItem = new ListViewItem(grabber.Tables[0].Rows[0]["Username"].ToString()); Character = grabber.Tables[0].Rows[0]["_Character"].ToString(); listItem.SubItems.Add(Character); playerList.Items.Add(listItem); } } } catch (Exception e) //Thrown if server no longer exists { Console.WriteLine(e); //If the host leaves, the server no longer exists and the removing the player will throw an exception try { NetworkClasses.FindRemovePlayer(Client.Conn, User.PlayerId); } catch (Exception ex) { Console.WriteLine(ex); } _chat.Dispose(); Form form = new MainMenuForm(); form.Show(); _timer.Stop(); Client.ClientStop(); NetworkClasses.UpdateUserValue("User_List", "_Character", null, User.PlayerId); NetworkClasses.UpdateUserValue("User_List", "Online", "Online", User.PlayerId); Dispose(); MessageBox.Show("Host left the game", "Server Disconnected", MessageBoxButtons.OK, MessageBoxIcon.Error); } }