diff options
Diffstat (limited to 'src/core/netserver.cc')
-rw-r--r-- | src/core/netserver.cc | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/core/netserver.cc b/src/core/netserver.cc index aae806e..84ed76c 100644 --- a/src/core/netserver.cc +++ b/src/core/netserver.cc @@ -407,6 +407,11 @@ void NetServer::client_frame(NetClient *client, unsigned long timestamp) } } + // send reputation updates + if (client->player()->reputation().dirty()) { + send_player_reputation(client); + } + // send inventory update for control // FIXME this should be done for all player assets if (client->player()->control() && client->player()->control()->inventory() && client->player()->control()->inventory()->dirty()) { @@ -470,6 +475,7 @@ void NetServer::frame(unsigned long timestamp) if (client->player()->dirty() || client->player()->zonechange()) { client->player()->set_dirty(false); client->player()->set_zonechange(false); + client->player()->reputation().set_dirty(false); } } } @@ -628,6 +634,16 @@ void NetServer::send_player_update(NetClient *client) client->send_raw(msg.str()); } +// send a "rep" update player reputation to a single player +void NetServer::send_player_reputation(NetClient *client) +{ + std::ostringstream msg; + msg << "rep "; + client->player()->reputation().serialize_server_update(msg); + msg << '\n'; + client->send_raw(msg.str()); +} + // send a short "pif" update player information to a single player void NetServer::send_player_update(NetClient *client, Player *player) { |