summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/company_cmd.cpp4
-rw-r--r--src/network/network.cpp28
-rw-r--r--src/network/network_func.h2
-rw-r--r--src/network/network_internal.h2
4 files changed, 29 insertions, 7 deletions
diff --git a/src/company_cmd.cpp b/src/company_cmd.cpp
index fd56806b6..525c95967 100644
--- a/src/company_cmd.cpp
+++ b/src/company_cmd.cpp
@@ -821,7 +821,7 @@ CommandCost CmdCompanyCtrl(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
/* A new company could not be created, revert to being a spectator */
if (c == NULL) {
if (_network_server) {
- NetworkClientInfo *ci = &_network_client_info[cid];
+ NetworkClientInfo *ci = NetworkFindClientInfoFromIndex(cid);
ci->client_playas = COMPANY_SPECTATOR;
NetworkUpdateClientInfo(ci->client_id);
} else if (_local_company == COMPANY_SPECTATOR) {
@@ -857,7 +857,7 @@ CommandCost CmdCompanyCtrl(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
/* XXX - UGLY! p2 (pid) is mis-used to fetch the client-id, done at
* server-side in network_server.c:838, function
* DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_COMMAND) */
- NetworkClientInfo *ci = &_network_client_info[cid];
+ NetworkClientInfo *ci = NetworkFindClientInfoFromIndex(cid);
ci->client_playas = c->index;
NetworkUpdateClientInfo(ci->client_id);
diff --git a/src/network/network.cpp b/src/network/network.cpp
index 85da1bb82..2983446fc 100644
--- a/src/network/network.cpp
+++ b/src/network/network.cpp
@@ -100,7 +100,21 @@ static ClientID _network_client_id = CLIENT_ID_FIRST;
/* Some externs / forwards */
extern void StateGameLoop();
-// Function that looks up the CI for a given client-identifier
+/**
+ * Return the CI given it's raw index
+ * @param index the index to search for
+ * @return return a pointer to the corresponding NetworkClientInfo struct
+ */
+NetworkClientInfo *NetworkFindClientInfoFromIndex(ClientIndex index)
+{
+ return &_network_client_info[index];
+}
+
+/**
+ * Return the CI given it's client-identifier
+ * @param client_id the ClientID to search for
+ * @return return a pointer to the corresponding NetworkClientInfo struct or NULL when not found
+ */
NetworkClientInfo *NetworkFindClientInfoFromClientID(ClientID client_id)
{
NetworkClientInfo *ci;
@@ -112,9 +126,11 @@ NetworkClientInfo *NetworkFindClientInfoFromClientID(ClientID client_id)
return NULL;
}
-/** Return the CI for a given IP
+/**
+ * Return the CI for a given IP
* @param ip IP of the client we are looking for. This must be in string-format
- * @return return a pointer to the corresponding NetworkClientInfo struct or NULL on failure */
+ * @return return a pointer to the corresponding NetworkClientInfo struct or NULL when not found
+ */
NetworkClientInfo *NetworkFindClientInfoFromIP(const char *ip)
{
NetworkClientInfo *ci;
@@ -127,7 +143,11 @@ NetworkClientInfo *NetworkFindClientInfoFromIP(const char *ip)
return NULL;
}
-// Function that looks up the CS for a given client-identifier
+/**
+ * Return the client state given it's client-identifier
+ * @param client_id the ClientID to search for
+ * @return return a pointer to the corresponding NetworkTCPSocketHandler struct or NULL when not found
+ */
NetworkTCPSocketHandler *NetworkFindClientStateFromClientID(ClientID client_id)
{
NetworkTCPSocketHandler *cs;
diff --git a/src/network/network_func.h b/src/network/network_func.h
index f5bcff496..ebc5c9da2 100644
--- a/src/network/network_func.h
+++ b/src/network/network_func.h
@@ -11,7 +11,6 @@
#include "../console_type.h"
extern NetworkServerGameInfo _network_game_info;
-extern NetworkClientInfo _network_client_info[MAX_CLIENT_INFO];
extern NetworkCompanyState *_network_company_states;
extern ClientID _network_own_client_id;
@@ -51,6 +50,7 @@ void NetworkServerChangeOwner(Owner current_owner, Owner new_owner);
void NetworkServerShowStatusToConsole();
bool NetworkServerStart();
+NetworkClientInfo *NetworkFindClientInfoFromIndex(ClientIndex index);
NetworkClientInfo *NetworkFindClientInfoFromClientID(ClientID client_id);
NetworkClientInfo *NetworkFindClientInfoFromIP(const char *ip);
const char* GetClientIP(const NetworkClientInfo *ci);
diff --git a/src/network/network_internal.h b/src/network/network_internal.h
index 10107d852..4e970f58d 100644
--- a/src/network/network_internal.h
+++ b/src/network/network_internal.h
@@ -91,6 +91,8 @@ enum NetworkLanguage {
NETLANG_COUNT
};
+extern NetworkClientInfo _network_client_info[MAX_CLIENT_INFO];
+
extern uint32 _frame_counter_server; // The frame_counter of the server, if in network-mode
extern uint32 _frame_counter_max; // To where we may go with our clients