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.cc162
1 files changed, 27 insertions, 135 deletions
diff --git a/src/core/gameserver.cc b/src/core/gameserver.cc
index 3268e38..db99356 100644
--- a/src/core/gameserver.cc
+++ b/src/core/gameserver.cc
@@ -62,7 +62,7 @@ void func_mute(std::string const &args)
targetplayer->player_mute = true;
server()->broadcast("^B" + targetplayer->name() + "^B has been muted.", targetplayer);
- server()->send(targetplayer, "^BYou have been muted.");
+ targetplayer->send("^BYou have been muted.");
}
void func_unmute(std::string const &args)
@@ -78,7 +78,7 @@ void func_unmute(std::string const &args)
targetplayer->player_mute = false;
server()->broadcast("^B" +targetplayer->name() + "^B has been unmuted.", targetplayer);
- server()->send(targetplayer, "^BYou have been unmuted.");
+ targetplayer->send("^BYou have been unmuted.");
}
void func_kick(std::string const &args)
@@ -271,7 +271,7 @@ void GameServer::say(Player *player, std::string const &message)
return;
if (player->mute()) {
- send(player, "^BYou have been muted.");
+ player->send("^BYou have been muted.");
return;
}
@@ -280,7 +280,7 @@ void GameServer::say(Player *player, std::string const &message)
notification.append("^F:^N ");
notification.append(message);
- broadcast_message(Message::Public, notification);
+ broadcast(Message::Public, notification);
}
void GameServer::private_message(Player *player, std::string const &args)
@@ -289,7 +289,7 @@ void GameServer::private_message(Player *player, std::string const &args)
return;
if (player->mute()) {
- send(player, "^BYou have been muted.");
+ player->send("^BYou have been muted.");
return;
}
@@ -301,14 +301,14 @@ void GameServer::private_message(Player *player, std::string const &args)
core::Player *targetplayer = core::server()->find_player(target);
if (!targetplayer) {
- send(player, "^BPlayer " + target + "^B not found.");
+ player->send("^BPlayer " + target + "^B not found.");
return;
}
std::string message(args.substr(target.size()));
- send_message(Message::Private, player, "^FTo ^B" + targetplayer->name() + "^F:" + message);
- send_message(Message::Private, targetplayer, "^FFrom ^B" + player->name() + "^F:" + message);
+ player->message(Message::Private, "^FTo ^B" + targetplayer->name() + "^F:" + message);
+ targetplayer->message(Message::Private, "^FFrom ^B" + player->name() + "^F:" + message);
}
// FIXME kicked by
@@ -322,7 +322,7 @@ void GameServer::kick(Player *player, std::string const &reason)
NetClient *client = server_network->find_client(player);
if (client) {
broadcast("^B" + player->name() + "^B has been kicked: " + reason, player);
- server_network->send_message(client, "info", "^WYou have been kicked: " + reason);
+ player->send("^WYou have been kicked: " + reason);
server_network->send_disconnect(client);
} else {
con_print << "Network client not found." << std::endl;
@@ -330,146 +330,38 @@ void GameServer::kick(Player *player, std::string const &reason)
}
// broadcast an "info" message to all players
-void GameServer::broadcast(std::string const message, Player *ignore_player)
+void GameServer::broadcast(const std::string text, Player *ignore_player)
{
- if (!message.size())
- return;
-
- broadcast_message(Message::Info, message, ignore_player);
-}
-
-// send and "info" message to a single player
-void GameServer::send(Player *player, std::string const message)
-{
- send_message(Message::Info, player, message);
+ broadcast(Message::Info, text, ignore_player);
}
-// send an rcon message to a single player
-void GameServer::send_rcon(Player *player, std::string const message)
-{
- send_message(Message::RCon, player, message);
-}
-
-void GameServer::send_message(Message::Channel const channel, Player *player, std::string const message)
-{
- if (!message.size())
- return;
-
- if (player == localplayer()) {
- application()->notify_message(channel, message);
- return;
- } else {
- if (server_network) {
- std::string msg_channel;
- switch(channel) {
- case core::Message::Info: // Info message
- msg_channel.assign("info");
- break;
-
- case core::Message::Local: // Chat message in the local zone
- msg_channel.assign("local");
- break;
-
- case core::Message::Public: // Public chat message
- msg_channel.assign("public");
- break;
-
- case core::Message::Private: // Private chat message
- msg_channel.assign("private");
- break;
-
- case core::Message::RCon: // RCon message
- msg_channel.assign("rcon");
- break;
-
- default:
- con_warn << "message on unknown channel " << channel << "!" << std::endl;
- return;
- break;
- }
-
- NetClient *client = server_network->find_client(player);
- if (client) {
- server_network->send_message(client, msg_channel.c_str(), message);
- }
- }
- }
-}
// broadcast a message on a specified channel to all players
-void GameServer::broadcast_message(Message::Channel const channel, std::string const message, Player *ignore_player)
+void GameServer::broadcast(const Message::Channel channel, const std::string text, Player *ignore_player)
{
- if (!message.size())
+ if (!text.size())
return;
- // send to application
- if (ignore_player != game()->localplayer())
- application()->notify_message(channel, message);
-
- // broadcast to remote clients
- if (server_network) {
- std::string msg_channel;
- switch(channel) {
- case core::Message::Info: // Info message
- msg_channel.assign("info");
- break;
-
- case core::Message::Local: // Chat message in the local zone
- msg_channel.assign("local");
- break;
-
- case core::Message::RCon: // RCon message
- msg_channel.assign("rcon");
- break;
-
- case core::Message::Public: // Public chat message
- msg_channel.assign("public");
- break;
-
- default:
- con_warn << "message on unknown channel " << channel << "!" << std::endl;
- return;
- break;
+ for (Players::iterator it = players().begin(); it != players().end(); it++) {
+ Player *player = (*it);
+ if (player != ignore_player) {
+ Player *player = (*it);
+ player->message(channel, text);
}
-
- server_network->broadcast_message(msg_channel.c_str(), message);
}
}
// broadcast a sound event to all players
-void GameServer::broadcast_sound(std::string const sound, Player *ignore_player)
+void GameServer::broadcast_sound(const std::string name, Player *ignore_player)
{
- if (!sound.size())
+ if (!name.size())
return;
- // send to application
- if (ignore_player != game()->localplayer()) {
- application()->notify_sound(sound.c_str());
- }
-
- // broadcast to remote clients
- if (server_network) {
- server_network->broadcast_message("snd", sound, ignore_player);
- }
-}
-
-// send a sound event to a single player
-void GameServer::send_sound(Player *player, std::string const sound)
-{
- if (!sound.size())
- return;
-
- // send to application
- if (player == localplayer()) {
- application()->notify_sound(sound.c_str());
- return;
- }
-
- // send to remote client
- if (server_network) {
- NetClient *client = server_network->find_client(player);
- if (client) {
- server_network->send_message(client, "snd", sound);
+ for (Players::iterator it = players().begin(); it != players().end(); it++) {
+ Player *player = (*it);
+ if (player != ignore_player) {
+ Player *player = (*it);
+ player->sound(name);
}
}
}
@@ -507,7 +399,7 @@ void GameServer::exec(Player *player, std::string const & cmdline)
function->exec(args);
while(console()->rconbuf().size()) {
- send(player, (*console()->rconbuf().begin()));
+ player->message(Message::RCon, (*console()->rconbuf().begin()));
console()->rconbuf().pop_front();
}
@@ -520,7 +412,7 @@ void GameServer::exec(Player *player, std::string const & cmdline)
std::string message("Unknown command '");
message.append(command);
message.append("^N'");
- send(player, message);
+ player->send(message);
}
void GameServer::player_connect(Player *player)