private void Login() { //Check input isn't empty, else error message is shown if (usernameBox.TextLength > 0 && passwordBox.TextLength > 0) { //Sends input to login function, if input is good, sends user to main menu //Else error message is shown var result = NetworkClasses.Login(usernameBox.Lines[0], passwordBox.Lines[0], Helpers.GetLocalIpAddress()); if (result == "good" || result == "online") { NetworkClasses.UpdateUserValue("User_List", "Online", "Online", User.PlayerId); Form form = new MainMenuForm(); form.Show(); Dispose(); } else if (result == "pass" || result == "user") { MessageBox.Show("Invalid Username/Password", "Login error", MessageBoxButtons.OK, MessageBoxIcon.Error); } /*else if (result == "online") * { * MessageBox.Show("User already logged in", "Login error", MessageBoxButtons.OK, * MessageBoxIcon.Error); * }*/ } else { MessageBox.Show("Username and password cannot be blank.", "Login error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
/// <summary> /// On click, sends username,password, and IP to createUser function /// Also checks validity of username and password /// i.e. Can't be blank, must contain letters and numbers only, and username can't already exist /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void newUserButton_Click(object sender, EventArgs e) { errorLabel.Hide(); //Check that the inputs are not empty if (newUsername.TextLength > 0 && newPassword.TextLength > 0) { if (ContainsVaildChars(newUsername.Text) && ContainsVaildChars(newPassword.Text)) { var good = NetworkClasses.CreateUser(newUsername.Lines[0], newPassword.Lines[0], Helpers.GetLocalIpAddress()); if (good) { Form form = new LoginForm(); form.Show(); Dispose(); } else { errorLabel.Text = "Username already exists."; errorLabel.Show(); } } else { errorLabel.Text = "LETTERS AND NUMBERS ONLY"; errorLabel.Show(); } } else { errorLabel.Text = "Username/Password cannot be blank."; errorLabel.Show(); } }
private void passChange_Click(object sender, EventArgs e) { if (passChangeText.TextLength >= 5 && passChangeText.TextLength <= 20) { if (ContainsVaildChars(passChangeText.Text)) { if (NetworkClasses.UpdateUserValue("User_List", "Password", StringCipher.Encrypt(passChangeText.Text, "thomas").ToString(), User.PlayerId)) { MessageBox.Show("Password has been changed", "Password Updated", MessageBoxButtons.OK, MessageBoxIcon.Information); passChangeText.Text = ""; } else { MessageBox.Show("Something went wrong", "Password Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } else { MessageBox.Show("Password must contain only letters and numbers.", "Password Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } else { MessageBox.Show("Password must be between 5 and 20 characters.", "Password Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
private void banPlayer_Click(object sender, EventArgs e) { var n = -1; //Checks if user is admin if (NetworkClasses.GetPlayer(User.PlayerId).Tables[0].Rows[0]["IsAdmin"].ToString() == "1") { //Checks for empty textbox and if the value is an int if (banPlayerText.TextLength > 0 && int.TryParse(banPlayerText.Lines[0], out n)) { //Bans the selected player id if (NetworkClasses.BanPlayer(n)) { MessageBox.Show("Successfully Banned Player ID: " + banPlayerText.Lines[0], "Player Banned", MessageBoxButtons.OK, MessageBoxIcon.Information); banPlayerText.Lines[0] = ""; } else { MessageBox.Show("Invalid Player ID", "Ban Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } else { MessageBox.Show("Player ID must be numeric.", "Ban Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } else { MessageBox.Show("You are not an admin, contact an admin for privileges.", "Admin Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
private void spectateButton_Click(object sender, EventArgs e) { if (!spectateButton.Enabled) { return; } //Checks if user is banned if (NetworkClasses.GetPlayer(User.PlayerId).Tables[0].Rows[0]["IsBanned"].ToString() == "0") { //Connect as a spectator if (Client.Connect(false)) { try { NetworkClasses.UpdateUserValue("User_List", "Online", "Spectating", User.PlayerId); //TODO Start game? } catch (Exception exception) { Console.WriteLine(exception); } } else { Console.WriteLine("Couldn't Connect"); } } else { MessageBox.Show("Can't connect to game, you have been banned. Please contact administrator to lift ban.", "Join Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
/// <summary> /// On click, queries the database to check if user exsits, and input is correct /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void loginButton_Click(object sender, EventArgs e) { //Check input isn't empty, else error message is shown if (usernameBox.TextLength > 0 && passwordBox.TextLength > 0) { //Hide existing error label, if any errorLabel.Hide(); //Sends input to login function, if input is good, sends user to main menu //Else error message is shown if (NetworkClasses.Login(usernameBox.Lines[0], passwordBox.Lines[0], Helpers.GetLocalIpAddress())) { Form form = new MainMenuForm(); form.Show(); Dispose(); } else { errorLabel.Text = "Invalid Username/Password"; errorLabel.Show(); } } else { errorLabel.Text = "Username/Password cannot be blank."; errorLabel.Show(); } }
/// <summary> /// Once all players are ready, adds players to the Game controller and starts the game /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void start_game_Click(object sender, EventArgs e) { var ds = NetworkClasses.GetServer(User.PlayerId, User.LocalIp); var row = ds.Tables[0].Rows[0]; var grabber = NetworkClasses.GetPlayer(int.Parse(row["Host"].ToString())); //Host LobbyController.AddPlayer(int.Parse(grabber.Tables[0].Rows[0]["Player_ID"].ToString()), grabber.Tables[0].Rows[0]["_Character"].ToString()); for (var i = 2; i <= 6; i++) { if (string.IsNullOrEmpty(row["Player_" + i].ToString())) { continue; } grabber = NetworkClasses.GetPlayer(int.Parse(row["Player_" + i].ToString())); LobbyController.AddPlayer(int.Parse(grabber.Tables[0].Rows[0]["Player_ID"].ToString()), grabber.Tables[0].Rows[0]["_Character"].ToString()); } NetworkClasses.UpdateServerValue("Status", "In Progress", "Host", User.PlayerId); NetworkClasses.UpdateUserValue("User_List", "Online", "In Game", User.PlayerId); LobbyController.StartGame(); Host.StartGame(); _timer.Stop(); //_chat.Dispose(); _gameTimer.Start(); if (!_profile.IsDisposed) { _profile.Dispose(); } Hide(); //MainMenuForm waiter = new MainMenuForm(); //waiter.Show(); }
private void AddFriend() { if (username.Text.Length > 0) { if (ContainsVaildChars(username.Text)) { var status = NetworkClasses.AddFriend(username.Text); switch (status) { case "Done": username.Text = ""; Hide(); break; case "Nonexistant": MessageBox.Show("Username doesn't exist", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); break; case "Preexisting": MessageBox.Show("Already Friends with " + username.Text, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); break; } } else { MessageBox.Show("Username can only contian letters and numbers", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { MessageBox.Show("Please enter a username", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void nameChange_Click(object sender, EventArgs e) { if (nameChangeText.TextLength > 0 && nameChangeText.TextLength <= 20) { if (ContainsVaildChars(nameChangeText.Text)) { if (NetworkClasses.UpdateUserValue("User_List", "_Character", nameChangeText.Text, User.PlayerId)) { MessageBox.Show("Username has been changed to " + nameChangeText.Text + ".", "Username Updated", MessageBoxButtons.OK, MessageBoxIcon.Information); nameChangeText.Text = ""; } else { MessageBox.Show("Username is already taken.", "Username Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } else { MessageBox.Show("Username must contain only letters and numbers.", "Username Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } else { MessageBox.Show("Username must be between 1 and 20 characters.", "Username Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
/// <summary> /// Automatic update of the list of players and their characters every 1 seconds /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void timer_Tick(object sender, EventArgs e) { if (Host.Players.Count > 1) { start_game.Enabled = NetworkClasses.CheckReady(Host.Players); } UpdateList(); }
/// <summary> /// On click, starts the NetHost and takes user to the host lobby /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void HostButton_Click(object sender, EventArgs e) { Host.ServerStart(); NetworkClasses.UpdatePlayerStat(User.PlayerId, "Games_Hosted", 1); Form gameList = new HostGameListForm(); gameList.Show(); Dispose(); }
public void GetFriends() { var playerFriends = NetworkClasses.GetPlayer(User.PlayerId).Tables[0].Rows[0]["Friends"].ToString().Split(','); if (playerFriends[0] == "0") { if (BoxOFriends.Items.Count == 1) { BoxOFriends.Items.Clear(); delFriend.Enabled = false; addToolStripMenuItem.Visible = true; viewProfileToolStripMenuItem.Visible = false; deleteToolStripMenuItem.Visible = false; joinGameToolStripMenuItem.Visible = false; spectateToolStripMenuItem.Visible = false; _friendInfo = new List <DataSet>(); } return; } var datasets = playerFriends.Select(friend => NetworkClasses.GetPlayer(int.Parse(friend))).ToList(); if (datasets.Count != _friendInfo.Count) { BoxOFriends.Items.Clear(); foreach (var player in datasets) { var listItem = new ListViewItem(player.Tables[0].Rows[0]["Username"].ToString()); listItem.SubItems.Add(player.Tables[0].Rows[0]["Online"].ToString()); BoxOFriends.Items.Add(listItem); } _friendInfo = datasets; return; } for (var i = 0; i < datasets.Count; i++) { if (datasets[i].Tables[0].Rows[0]["Online"].ToString() == _friendInfo[i].Tables[0].Rows[0]["Online"].ToString()) { continue; } BoxOFriends.Items.Clear(); foreach (var player in datasets) { var listItem = new ListViewItem(player.Tables[0].Rows[0]["Username"].ToString()); listItem.SubItems.Add(player.Tables[0].Rows[0]["Online"].ToString()); BoxOFriends.Items.Add(listItem); } _friendInfo = datasets; if (BoxOFriends.Items.Count == 10) { addToolStripMenuItem.Visible = false; addFriend.Enabled = false; } return; } }
private void deleteToolStripMenuItem_Click(object sender, EventArgs e) { var result = MessageBox.Show("Are you sure?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { NetworkClasses.DelFriend(BoxOFriends.SelectedItems[0].Text); } }
private void logoutButton_Click(object sender, EventArgs e) { _timer.Stop(); NetworkClasses.UpdateUserValue("User_List", "Online", "Offline", User.PlayerId); Form login = new LoginForm(); _friends.Dispose(); login.Show(); Dispose(); }
private void spectateToolStripMenuItem_Click(object sender, EventArgs e) { var ds = NetworkClasses.GetServerByPlayerId(NetworkClasses.GetPlayer(BoxOFriends.SelectedItems[0].Text).Tables[0].Rows[0]["Player_ID"].ToString()); Client.Conn = ds.Tables[0].Rows[0]["Host_IP"].ToString(); Client.NetClient.Start(); Client.Connect(false); NetworkClasses.UpdateUserValue("User_List", "Online", "Spectating", User.PlayerId); //Dispose(); }
/// <summary> /// On click, resets character to null, stops NetServer, 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); Host.ServerStop(); var main = new MainMenuForm(); main.Show(); Dispose(); }
/// <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, closes accordingly /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void MainMenuForm_Closing(object sender, FormClosingEventArgs e) { if (e.CloseReason != CloseReason.UserClosing) { return; } _friends.Dispose(); _timer.Stop(); Dispose(); NetworkClasses.UpdateUserValue("User_List", "Online", "Offline", User.PlayerId); Environment.Exit(0); }
/// <summary> /// On click, starts the NetHost and takes user to the host lobby /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void HostButton_Click(object sender, EventArgs e) { Host.ServerStart(); NetworkClasses.UpdateUserValue("User_Stats", "Games_Hosted", "Games_Hosted + 1", User.PlayerId); NetworkClasses.UpdateUserValue("User_List", "Online", "In Lobby", User.PlayerId); _timer.Stop(); Form gameList = new HostGameListForm(); _friends.Dispose(); gameList.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> /// Deletes the server from the database, and stop the NetServer /// </summary> public static void ServerStop() { //Disconnects local Client Client.ClientStop(); //Sends message to clients that the server is closing var outMsg = _server.CreateMessage(); outMsg.Write((byte)PacketTypes.Closed); _server.SendToAll(outMsg, NetDeliveryMethod.ReliableOrdered); //Shuts down server and deletes it from the database _shouldStop = true; _server.Shutdown("Closed"); NetworkClasses.DeleteServer(User.PlayerId); NetworkClasses.UpdateUserValue("User_List", "_Character", null, User.PlayerId); }
/// <summary> /// When the window is closed, the server is stopped, and the application is closed /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void HostGameListForm_Closing(object sender, FormClosingEventArgs e) { //if (e.CloseReason == CloseReason.UserClosing) //{ _timer.Stop(); _chat.Dispose(); if (!_profile.IsDisposed) { _profile.Dispose(); } Dispose(); NetworkClasses.UpdateUserValue("User_List", "Online", "Offline", User.PlayerId); Host.ServerStop(); Environment.Exit(0); //} }
/// <summary> /// On click, resets character to null, stops NetServer, 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); Host.ServerStop(); Form form = new MainMenuForm(); form.Show(); _chat.Dispose(); if (!_profile.IsDisposed) { _profile.Dispose(); } Dispose(); }
private void gameTimer_tick(object sender, EventArgs e) { if (!Client.gameClose) { return; } _gameTimer.Stop(); if (!_chat.IsDisposed) { _chat.Dispose(); } NetworkClasses.UpdateUserValue("User_List", "Online", "Online", User.PlayerId); MessageBox.Show("Game Closed.", "Update", MessageBoxButtons.OK); Form form = new MainMenuForm(); form.Show(); }
/// <summary> /// Updates the form view with the current list of servers in the database /// </summary> private void ListServers() { var ds = NetworkClasses.GetServers(); foreach (DataRow row in ds.Tables[0].Rows) { var grabber = NetworkClasses.GetPlayer(int.Parse(row["Host"].ToString())); var listItem = new ListViewItem(grabber.Tables[0].Rows[0]["Username"].ToString()); listItem.SubItems.Add(grabber.Tables[0].Rows[0]["Local_IP"].ToString()); listItem.SubItems.Add(NetworkClasses.GetNumPlayers(int.Parse(row["Server_ID"].ToString())) + "/6"); listItem.SubItems.Add(row["Status"].ToString()); //Add the row entry to the listview serverList.Items.Add(listItem); } }
private void joinGameToolStripMenuItem_Click(object sender, EventArgs e) { var ds = NetworkClasses.GetServerByPlayerId(NetworkClasses.GetPlayer(BoxOFriends.SelectedItems[0].Text).Tables[0].Rows[0]["Player_ID"].ToString()); //Console.WriteLine(ds.Tables[0].Rows[0]["Host"]); Client.Conn = ds.Tables[0].Rows[0]["Host_IP"].ToString(); Client.NetClient.Start(); Client.Connect(); NetworkClasses.JoinServer(Client.Conn, User.PlayerId); //Increments games joined NetworkClasses.UpdateUserValue("User_Stats", "Games_Joined", "Games_Joined+1", User.PlayerId); NetworkClasses.UpdateUserValue("User_List", "Online", "In Lobby", User.PlayerId); Form form = new PlayerLobby(); form.Show(); Dispose(); }
/// <summary> /// Checks validity of username and password and sends info to database /// i.e. Length must be between 1 and 20, must contain letters and numbers only, and username can't already exist /// </summary> private void Create() { //Check that the inputs are not empty if (newUsername.TextLength > 0 && newPassword.TextLength >= 5 && newUsername.TextLength <= 20 && newPassword.TextLength < 20) { if (ContainsVaildChars(newUsername.Text) && ContainsVaildChars(newPassword.Text)) { var good = NetworkClasses.CreateUser(newUsername.Lines[0], newPassword.Lines[0], Helpers.GetLocalIpAddress()); if (good) { Form form = new LoginForm(); form.Show(); Dispose(); } else { MessageBox.Show("Username already exists.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } else { MessageBox.Show("LETTERS AND NUMBERS ONLY", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } else { if (newUsername.Text.Length < 1 || newUsername.Text.Length > 20) { MessageBox.Show( "Username must be between 1 and 20 characters", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } if (newPassword.Text.Length < 5 || newPassword.Text.Length < 20) { MessageBox.Show( "Password must be between 5 and 20 characters", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } }
private void char_list_SelectedIndexChanged(object sender, EventArgs e) { try { if (NetworkClasses.CheckCharacterAvailable(Client.Conn, char_list.SelectedItem.ToString())) { NetworkClasses.UpdateUserValue("User_List", "_Character", char_list.SelectedItem.ToString(), User.PlayerId); } else { MessageBox.Show("Character Unavailable", "Character has already been selected", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } catch (Exception) { MessageBox.Show("Invalid character", "Please choose a valid character", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
/// <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> /// Tells the server to delete it from list, stops loop and shuts down NetClient /// </summary> public static void ClientStop() { var outMsg = NetClient.CreateMessage(); outMsg.Write((byte)PacketTypes.Leave); outMsg.Write(User.PlayerId); NetClient.SendMessage(outMsg, NetDeliveryMethod.ReliableOrdered); NetClient.WaitMessage(1000); NetClient.Shutdown("Closed"); //ends the receive loop _shouldStop = true; Conn = ""; isSpectator = false; NetworkClasses.UpdateUserValue("User_List", "_Character", null, User.PlayerId); GameLoop = new Thread(Program.Run); if (GameLoop.IsAlive) { GameLoop.Abort(); } }