From 8848f0ff8c59daef86712201eabe6221ec66019f Mon Sep 17 00:00:00 2001 From: Aadhavan Srinivasan Date: Fri, 8 Mar 2024 23:35:18 -0500 Subject: [PATCH] Removed debug print statements, cleared background before drawing to screen, and added client GUI implementation I removed a print statement that printed out every position of the ball, because it was no longer necessary. I also added code to clear the background before drawing to the screen at the start of the game, to remove any lingering un-erased objects. Finally, and most substantially, I finished the initial implementation of the client-side GUI. The client should now be able to specify a connect code through the GUI, and connect to the appropriate server. --- main.cpp | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/main.cpp b/main.cpp index a407dd7..444e254 100644 --- a/main.cpp +++ b/main.cpp @@ -152,7 +152,8 @@ GameType check_server_client(int argc, char** argv) { std::cout << "Waiting for connection..." << std::endl; std::string response = ""; char* temp_response = NULL; - /* Wait for the right client to connect. Since recvAll returns a char*, we need to create a temporary variable to check for NULL. */ + /* Wait for the right client to connect. Since recvAll returns a char*, we need to create a temporary variable to check for NULL. + TODO - Check that the client actually sends 'GG'. */ do { temp_response = server->recvAll(); } while (temp_response == NULL); @@ -278,7 +279,7 @@ int main(int argc, char** argv) { int port_label_x_size = MeasureTextEx(GetFontDefault(), port_label, font_size, font_spacing).x; // Custom size for port label, because it's long bool editing_ip = false; // Indicates whether the IP address text box is being edited bool editing_port = false; // Indicates whether the port text box is being edited - while (button_pressed == false) { + while (button_pressed == false || ((strlen(ip_text) == 0) || (strlen(port_text) == 0))) { BeginDrawing(); ClearBackground(BLACK); /* Label and text box for IP address */ @@ -306,6 +307,29 @@ int main(int argc, char** argv) { free(ip_text); free(port_text); } + + if (selected_item == M_CLIENT) { + button_pressed = false; // Whether submit button is pressed + char* code_text = (char *)calloc(100, sizeof(char)); // Holds the connect code + const char* code_label = "Enter code:"; + bool editing_code = false; // Indicates whether the port text box is being edited + while (button_pressed == false || ((strlen(code_text) == 0))) { + BeginDrawing(); + ClearBackground(BLACK); + /* Label and text box for IP address */ + GuiLabel(Rectangle{(WIDTH/2)-(label_size.x/2), (HEIGHT/2) - (HEIGHT/6) - label_size.y - 10, label_size.x, label_size.y}, code_label); + + if (GuiTextBox(Rectangle{(WIDTH/2) - (box_size.x/2), (HEIGHT/2) - (HEIGHT/6), box_size.x, box_size.y}, code_text, 100, editing_code)) { + editing_code = !editing_code; + } + + button_pressed = GuiButton(Rectangle{(WIDTH/2) - (box_size.x/2), (HEIGHT/2) + (HEIGHT/6), box_size.x, box_size.y}, "Connect"); + EndDrawing(); + } + + type = check_client(code_text); + free(code_text); + } } /* Variable to store the response given by the other player */ @@ -324,6 +348,7 @@ int main(int argc, char** argv) { Ball ball = Ball(window.GetWidth()/2, window.GetHeight()/2, CIRC_RAD, BASE_SPEED, 0); window.BeginDrawing(); + window.ClearBackground(BLACK); pad1.draw(); pad2.draw(); ball.draw(); @@ -372,7 +397,6 @@ int main(int argc, char** argv) { uint8_t* response_array = (uint8_t *)(type.netsock->recvAll()); if (response_array != NULL) { response_data = Serial_deserialize(response_array); - std::cout << response_data.pad_x << "\t" << response_data.pad_y << "\t" << response_data.ball_x << "\t" << response_data.ball_y << std::endl; } else { /* If the response is NULL, that means it timed-out. In this case, there's no value to print */ std::cout << "NOTHING RECEIVED" << std::endl;