From 9d39702824e8fae5127e09fb5a05b521b48cd028 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sun, 9 Nov 2008 11:43:28 +0000 Subject: docking menus --- src/core/netserver.cc | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) (limited to 'src/core/netserver.cc') diff --git a/src/core/netserver.cc b/src/core/netserver.cc index 3f0d2e8..b61ae1f 100644 --- a/src/core/netserver.cc +++ b/src/core/netserver.cc @@ -104,7 +104,7 @@ NetServer::~NetServer() server()->player_disconnect((*it)->player()); (*it)->send_raw(netmsg); - (*it)->transmit(fd()); + (*it)->transmit(); delete (*it); } @@ -265,7 +265,7 @@ NetClient * NetServer::client_connect(std::string const host, int const port) { con_debug << "client_connect " << host << ":" << port << "\n"; - NetClient *client = new NetClient(host, port); + NetClient *client = new NetClient(host, port, fd()); if (client->error()) { con_warn << client->host() << ":" << client->port() << " connection failed!\n"; delete(client); @@ -283,7 +283,7 @@ void NetServer::client_initialize(NetClient *client) { std::string welcome("^B"); welcome.append(Cvar::sv_name->str()); client->player()->send(welcome); - client->transmit(fd()); + client->transmit(); // send zones for (Zone::Registry::iterator it = Zone::registry().begin(); it != Zone::registry().end(); it++) { @@ -293,7 +293,7 @@ void NetServer::client_initialize(NetClient *client) { // send connect completed std::string connect("connect\n"); client->send_raw(connect); - client->transmit(fd()); + client->transmit(); // set client state to pending client->client_state = NetClient::Pending; @@ -373,7 +373,7 @@ void NetServer::frame(unsigned long timestamp) for (Clients::iterator it = clients.begin(); it != clients.end(); it++) { NetClient *client = *it; - client->transmit(fd()); + client->transmit(); if (client->state() == NetClient::Connected) client_frame(client, timestamp); @@ -386,7 +386,7 @@ void NetServer::frame(unsigned long timestamp) client->player()->player_dirty = false; client->player()->player_zonechange = false; } - client->transmit(fd()); + client->transmit(); } } @@ -425,7 +425,7 @@ void NetServer::send_message(NetClient *client, const char *channel, std::string void NetServer::send_disconnect(NetClient *client) { client->send_raw("disconnect\n"); - client->transmit(netserver_fd); + client->transmit(); client->abort(); } @@ -450,6 +450,17 @@ void NetServer::send_entity_create(NetClient *client, Entity *entity) entity->serialize_server_create(msg); msg << '\n'; client->send_raw(msg.str()); + + // send entity menus + for (Entity::Menus::iterator it = entity->menus().begin(); it != entity->menus().end(); it++) { + msg.clear(); + msg.str(""); + msg << "menu " << entity->id() << " "; + Descriptions::serialize((*it), msg); + msg << '\n'; + client->send_raw(msg.str()); + // con_debug << "sending menu " << entity->label() << " " << (*it)->label() << std::endl; + } } } -- cgit v1.2.3