Index: client/Client/main.cpp
===================================================================
--- client/Client/main.cpp	(revision 7f2cef09129b5fc782b07e61cf502364e4155a17)
+++ client/Client/main.cpp	(revision d436ac4ae8931038a991d4229fb51f6efc941a1e)
@@ -523,4 +523,5 @@
 }
 
+// this should probably be in the WorldMap class
 void drawMap(WorldMap* gameMap)
 {
@@ -563,8 +564,5 @@
       pos = mapToScreen(p->pos);
 
-      if (p->id == curPlayerId)
-         al_draw_filled_circle(pos.x, pos.y, 12, al_map_rgb(255, 0, 0));
-      else
-         al_draw_filled_circle(pos.x, pos.y, 12, al_map_rgb(191, 0, 0));
+      p->draw(pos, p->id == curPlayerId);
    }
 }
Index: common/Player.cpp
===================================================================
--- common/Player.cpp	(revision 7f2cef09129b5fc782b07e61cf502364e4155a17)
+++ common/Player.cpp	(revision d436ac4ae8931038a991d4229fb51f6efc941a1e)
@@ -5,4 +5,7 @@
 #include <cstring>
 #include <cmath>
+
+#include <allegro5/allegro.h>
+#include <allegro5/allegro_primitives.h>
 
 using namespace std;
@@ -16,4 +19,7 @@
    this->pos.y = this->target.y = 0;
    this->timeLastUpdated = 0;
+   this->team = 0;   // blue team by default
+   this->hasBlueFlag = false;
+   this->hasRedFlag = false;
 }
 
@@ -28,4 +34,7 @@
    this->target.y = p.target.y;
    this->addr = p.addr;
+      this->team = 0;   // blue team by default
+   this->hasBlueFlag = false;
+   this->hasRedFlag = false;
 }
 
@@ -37,14 +46,7 @@
    this->pos.x = this->target.x = 200;
    this->pos.y = this->target.y = 200;
-}
-
-Player::Player(string name, sockaddr_in addr)
-{
-   this->id = 0;
-   this->name = name;
-   this->password = "";
-   this->pos.x = this->target.x = 200;
-   this->pos.y = this->target.y = 200;
-   this->addr = addr;
+   this->team = 0;   // blue team by default
+   this->hasBlueFlag = true;
+   this->hasRedFlag = true;
 }
 
@@ -60,5 +62,8 @@
    memcpy(buffer+12, &this->target.x, 4);
    memcpy(buffer+16, &this->target.y, 4);
-   strcpy(buffer+20, this->name.c_str());
+   memcpy(buffer+20, &this->team, 4);
+   memcpy(buffer+24, &this->hasBlueFlag, 1);
+   memcpy(buffer+25, &this->hasRedFlag, 1);
+   strcpy(buffer+26, this->name.c_str());
 }
 
@@ -70,5 +75,8 @@
    memcpy(&this->target.x, buffer+12, 4);
    memcpy(&this->target.y, buffer+16, 4);
-   this->name.assign(buffer+20);
+   memcpy(&this->team, buffer+20, 4);
+   memcpy(&this->hasBlueFlag, buffer+24, 1);
+   memcpy(&this->hasRedFlag, buffer+25, 1);
+   this->name.assign(buffer+26);
 }
 
@@ -81,4 +89,16 @@
 {
    this->addr = addr;
+}
+
+void Player::draw(POSITION pos, bool curPlayer) {
+   if (curPlayer)
+      al_draw_filled_circle(pos.x, pos.y, 12, al_map_rgb(255, 0, 0));
+   else
+      al_draw_filled_circle(pos.x, pos.y, 12, al_map_rgb(191, 0, 0));
+
+   if (this->hasBlueFlag)
+      al_draw_filled_rectangle(pos.x+4, pos.y-18, pos.x+18, pos.y-4, al_map_rgb(0, 0, 255));
+   else if(this->hasRedFlag)
+      al_draw_filled_rectangle(pos.x+4, pos.y-18, pos.x+18, pos.y-4, al_map_rgb(255, 0, 0));
 }
 
Index: common/Player.h
===================================================================
--- common/Player.h	(revision 7f2cef09129b5fc782b07e61cf502364e4155a17)
+++ common/Player.h	(revision d436ac4ae8931038a991d4229fb51f6efc941a1e)
@@ -23,5 +23,4 @@
    Player(const Player& p);
    Player(string name, string password);
-   Player(string name, sockaddr_in addr); // this will be deleted
 
    ~Player();
@@ -33,5 +32,9 @@
    void setAddr(sockaddr_in addr);
 
+   void draw(POSITION pos, bool curPlayer);
    bool move(WorldMap *map);
+
+   void takeFlag(int flag, WorldMap *map);
+   void dropFlag(int flag, WorldMap *map);
 
    int id;
@@ -42,4 +45,8 @@
    POSITION target;
    unsigned long long timeLastUpdated;
+
+   int team; // 0 is blue, 1 is red
+      bool hasBlueFlag;
+   bool hasRedFlag;
 };
 
