Index: client/Client/main.cpp
===================================================================
--- client/Client/main.cpp	(revision cc1c6c1a585fe5317ec50eae4932e2cc3d18ca99)
+++ client/Client/main.cpp	(revision 6e66ffdf57ffae5c067c3c8b3e2101b2e7d49e5e)
@@ -530,4 +530,5 @@
    mapPos.y = 0;
    mapPos = mapToScreen(mapPos);
+
    for (int x=0; x<12; x++)
    {
@@ -544,8 +545,31 @@
             al_draw_filled_rectangle(x*25+mapPos.x, y*25+mapPos.y, x*25+25+mapPos.x, y*25+25+mapPos.y, al_map_rgb(100, 100, 0));
 
-         if (structure == WorldMap::STRUCTURE_BLUE_FLAG)
-            al_draw_filled_rectangle(x*25+5+mapPos.x, y*25+5+mapPos.y, x*25+20+mapPos.x, y*25+20+mapPos.y, al_map_rgb(0, 0, 255));
-         else if (structure == WorldMap::STRUCTURE_RED_FLAG)
-            al_draw_filled_rectangle(x*25+5+mapPos.x, y*25+5+mapPos.y, x*25+20+mapPos.x, y*25+20+mapPos.y, al_map_rgb(255, 0, 0));
+         if (structure == WorldMap::STRUCTURE_BLUE_FLAG) {
+            al_draw_circle(x*25+12+mapPos.x, y*25+12+mapPos.y, 12, al_map_rgb(0, 0, 0), 3);
+            //al_draw_filled_rectangle(x*25+5+mapPos.x, y*25+5+mapPos.y, x*25+20+mapPos.x, y*25+20+mapPos.y, al_map_rgb(0, 0, 255));
+         }else if (structure == WorldMap::STRUCTURE_RED_FLAG) {
+            al_draw_circle(x*25+12+mapPos.x, y*25+12+mapPos.y, 12, al_map_rgb(0, 0, 0), 3);
+            //al_draw_filled_rectangle(x*25+5+mapPos.x, y*25+5+mapPos.y, x*25+20+mapPos.x, y*25+20+mapPos.y, al_map_rgb(255, 0, 0));
+         }
+      }
+   }
+
+   for (int x=0; x<12; x++)
+   {
+      for (int y=0; y<12; y++)
+      {
+         vector<WorldMap::Object> vctObjects = gameMap->getObjects(x, y);
+
+         vector<WorldMap::Object>::iterator it;
+         for(it = vctObjects.begin(); it != vctObjects.end(); it++) {
+            switch(it->type) {
+               case WorldMap::OBJECT_BLUE_FLAG:
+                  al_draw_filled_rectangle(it->pos.x-8+mapPos.x, it->pos.y-8+mapPos.y, it->pos.x+8+mapPos.x, it->pos.y+8+mapPos.y, al_map_rgb(0, 0, 255));
+                  break;
+               case WorldMap::OBJECT_RED_FLAG:
+                  al_draw_filled_rectangle(it->pos.x-8+mapPos.x, it->pos.y-8+mapPos.y, it->pos.x+8+mapPos.x, it->pos.y+8+mapPos.y, al_map_rgb(255, 0, 0));
+                  break;
+            }
+         }
       }
    }
Index: common/WorldMap.cpp
===================================================================
--- common/WorldMap.cpp	(revision cc1c6c1a585fe5317ec50eae4932e2cc3d18ca99)
+++ common/WorldMap.cpp	(revision 6e66ffdf57ffae5c067c3c8b3e2101b2e7d49e5e)
@@ -67,11 +67,36 @@
    vector<WorldMap::Object> vctObjectsInRegion;
 
+   vector<WorldMap::Object>::iterator it;
+   for(it = vctObjects->begin(); it != vctObjects->end(); it++) {
+      if (it->pos.x/25 == x && it->pos.y/25 == y)
+         vctObjectsInRegion.push_back(*it);
+   }
+
    return vctObjectsInRegion;
 }
 
-void WorldMap::addObject(int x, int y, WorldMap::ObjectType t) {
-   WorldMap::Object o(t, x, y);
-
+// used by the server to create new objects
+void WorldMap::addObject(WorldMap::ObjectType t, int x, int y) {
+   WorldMap::Object o(t, vctObjects->size(), x, y);
    vctObjects->push_back(o);
+}
+
+// used by the client to update object positions or create objects it has not seen before
+void WorldMap::updateObject(int id, WorldMap::ObjectType t, int x, int y) {
+   vector<WorldMap::Object>::iterator it;
+   bool foundObject = false;
+
+   for (it = vctObjects->begin(); it != vctObjects->end(); it++) {
+      if (it->id == id) {
+         foundObject = true;
+         it->pos.x = x;
+         it->pos.y = y;
+      }
+   }
+
+   if (!foundObject) {
+      WorldMap::Object o(t, id, x, y);
+      vctObjects->push_back(o);
+   }
 }
 
@@ -190,7 +215,9 @@
                case 1:
                   structure = STRUCTURE_BLUE_FLAG;
+                  cout << "Should have added blue flag object" << endl;
                   break;
                case 2:
                   structure = STRUCTURE_RED_FLAG;
+                  cout << "Should have added red flag object" << endl;
                   break;
                }
@@ -213,15 +240,17 @@
 /*** Functions for Object ***/
 
-WorldMap::Object::Object(ObjectType type, POSITION pos) {
+WorldMap::Object::Object(ObjectType type, int id, int x, int y) {
    this->type = type;
-   this->pos = pos;
-}
-
-WorldMap::Object::Object(ObjectType type, int x, int y) {
-   this->type = type;
+   this->id = id;
    this->pos.x = x;
    this->pos.y = y;
 }
 
+WorldMap::Object::Object(ObjectType type, int id, POSITION pos) {
+   this->type = type;
+   this->id = id;
+   this->pos = pos;
+}
+
 WorldMap::Object::~Object() {
 }
Index: common/WorldMap.h
===================================================================
--- common/WorldMap.h	(revision cc1c6c1a585fe5317ec50eae4932e2cc3d18ca99)
+++ common/WorldMap.h	(revision 6e66ffdf57ffae5c067c3c8b3e2101b2e7d49e5e)
@@ -33,9 +33,10 @@
    class Object {
    public:
+      int id;
       ObjectType type;
       POSITION pos;
 
-      Object(ObjectType type, int x, int y);
-      Object(ObjectType type, POSITION pos);
+      Object(ObjectType type, int id, int x, int y);
+      Object(ObjectType type, int id, POSITION pos);
 
       ~Object();
@@ -58,5 +59,6 @@
 
    vector<Object> getObjects(int x, int y);
-   void addObject(int x, int y, ObjectType type);
+   void addObject(ObjectType type, int x, int y);
+   void updateObject(int id, WorldMap::ObjectType t, int x, int y);
 
    static WorldMap* createDefaultMap();
Index: server/server.cpp
===================================================================
--- server/server.cpp	(revision cc1c6c1a585fe5317ec50eae4932e2cc3d18ca99)
+++ server/server.cpp	(revision 6e66ffdf57ffae5c067c3c8b3e2101b2e7d49e5e)
@@ -95,5 +95,10 @@
 
    WorldMap* gameMap = WorldMap::loadMapFromFile("../data/map.txt");
- 
+
+   // add some items to the map. They will be sent out
+   // to players when they login
+   // m->addObject(x*25+12, y*25+12, OBJECT_BLUE_FLAG);
+   // m->addObject(x*25+12, y*25+12, OBJECT_RED_FLAG);
+
    sock = socket(AF_INET, SOCK_DGRAM, 0);
    if (sock < 0) error("Opening socket");
