private void GameSession_FormClosing(object sender, FormClosingEventArgs e) { if (opponentName != "") { DialogResult result = MessageBox.Show("Are you sure you wish to forfeit?", "Forfeit", MessageBoxButtons.YesNo); if (result == DialogResult.Yes) { // Cancel this background worker gameWorker.CancelAsync(); timer.Stop(); // Send loss info/win info RemoveGameFromLobby(); lobby.RefreshTable(); } else { e.Cancel = false; } } else { // Cancel this background worker gameWorker.CancelAsync(); RemoveGameFromLobby(); lobby.RefreshTable(); } }
private void addGameButton_Click(object sender, EventArgs e) { if (gamesList.SelectedRows.Count > 0) { // Get the game ID from the row int gameId = (int)gamesList.SelectedRows[0].Cells[0].Value; // Match the game ID with the appropriate CustomGame in the list CustomGame game = gameList.Single(x => x.GameID == gameId); // Convert the list of pieces into a double array (board) MoveLogic.Piece[][] pieces = new MoveLogic.Piece[8][]; for (int i = 0; i < 8; ++i) { pieces[i] = new MoveLogic.Piece[8]; } foreach (MoveLogic.Piece piece in game.Pieces) { MoveLogic.Coordinates c = piece.Coordinates; pieces[c.X][c.Y] = new MoveLogic.Piece(); pieces[c.X][c.Y] = piece; } Random rand = new Random(Guid.NewGuid().GetHashCode()); double randNum = rand.NextDouble(); bool hostTurn = true;// (randNum < 0.5); moveLogic.myTurn = hostTurn; moveLogic.myColor = moveLogic.myTurn ? moveLogic.myColor = MoveLogic.pieceColor.white : moveLogic.myColor = MoveLogic.pieceColor.black; MoveLogic.pieceColor guestColor = (moveLogic.myColor == MoveLogic.pieceColor.white) ? MoveLogic.pieceColor.black : MoveLogic.pieceColor.white; // Create the new session to add to the lobby table Session mySession = new Session() { HostPlayer = game.Username, GuestPlayer = "", GameTimerSeconds = game.GameTimer, MoveTimerSeconds = game.MoveTimer, CustomGameMode = 3 /* Custom game */, BoardPieces = pieces, GameID = gameId, GuestColor = (int)guestColor }; // Create the signal to send TCPSignal signal = new TCPSignal() { SignalType = Signal.CreateSession, NewSession = mySession }; // Send the json over to the server string json = JsonConvert.SerializeObject(signal) + "\r"; byte[] jsonBytes = ASCIIEncoding.ASCII.GetBytes(json); byte[] readBuffer = new byte[65535]; lobby.stream.Write(jsonBytes, 0, jsonBytes.Length); lobby.RefreshTable(); mySession.SessionID = (int)lobby.GetLobbyTable().Rows[lobby.GetLobbyTable().Rows.Count - 1].Cells[0].Value; GameSession session = new GameSession(me, new User("", ""), stream, mySession, lobby, moveLogic, game); session.ShowDialog(); Hide(); Close(); } }