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 |