(svn r6933) -Feature: Allow spectators to speak to eachother (team)
authorDarkvater
Tue, 24 Oct 2006 22:26:20 +0000
changeset 4945 c5c9bfb156fb
parent 4944 c61494b1ec35
child 4946 42acc5fef0af
(svn r6933) -Feature: Allow spectators to speak to eachother (team)
lang/english.txt
network_client.c
network_gui.c
network_server.c
--- a/lang/english.txt	Tue Oct 24 22:23:08 2006 +0000
+++ b/lang/english.txt	Tue Oct 24 22:26:20 2006 +0000
@@ -1445,6 +1445,7 @@
 
 STR_NETWORK_SERVER                                              :Server
 STR_NETWORK_CLIENT                                              :Client
+STR_NETWORK_SPECTATORS                                          :Spectators
 
 STR_NETWORK_CLIENTLIST_NONE                                     :(none)
 STR_NETWORK_CLIENTLIST_KICK                                     :Kick
--- a/network_client.c	Tue Oct 24 22:23:08 2006 +0000
+++ b/network_client.c	Tue Oct 24 22:26:20 2006 +0000
@@ -623,14 +623,17 @@
 				snprintf(name, sizeof(name), "%s", ci_to->client_name);
 				ci = NetworkFindClientInfoFromIndex(_network_own_client_index);
 				break;
-			case NETWORK_ACTION_CHAT_COMPANY:
+
+			/* For speaking to company or giving money, we need the player-name */
 			case NETWORK_ACTION_GIVE_MONEY:
-				/* For speaking to player or give money, we need the player-name */
-				if (!IsValidPlayer(ci_to->client_playas)) return NETWORK_RECV_STATUS_OKAY; // This should never happen
+				if (!IsValidPlayer(ci_to->client_playas)) return NETWORK_RECV_STATUS_OKAY;
+				/* fallthrough */
+			case NETWORK_ACTION_CHAT_COMPANY: {
+				StringID str = IsValidPlayer(ci_to->client_playas) ? GetPlayer(ci_to->client_playas)->name_1 : STR_NETWORK_SPECTATORS;
 
-				GetString(name, GetPlayer(ci_to->client_playas)->name_1, lastof(name));
+				GetString(name, str, lastof(name));
 				ci = NetworkFindClientInfoFromIndex(_network_own_client_index);
-				break;
+			} break;
 			default:
 				/* This should never happen */
 				NOT_REACHED();
--- a/network_gui.c	Tue Oct 24 22:23:08 2006 +0000
+++ b/network_gui.c	Tue Oct 24 22:26:20 2006 +0000
@@ -1185,7 +1185,7 @@
 		_clientlist_proc[i++] = &ClientList_SpeakToClient;
 	}
 
-	if (IsValidPlayer(ci->client_playas)) {
+	if (IsValidPlayer(ci->client_playas) || ci->client_playas == PLAYER_SPECTATOR) {
 		GetString(_clientlist_action[i], STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY, lastof(_clientlist_action[i]));
 		_clientlist_proc[i++] = &ClientList_SpeakToCompany;
 	}
--- a/network_server.c	Tue Oct 24 22:23:08 2006 +0000
+++ b/network_server.c	Tue Oct 24 22:26:20 2006 +0000
@@ -1044,7 +1044,8 @@
 		if (ci != NULL && show_local) {
 			if (from_index == NETWORK_SERVER_INDEX) {
 				char name[NETWORK_NAME_LENGTH];
-				GetString(name, GetPlayer(ci_to->client_playas)->name_1, lastof(name));
+				StringID str = IsValidPlayer(ci_to->client_playas) ? GetPlayer(ci_to->client_playas)->name_1 : STR_NETWORK_SPECTATORS;
+				GetString(name, str, lastof(name));
 				NetworkTextMessage(action, GetDrawStringPlayerColor(ci_own->client_playas), true, name, "%s", msg);
 			} else {
 				FOR_ALL_CLIENTS(cs) {