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/gameserver.cc')
-rw-r--r--src/core/gameserver.cc40
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());