diff -r 6c4dc68360eb -r 5dd4d782cf3a src/GameState.cc --- 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) {