Index: client/Client/main.cpp
===================================================================
--- client/Client/main.cpp	(revision 99afbb8f85df73c696ad13f4a6338cc26cf30719)
+++ client/Client/main.cpp	(revision 2ee386d8fe1272c522a16791d769874b5d4ce49a)
@@ -34,4 +34,5 @@
 #include "../../common/Player.h"
 #include "../../common/Projectile.h"
+#include "../../common/Game.h"
 
 #include "Window.h"
@@ -118,5 +119,5 @@
 chat chatConsole, debugConsole;
 bool debugging;
-vector<string> games;
+map<string, Game> mapGames;
 
 MessageProcessor msgProcessor;
@@ -451,6 +452,9 @@
 
          if (wndCurrent == wndLobby) {
-            for (int i=0; i<games.size(); i++) {
-               al_draw_text(font, al_map_rgb(0, 255, 0), SCREEN_W*1/4-100, 120+i*15, ALLEGRO_ALIGN_LEFT, games[i].c_str());
+            map<string, Game>::iterator it;
+            int i=0;
+            for (it = mapGames.begin(); it != mapGames.end(); it++) {
+               al_draw_text(font, al_map_rgb(0, 255, 0), SCREEN_W*1/4-100, 120+i*15, ALLEGRO_ALIGN_LEFT, it->first.c_str());
+               i++;
             }
          }
@@ -821,11 +825,14 @@
                 cout << "Received a GAME_INFO message" << endl;
 
-               string name(msg.buffer+4);
+               string gameName(msg.buffer+4);
                int numPlayers;
 
                memcpy(&numPlayers, msg.buffer, 4);
                
-               cout << "Received game info for " << name << " (num players: " << numPlayers << ")" << endl;
-               games.push_back(name);
+               cout << "Received game info for " << gameName << " (num players: " << numPlayers << ")" << endl;
+               
+               if (mapGames.find(gameName) == mapGames.end())
+                  mapGames[gameName] = Game(gameName);
+               mapGames[gameName].setNumPlayers(numPlayers);
 
                break;
Index: common/Game.cpp
===================================================================
--- common/Game.cpp	(revision 99afbb8f85df73c696ad13f4a6338cc26cf30719)
+++ common/Game.cpp	(revision 2ee386d8fe1272c522a16791d769874b5d4ce49a)
@@ -20,4 +20,16 @@
 }
 
+int Game::getNumPlayers() {
+   return players.size();
+}
+
+void Game::setNumPlayers(int numPlayers) {
+   int numCurPlayers = this->getNumPlayers();
+   int numNewPlayers = numPlayers-numCurPlayers;
+
+   for (int i=0; i<numNewPlayers; i++)
+      this->players[numCurPlayers+i] = NULL;
+}
+
 bool Game::addPlayer(Player* p) {
    if (players.count(p->id) == 0) {
@@ -35,6 +47,2 @@
       return false;
 }
-
-int Game::getNumPlayers() {
-   return players.size();
-}
Index: common/Game.h
===================================================================
--- common/Game.h	(revision 99afbb8f85df73c696ad13f4a6338cc26cf30719)
+++ common/Game.h	(revision 2ee386d8fe1272c522a16791d769874b5d4ce49a)
@@ -30,9 +30,10 @@
    ~Game();
 
+   int getNumPlayers();
+
    void setId(int id);
-
+   void setNumPlayers(int numPlayers);
    bool addPlayer(Player* p);
    bool removePlayer(int id);
-   int getNumPlayers();
 };
 
