diff options
Diffstat (limited to 'src/core/netserver.cc')
-rw-r--r-- | src/core/netserver.cc | 51 |
1 files changed, 27 insertions, 24 deletions
diff --git a/src/core/netserver.cc b/src/core/netserver.cc index 08863df..39548dd 100644 --- a/src/core/netserver.cc +++ b/src/core/netserver.cc @@ -37,7 +37,7 @@ NetServer::~NetServer() // notify the game if (game() && game()->connected) { core::game()->player_disconnect((*it)->player()); - con_print << (*it)->player().name << " disconnected."<< std::endl; + con_print << (*it)->player()->name() << " disconnected."<< std::endl; } delete (*it); } @@ -58,11 +58,11 @@ void NetServer::client_connect(int const clientfd, std::string const host, int c FD_SET(client->fd(), &serverset); // TODO send infos - con_print << client->host() << ":" << client->port() << " " << client->player().name << " connected."<< std::endl; + con_print << client->host() << ":" << client->port() << " " << client->player()->name() << " connected."<< std::endl; // BROADCAST connect message std::ostringstream osstream; - osstream << "msg info " << client->player().name << " connected."<< std::endl; + osstream << "msg info " << client->player()->name() << " connected."<< std::endl; broadcast(osstream.str(), clientfd); // notify the game @@ -84,14 +84,14 @@ void NetServer::reap() // BROADCAST disconnect message std::ostringstream osstream; - osstream << "msg info " << client->player().name << " disconnected."<< std::endl; + osstream << "msg info " << client->player()->name() << " disconnected."<< std::endl; broadcast(osstream.str()); // notify the game if (core::game()) core::game()->player_disconnect(client->player()); - con_print << client->player().name << " disconnected."<< std::endl; + con_print << client->player()->name() << " disconnected."<< std::endl; // remove the client clients.erase(it); @@ -163,10 +163,10 @@ void NetServer::broadcast(std::string const & message, int ignorefd) } // find the client corresponding to a player id -NetClient *NetServer::find_client(Player const &player) +NetClient *NetServer::find_client(Player const *player) { for (std::list<NetClient *>::iterator it = clients.begin(); it != clients.end(); it++) { - if ((*it)->fd() == (int) player.id) { + if ((*it)->fd() == (int) player->id()) { return (*it); } } @@ -201,9 +201,9 @@ void NetServer::parse_incoming_message(NetClient *client, const std::string & me if (command == "say") { if (message.size() > command.size()+1) { std::ostringstream osstream; - osstream << "msg public " << client->player().name << " " << message.substr(command.size()+1) << "\n"; + osstream << "msg public " << client->player()->name() << " " << message.substr(command.size()+1) << "\n"; broadcast(osstream.str()); - con_print << client->player().name << " " << message.substr(command.size()+1) << std::endl; + con_print << client->player()->name() << " " << message.substr(command.size()+1) << std::endl; } return; } @@ -214,12 +214,12 @@ void NetServer::parse_incoming_message(NetClient *client, const std::string & me if (msgstream >> name) { if (name.size() > 16) name = name.substr(0,16); - if (name != client->player().name) { + if (name != client->player()->name()) { std::ostringstream osstream; - osstream << "msg info " << client->player().name << " renamed to " << name << "\n"; + osstream << "msg info " << client->player()->name() << " renamed to " << name << "\n"; broadcast(osstream.str()); - con_print << client->player().name << " renamed to " << name << std::endl; - client->player().name = name; + con_print << client->player()->name() << " renamed to " << name << std::endl; + client->player()->player_name = name; } } return; @@ -228,7 +228,7 @@ void NetServer::parse_incoming_message(NetClient *client, const std::string & me if (command == "list_players") { std::ostringstream osstream; for (std::list<NetClient *>::iterator it = clients.begin(); it != clients.end(); it++) { - osstream << "msg info " << (*it)->player().name << " " << (*it)->host() << ":" << (*it)->port() << "\n"; + osstream << "msg info " << (*it)->player()->name() << " " << (*it)->host() << ":" << (*it)->port() << "\n"; } osstream << "msg info " << clients.size() << " connected players\n" << std::endl; send(client, osstream.str()); @@ -245,15 +245,18 @@ void NetServer::parse_incoming_message(NetClient *client, const std::string & me // execute game functions if (game() && game()->connected) { - Func f = func::find(command); - if (f) { - if (f->flags() && func::Game) { - GameFuncPtr function = (GameFuncPtr) f->ptr; - function(client->player(), msgstream); + Func *function = Func::find(command); + if (function ) { + std::string args; + char c; + if (msgstream >> args) + while (msgstream >> c) + args += c; + if (function ->flags() && Func::Game) { + function->exec(client->player(), args); } else { // instant rcon - //FuncPtr function = (FuncPtr) f->ptr; - //function(msgstream); + //function->exec(args); } } } @@ -267,10 +270,10 @@ void NetServer::parse_client_variable(NetClient * client, const std::string varn std::ostringstream osstream; if (name.size() > 16) name = name.substr(0,16); - if (name != client->player().name) { - osstream << "msg info " << client->player().name << " renamed to " << name << "\n"; + if (name != client->player()->name()) { + osstream << "msg info " << client->player()->name() << " renamed to " << name << "\n"; broadcast(osstream.str()); - client->player().name = name; + client->player()->player_name = name; } } return; |