mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-09 07:29:44 +00:00
(svn r14723) -Codechange: shuffling some stuff around to reduce indirect #include dependencies.
This commit is contained in:
parent
d501a20065
commit
9476a49763
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
39
src/network/network_base.h
Normal file
39
src/network/network_base.h
Normal file
@ -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…
Reference in New Issue
Block a user