network_client.c
branch0.5
changeset 5424 f09762e44457
parent 5407 e354823cde11
child 5494 374bd2a631c7
equal deleted inserted replaced
5423:fe538ebc1bdd 5424:f09762e44457
    72 	NetworkSend_string(p, _openttd_revision);
    72 	NetworkSend_string(p, _openttd_revision);
    73 	NetworkSend_string(p, _network_player_name); // Player name
    73 	NetworkSend_string(p, _network_player_name); // Player name
    74 	NetworkSend_uint8(p, _network_playas); // PlayAs
    74 	NetworkSend_uint8(p, _network_playas); // PlayAs
    75 	NetworkSend_uint8(p, NETLANG_ANY); // Language
    75 	NetworkSend_uint8(p, NETLANG_ANY); // Language
    76 	NetworkSend_string(p, _network_unique_id);
    76 	NetworkSend_string(p, _network_unique_id);
       
    77 	NetworkSend_Packet(p, MY_CLIENT);
       
    78 }
       
    79 
       
    80 DEF_CLIENT_SEND_COMMAND(PACKET_CLIENT_NEWGRFS_CHECKED)
       
    81 {
       
    82 	//
       
    83 	// Packet: CLIENT_NEWGRFS_CHECKED
       
    84 	// Function: Tell the server that we have the required GRFs
       
    85 	// Data:
       
    86 	//
       
    87 
       
    88 	Packet *p = NetworkSend_Init(PACKET_CLIENT_NEWGRFS_CHECKED);
    77 	NetworkSend_Packet(p, MY_CLIENT);
    89 	NetworkSend_Packet(p, MY_CLIENT);
    78 }
    90 }
    79 
    91 
    80 DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_PASSWORD)(NetworkPasswordType type, const char *password)
    92 DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_PASSWORD)(NetworkPasswordType type, const char *password)
    81 {
    93 {
   403 	}
   415 	}
   404 
   416 
   405 	DeleteWindowById(WC_NETWORK_STATUS_WINDOW, 0);
   417 	DeleteWindowById(WC_NETWORK_STATUS_WINDOW, 0);
   406 
   418 
   407 	return NETWORK_RECV_STATUS_SERVER_ERROR;
   419 	return NETWORK_RECV_STATUS_SERVER_ERROR;
       
   420 }
       
   421 
       
   422 DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_CHECK_NEWGRFS)
       
   423 {
       
   424 	uint grf_count = NetworkRecv_uint8(MY_CLIENT, p);
       
   425 	NetworkRecvStatus ret = NETWORK_RECV_STATUS_OKAY;
       
   426 
       
   427 	/* Check all GRFs */
       
   428 	for (; grf_count > 0; grf_count--) {
       
   429 		GRFConfig c;
       
   430 		const GRFConfig *f;
       
   431 
       
   432 		NetworkRecv_GRFIdentifier(MY_CLIENT, p, &c);
       
   433 
       
   434 		/* Check whether we know this GRF */
       
   435 		f = FindGRFConfig(c.grfid, c.md5sum);
       
   436 		if (f == NULL) {
       
   437 			/* We do not know this GRF, bail out of initialization */
       
   438 			char buf[sizeof(c.md5sum) * 2 + 1];
       
   439 			md5sumToString(buf, lastof(buf), c.md5sum);
       
   440 			DEBUG(grf, 0)("NewGRF %08X not found; checksum %s", BSWAP32(c.grfid), buf);
       
   441 			ret = NETWORK_RECV_STATUS_NEWGRF_MISMATCH;
       
   442 		}
       
   443 	}
       
   444 
       
   445 	if (ret == NETWORK_RECV_STATUS_OKAY) {
       
   446 		/* Start receiving the map */
       
   447 		SEND_COMMAND(PACKET_CLIENT_NEWGRFS_CHECKED)();
       
   448 	} else {
       
   449 		/* NewGRF mismatch, bail out */
       
   450 		_switch_mode_errorstr = STR_NETWORK_ERR_NEWGRF_MISMATCH;
       
   451 	}
       
   452 	return ret;
   408 }
   453 }
   409 
   454 
   410 DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_NEED_PASSWORD)
   455 DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_NEED_PASSWORD)
   411 {
   456 {
   412 	NetworkPasswordType type = NetworkRecv_uint8(MY_CLIENT, p);
   457 	NetworkPasswordType type = NetworkRecv_uint8(MY_CLIENT, p);
   786 	RECEIVE_COMMAND(PACKET_SERVER_ERROR_QUIT),
   831 	RECEIVE_COMMAND(PACKET_SERVER_ERROR_QUIT),
   787 	RECEIVE_COMMAND(PACKET_SERVER_SHUTDOWN),
   832 	RECEIVE_COMMAND(PACKET_SERVER_SHUTDOWN),
   788 	RECEIVE_COMMAND(PACKET_SERVER_NEWGAME),
   833 	RECEIVE_COMMAND(PACKET_SERVER_NEWGAME),
   789 	RECEIVE_COMMAND(PACKET_SERVER_RCON),
   834 	RECEIVE_COMMAND(PACKET_SERVER_RCON),
   790 	NULL, /*PACKET_CLIENT_RCON,*/
   835 	NULL, /*PACKET_CLIENT_RCON,*/
       
   836 	RECEIVE_COMMAND(PACKET_SERVER_CHECK_NEWGRFS),
       
   837 	NULL, /*PACKET_CLIENT_NEWGRFS_CHECKED,*/
   791 };
   838 };
   792 
   839 
   793 // If this fails, check the array above with network_data.h
   840 // If this fails, check the array above with network_data.h
   794 assert_compile(lengthof(_network_client_packet) == PACKET_END);
   841 assert_compile(lengthof(_network_client_packet) == PACKET_END);
   795 
   842