summaryrefslogtreecommitdiff
path: root/src/network/network_server.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2010-10-17 17:40:18 +0000
committerrubidium <rubidium@openttd.org>2010-10-17 17:40:18 +0000
commitd9602f4ef936b79c1d1ee785477323618e46f9cf (patch)
tree1420d0f86e4559de83ab250a109d2c7f7bca5f53 /src/network/network_server.cpp
parent459514afe4f550a08d98958745d6cd8311c53fdd (diff)
downloadopenttd-d9602f4ef936b79c1d1ee785477323618e46f9cf.tar.xz
(svn r20973) -Add: chat sending and receiving support for remote admins (dihedral)
Diffstat (limited to 'src/network/network_server.cpp')
-rw-r--r--src/network/network_server.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/network/network_server.cpp b/src/network/network_server.cpp
index c49c9ed88..16b626ce5 100644
--- a/src/network/network_server.cpp
+++ b/src/network/network_server.cpp
@@ -1159,7 +1159,7 @@ DEF_GAME_RECEIVE_COMMAND(Server, PACKET_CLIENT_ACK)
-void NetworkServerSendChat(NetworkAction action, DestType desttype, int dest, const char *msg, ClientID from_id, int64 data)
+void NetworkServerSendChat(NetworkAction action, DestType desttype, int dest, const char *msg, ClientID from_id, int64 data, bool from_admin)
{
NetworkClientSocket *cs;
const NetworkClientInfo *ci, *ci_own, *ci_to;
@@ -1172,6 +1172,10 @@ void NetworkServerSendChat(NetworkAction action, DestType desttype, int dest, co
/* Display the text locally, and that is it */
if (ci != NULL) {
NetworkTextMessage(action, (ConsoleColour)GetDrawStringCompanyColour(ci->client_playas), false, ci->client_name, msg, data);
+
+ if (_settings_client.network.server_admin_chat) {
+ NetworkAdminChat(action, desttype, from_id, msg, data, from_admin);
+ }
}
} else {
/* Else find the client to send the message to */
@@ -1215,6 +1219,11 @@ void NetworkServerSendChat(NetworkAction action, DestType desttype, int dest, co
}
}
+ /* if the server can read it, let the admin network read it, too. */
+ if (_local_company == (CompanyID)dest && _settings_client.network.server_admin_chat) {
+ NetworkAdminChat(action, desttype, from_id, msg, data, from_admin);
+ }
+
ci = NetworkFindClientInfoFromClientID(from_id);
ci_own = NetworkFindClientInfoFromClientID(CLIENT_ID_SERVER);
if (ci != NULL && ci_own != NULL && ci_own->client_playas == dest) {
@@ -1251,6 +1260,9 @@ void NetworkServerSendChat(NetworkAction action, DestType desttype, int dest, co
FOR_ALL_CLIENT_SOCKETS(cs) {
cs->SendChat(action, from_id, false, msg, data);
}
+
+ NetworkAdminChat(action, desttype, from_id, msg, data, from_admin);
+
ci = NetworkFindClientInfoFromClientID(from_id);
if (ci != NULL) {
NetworkTextMessage(action, (ConsoleColour)GetDrawStringCompanyColour(ci->client_playas), false, ci->client_name, msg, data);