コード例 #1
0
        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();
            }
        }
コード例 #2
0
        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();
            }
        }