src/GameState.cc
changeset 393 5dd4d782cf3a
parent 282 e0e4dfc3e528
child 408 e6cfc44266af
--- a/src/GameState.cc	Tue Jan 13 21:36:43 2009 +0200
+++ b/src/GameState.cc	Tue Jan 13 23:15:47 2009 +0200
@@ -4,10 +4,17 @@
 #include "Config.hh"
 
 GameState::GameState (void) : 
-    world(Vector(0, MAP_GRAVITY), Vector(MAP_WIDTH, MAP_HEIGHT)), local_player(NULL)
+    world(Vector(0, MAP_GRAVITY), Vector(MAP_WIDTH, MAP_HEIGHT)), local_player(NULL), event_handler(NULL)
 { 
 
 }
+    
+void GameState::setEventHandler (GameStateEventHandler *handler) {
+    if (handler && event_handler != NULL)
+        throw Error("event_handler already set");
+
+    event_handler = handler;
+}
 
 void GameState::addProjectile (Projectile *projectile) {
     projectiles.push_back(projectile);
@@ -26,6 +33,9 @@
     
 void GameState::addPlayer (Player *player) {
     player_list.push_back(player);
+
+    if (event_handler)
+        event_handler->on_player_joined(player);
 }
 
 void GameState::removePlayer (Player *player) { 
@@ -33,6 +43,9 @@
         local_player = NULL;
 
     player_list.remove(player);
+    
+    if (event_handler)
+        event_handler->on_player_left(player);
 }
     
 void GameState::draw(Graphics *g, PixelCoordinate camera, bool displayWeapon) {