multiplayer pong game for LPC 1768
Dependencies: mbed MbedJSONValue mbed-rtos Adafruit_ST7735 Adafruit_GFX EthernetInterface DebouncedInterrupt
Diff: gamestate.cpp
- Revision:
- 18:32fce82690a1
- Parent:
- 17:32ae1f106002
- Child:
- 19:58cc5465f647
--- a/gamestate.cpp Sat Nov 14 02:37:13 2020 +0000 +++ b/gamestate.cpp Sun Nov 15 21:55:35 2020 +0000 @@ -1,11 +1,12 @@ -#include "gamestate.h" +#include "gamestate.h" GameState::GameState() { Coord playerOneLocation = {0, 0}; Coord playerTwoLocation = {0, 0}; Coord ballLocation = {0, 0}; - this->localPlayer = 0; + this->localPlayerNum = 0; + this->lobbyHash = ""; this->p1_loc = playerOneLocation; this->p2_loc = playerTwoLocation; this->ball_loc = ballLocation; @@ -24,20 +25,22 @@ return this->ball_loc; } -void GameState::update(MbedJSONValue *serverResponse) { - this->p1_loc.y = (*serverResponse)["playerOnePos"].get<int>(); - this->p2_loc.y = (*serverResponse)["playerTwoPos"].get<int>(); - int updated_ball_x = (*serverResponse)["ballPos"][0].get<int>(); - int updated_ball_y = (*serverResponse)["ballPos"][1].get<int>(); - this->ball_loc.x = updated_ball_x; - this->ball_loc.y = updated_ball_y; - this->is_done = (bool)(*serverResponse)["isOver"].get<int>(); -} - -void GameState::print() { - //char to_string[256]; -// sprintf(to_string, "Player1 Pos: [%i, %i], Player 2 Pos: [%i, %i], Ball Pos: [%i, %i], isOver: %i", this->p1_loc->x, this->p1_loc->y, this->p2_loc->x, this->p2_loc->y, this->ball_loc->x, this->ball_loc->y, this->is_done); -// printf("Game State: %s\n\r", to_string); +void GameState::update(MbedJSONValue *serverResponse, Graphics *gfx) { + string typeResponse = (*serverResponse)["type"].get<std::string>(); + printf("typeResponse: %s\n\r", typeResponse.c_str()); + if (typeResponse == "connected") { + gfx->renderWaitingRoom(); + } else if (typeResponse == "gameState") { + this->p1_loc.y = (*serverResponse)["playerOnePos"].get<int>(); + this->p2_loc.y = (*serverResponse)["playerTwoPos"].get<int>(); + int updated_ball_x = (*serverResponse)["ballPos"][0].get<int>(); + int updated_ball_y = (*serverResponse)["ballPos"][1].get<int>(); + this->ball_loc.x = updated_ball_x; + this->ball_loc.y = updated_ball_y; + this->is_done = (char)(*serverResponse)["isOver"].get<int>(); + this->localPlayerNum = (char)(*serverResponse)["player"].get<int>(); + this->lobbyHash = (*serverResponse)["hash"].get<std::string>(); + } } bool GameState::done() {