--- 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) {