Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-02-17 18:59:52 +0000
committerStijn Buys <ingar@osirion.org>2008-02-17 18:59:52 +0000
commit982562fa19bb87a3dab352e562f386f61c171b7b (patch)
treeaeade8d5b7d3c68f5c222af1d8ecc6a734e1b43f /src/core/netserver.cc
parentd198b7b8d9ff713d891f35ab173d1f428f610e7d (diff)
major rewrite of Cvar, Func and Entity
Diffstat (limited to 'src/core/netserver.cc')
-rw-r--r--src/core/netserver.cc51
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;