(svn r14723) -Codechange: shuffling some stuff around to reduce indirect #include dependencies.

pull/155/head
rubidium 16 years ago
parent 768fdee77a
commit 97662a0fff

@ -14,6 +14,7 @@
#include "command_func.h"
#include "network/network.h"
#include "network/network_func.h"
#include "network/network_base.h"
#include "variables.h"
#include "cheat_func.h"
#include "ai/ai.h"

@ -12,6 +12,7 @@
#include "variables.h"
#include "network/network.h"
#include "network/network_func.h"
#include "network/network_base.h"
#include "command_func.h"
#include "settings_func.h"
#include "fios.h"

@ -36,6 +36,7 @@
#include "network/network.h"
#include "network/network_func.h"
#include "network/network_gui.h"
#include "network/network_base.h"
#include "table/sprites.h"
#include "table/strings.h"

@ -113,9 +113,8 @@ public:
inline NetworkClientInfo *GetInfo() const
{
extern NetworkClientInfo _network_client_info[MAX_CLIENT_INFO];
extern NetworkClientSocket _clients[MAX_CLIENTS];
return &_network_client_info[this - _clients];
return GetNetworkClientInfo(this - _clients);
}
};

@ -107,7 +107,7 @@ extern void StateGameLoop();
*/
NetworkClientInfo *NetworkFindClientInfoFromIndex(ClientIndex index)
{
return &_network_client_info[index];
return IsValidNetworkClientInfoIndex(index) ? GetNetworkClientInfo(index) : NULL;
}
/**

@ -0,0 +1,39 @@
/* $Id$ */
/** @file network_base.h Base core network types and some helper functions to access them. */
#ifndef NETWORK_BASE_H
#define NETWORK_BASE_H
#ifdef ENABLE_NETWORK
#include "network_type.h"
struct NetworkClientInfo {
ClientID client_id; ///< Client identifier (same as ClientState->client_id)
char client_name[NETWORK_CLIENT_NAME_LENGTH]; ///< Name of the client
byte client_lang; ///< The language of the client
CompanyID client_playas; ///< As which company is this client playing (CompanyID)
uint32 client_ip; ///< IP-address of the client (so he can be banned)
Date join_date; ///< Gamedate the client has joined
char unique_id[NETWORK_UNIQUE_ID_LENGTH]; ///< Every play sends an unique id so we can indentify him
inline bool IsValid() const { return client_id != INVALID_CLIENT_ID; }
};
static NetworkClientInfo *GetNetworkClientInfo(int ci)
{
extern NetworkClientInfo _network_client_info[MAX_CLIENT_INFO];
return &_network_client_info[ci];
}
static inline bool IsValidNetworkClientInfoIndex(ClientIndex index)
{
return (uint)index < MAX_CLIENT_INFO && GetNetworkClientInfo(index)->IsValid();
}
#define FOR_ALL_CLIENT_INFOS_FROM(d, start) for (ci = GetNetworkClientInfo(start); ci != GetNetworkClientInfo(MAX_CLIENT_INFO); ci++) if (ci->IsValid())
#define FOR_ALL_CLIENT_INFOS(d) FOR_ALL_CLIENT_INFOS_FROM(d, 0)
#endif /* ENABLE_NETWORK */
#endif /* NETWORK_BASE_H */

@ -301,8 +301,8 @@ struct NetworkChatWindow : public QueryStringBaseWindow {
/* First, try clients */
if (*item < MAX_CLIENT_INFO) {
/* Skip inactive clients */
while (_network_client_info[*item].client_id == INVALID_CLIENT_ID && *item < MAX_CLIENT_INFO) (*item)++;
if (*item < MAX_CLIENT_INFO) return _network_client_info[*item].client_name;
while (GetNetworkClientInfo(*item)->client_id == INVALID_CLIENT_ID && *item < MAX_CLIENT_INFO) (*item)++;
if (*item < MAX_CLIENT_INFO) return GetNetworkClientInfo(*item)->client_name;
}
/* Then, try townnames */

@ -64,7 +64,5 @@ void CDECL NetworkAddChatMessage(uint16 color, uint8 duration, const char *messa
void NetworkUndrawChatMessage();
void NetworkChatMessageDailyLoop();
#define FOR_ALL_CLIENT_INFOS(ci) for (ci = _network_client_info; ci != endof(_network_client_info); ci++) if (ci->client_id != INVALID_CLIENT_ID)
#endif /* ENABLE_NETWORK */
#endif /* NETWORK_FUNC_H */

@ -9,6 +9,7 @@
#include "network.h"
#include "network_func.h"
#include "network_base.h"
#include "core/os_abstraction.h"
#include "core/core.h"
#include "core/config.h"
@ -91,8 +92,6 @@ 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

@ -53,15 +53,7 @@ struct NetworkCompanyState {
uint16 months_empty; ///< How many months the company is empty
};
struct NetworkClientInfo {
ClientID client_id; ///< Client identifier (same as ClientState->client_id)
char client_name[NETWORK_CLIENT_NAME_LENGTH]; ///< Name of the client
byte client_lang; ///< The language of the client
CompanyID client_playas; ///< As which company is this client playing (CompanyID)
uint32 client_ip; ///< IP-address of the client (so he can be banned)
Date join_date; ///< Gamedate the client has joined
char unique_id[NETWORK_UNIQUE_ID_LENGTH]; ///< Every play sends an unique id so we can indentify him
};
struct NetworkClientInfo;
enum NetworkPasswordType {
NETWORK_GAME_PASSWORD,

Loading…
Cancel
Save