Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/netserver.cc')
-rw-r--r--src/core/netserver.cc25
1 files changed, 18 insertions, 7 deletions
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;
+ }
}
}