diff options
Diffstat (limited to 'src/core/gameserver.cc')
-rw-r--r-- | src/core/gameserver.cc | 40 |
1 files changed, 32 insertions, 8 deletions
diff --git a/src/core/gameserver.cc b/src/core/gameserver.cc index 6c84d3e..e5795ad 100644 --- a/src/core/gameserver.cc +++ b/src/core/gameserver.cc @@ -89,11 +89,6 @@ GameServer::~GameServer() server_instance = 0; } -bool GameServer::running() -{ - return server_running; -} - void GameServer::abort() { server_running = false; @@ -102,13 +97,13 @@ void GameServer::abort() void GameServer::say(Player *player, std::string const &message) { // send to console - con_print <<player->name() << " " << message << "\n"; + con_print <<player->name() << ": " << message << "\n"; // broadcast to remote clients if (server_network != 0 ) { std::string netmessage("msg public "); netmessage.append(player->name()); - netmessage += ' '; + netmessage.append(": "); netmessage.append(message); netmessage += '\n'; server_network->broadcast(netmessage); @@ -129,7 +124,7 @@ void GameServer::broadcast(std::string const & message, int ignoreplayer) } } -void GameServer::send(Player const *player, std::string message) +void GameServer::send(Player *player, std::string message) { // send to console if (player->id() == localplayer()->id()) { @@ -148,6 +143,35 @@ void GameServer::send(Player const *player, std::string message) } } +void GameServer::exec(Player *player, std::string const & cmdline) +{ + std::string command; + std::stringstream cmdstream; + cmdstream.str(cmdline); + cmdstream >> command; + + //con_debug << "Executing " << player->name() << ": " << cmdline << "\n"; + + Func *function = Func::find(command); + if (function ) { + + std::string args; + if (cmdline.size() > command.size() +1 ) + args.assign(cmdline.substr(command.size()+1)); + + if ((function ->flags() & Func::Game) == Func::Game) { + //con_debug << "About to execute " << function->name() << " " << args << "'\n"; + function->exec(player, args); + return; + } + } + + std::string message("Unknown command '"); + message.append(command); + message.append("'\n"); + send(player, message); +} + void GameServer::player_connect(Player *player) { std::string message(player->name()); |