Changeset - r13106:fb30e194b359
[Not reviewed]
master
0 1 0
rubidium - 15 years ago 2009-09-22 21:14:31
rubidium@openttd.org
(svn r17618) -Fix [FS#3226]: the 'lock' icon would erroneously be drawn for companies if the company had a password before the reset
1 file changed with 1 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/network/network.cpp
Show inline comments
 
@@ -753,96 +753,97 @@ void NetworkClientConnectGame(NetworkAdd
 
}
 

	
 
static void NetworkInitGameInfo()
 
{
 
	if (StrEmpty(_settings_client.network.server_name)) {
 
		snprintf(_settings_client.network.server_name, sizeof(_settings_client.network.server_name), "Unnamed Server");
 
	}
 

	
 
	/* The server is a client too */
 
	_network_game_info.clients_on = _network_dedicated ? 0 : 1;
 

	
 
	NetworkClientInfo *ci = new NetworkClientInfo(CLIENT_ID_SERVER);
 
	ci->client_playas = _network_dedicated ? COMPANY_SPECTATOR : _local_company;
 
	/* Give the server a valid IP; banning it is pointless anyways */
 
	sockaddr_in sock;
 
	memset(&sock, 0, sizeof(sock));
 
	sock.sin_family = AF_INET;
 
	ci->client_address = NetworkAddress((sockaddr*)&sock, sizeof(sock));
 

	
 
	strecpy(ci->client_name, _settings_client.network.client_name, lastof(ci->client_name));
 
	strecpy(ci->unique_id, _settings_client.network.network_id, lastof(ci->unique_id));
 
}
 

	
 
bool NetworkServerStart()
 
{
 
	if (!_network_available) return false;
 

	
 
	/* Call the pre-scripts */
 
	IConsoleCmdExec("exec scripts/pre_server.scr 0");
 
	if (_network_dedicated) IConsoleCmdExec("exec scripts/pre_dedicated.scr 0");
 

	
 
	NetworkDisconnect();
 
	NetworkInitialize();
 
	if (!NetworkListen()) return false;
 

	
 
	/* Try to start UDP-server */
 
	_network_udp_server = _udp_server_socket->Listen();
 

	
 
	_network_company_states = CallocT<NetworkCompanyState>(MAX_COMPANIES);
 
	_network_server = true;
 
	_networking = true;
 
	_frame_counter = 0;
 
	_frame_counter_server = 0;
 
	_frame_counter_max = 0;
 
	_last_sync_frame = 0;
 
	_network_own_client_id = CLIENT_ID_SERVER;
 

	
 
	_network_clients_connected = 0;
 
	_network_company_passworded = 0;
 

	
 
	NetworkInitGameInfo();
 

	
 
	/* execute server initialization script */
 
	IConsoleCmdExec("exec scripts/on_server.scr 0");
 
	/* if the server is dedicated ... add some other script */
 
	if (_network_dedicated) IConsoleCmdExec("exec scripts/on_dedicated.scr 0");
 

	
 
	/* Try to register us to the master server */
 
	_network_last_advertise_frame = 0;
 
	_network_need_advertise = true;
 
	NetworkUDPAdvertise();
 
	return true;
 
}
 

	
 
/* The server is rebooting...
 
 * The only difference with NetworkDisconnect, is the packets that is sent */
 
void NetworkReboot()
 
{
 
	if (_network_server) {
 
		NetworkClientSocket *cs;
 
		FOR_ALL_CLIENT_SOCKETS(cs) {
 
			SEND_COMMAND(PACKET_SERVER_NEWGAME)(cs);
 
			cs->Send_Packets();
 
		}
 
	}
 

	
 
	NetworkClose();
 
}
 

	
 
/**
 
 * We want to disconnect from the host/clients.
 
 * @param blocking whether to wait till everything has been closed
 
 */
 
void NetworkDisconnect(bool blocking)
 
{
 
	if (_network_server) {
 
		NetworkClientSocket *cs;
 
		FOR_ALL_CLIENT_SOCKETS(cs) {
 
			SEND_COMMAND(PACKET_SERVER_SHUTDOWN)(cs);
 
			cs->Send_Packets();
 
		}
 
	}
 

	
 
	if (_settings_client.network.server_advertise) NetworkUDPRemoveAdvertise(blocking);
 

	
 
	DeleteWindowById(WC_NETWORK_STATUS_WINDOW, 0);
 

	
0 comments (0 inline, 0 general)