multiplayer pong game for LPC 1768

Dependencies:   mbed MbedJSONValue mbed-rtos Adafruit_ST7735 Adafruit_GFX EthernetInterface DebouncedInterrupt

Revision:
21:992294ffabf4
Parent:
20:b2687089661c
Child:
22:1c49e1fae846
--- a/gamestate.cpp	Sun Nov 15 23:45:34 2020 +0000
+++ b/gamestate.cpp	Mon Nov 16 00:50:20 2020 +0000
@@ -31,16 +31,31 @@
     if (typeResponse == "connected") {
         gfx->renderWaitingRoom(); 
     } else if (typeResponse == "gameState") {
-        this->p1_loc.y = (*serverResponse)["gameState"]["playerOnePos"].get<int>(); 
-        printf("new player1 location: %i\n\r", this->p1_loc.y); 
-        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>(); 
+        MbedJSONValue &serverGameState = (*serverResponse)["gameState"];
+        if (serverGameState.hasMember("playerOnePos")) {
+            this->p1_loc.y = (serverGameState)["playerOnePos"].get<int>();       
+        }
+        if (serverGameState.hasMember("playerTwoPos")) {
+            this->p2_loc.y = (serverGameState)["playerTwoPos"].get<int>(); 
+        }
+        if (serverGameState.hasMember("ballPos")) {
+            int updated_ball_x = (serverGameState)["ballPos"][0].get<int>(); 
+            int updated_ball_y = (serverGameState)["ballPos"][1].get<int>(); 
+            this->ball_loc.x = updated_ball_x; 
+            this->ball_loc.y = updated_ball_y;
+        }
+        if (serverGameState.hasMember("isOver")) {
+            this->is_done = (char)(serverGameState)["isOver"].get<int>();    
+            this->is_done = (char)(serverGameState)["isOver"].get<int>();
+        }
+        
+        if (serverGameState.hasMember("player")) {
+          this->localPlayerNum = (char)(serverGameState)["player"].get<int>();    
+        }
+        
+        if (serverGameState.hasMember("hash")) {
+            this->lobbyHash = (serverGameState)["hash"].get<std::string>(); 
+        }    
         gfx->renderGameState(this); 
     }
 }