|
@@ -121,13 +121,13 @@ DEF_CLIENT_SEND_COMMAND(PACKET_CLIENT_CO
|
|
|
* Function: Request company-info (in detail)
|
|
|
* Data:
|
|
|
* <none>
|
|
|
*/
|
|
|
Packet *p;
|
|
|
_network_join_status = NETWORK_JOIN_STATUS_GETTING_COMPANY_INFO;
|
|
|
InvalidateWindow(WC_NETWORK_STATUS_WINDOW, 0);
|
|
|
SetWindowDirty(WC_NETWORK_STATUS_WINDOW, 0);
|
|
|
|
|
|
p = NetworkSend_Init(PACKET_CLIENT_COMPANY_INFO);
|
|
|
MY_CLIENT->Send_Packet(p);
|
|
|
}
|
|
|
|
|
|
DEF_CLIENT_SEND_COMMAND(PACKET_CLIENT_JOIN)
|
|
@@ -142,13 +142,13 @@ DEF_CLIENT_SEND_COMMAND(PACKET_CLIENT_JO
|
|
|
* uint8: Language ID
|
|
|
* String: Unique id to find the client back in server-listing
|
|
|
*/
|
|
|
|
|
|
Packet *p;
|
|
|
_network_join_status = NETWORK_JOIN_STATUS_AUTHORIZING;
|
|
|
InvalidateWindow(WC_NETWORK_STATUS_WINDOW, 0);
|
|
|
SetWindowDirty(WC_NETWORK_STATUS_WINDOW, 0);
|
|
|
|
|
|
p = NetworkSend_Init(PACKET_CLIENT_JOIN);
|
|
|
p->Send_string(_openttd_revision);
|
|
|
p->Send_string(_settings_client.network.client_name); // Client name
|
|
|
p->Send_uint8 (_network_join_as); // PlayAs
|
|
|
p->Send_uint8 (NETLANG_ANY); // Language
|
|
@@ -396,13 +396,13 @@ DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER
|
|
|
for (int i = 0; i < NETWORK_STATION_TYPES; i++)
|
|
|
company_info->num_station[i] = p->Recv_uint16();
|
|
|
company_info->ai = p->Recv_bool();
|
|
|
|
|
|
p->Recv_string(company_info->clients, sizeof(company_info->clients));
|
|
|
|
|
|
InvalidateWindow(WC_NETWORK_WINDOW, 0);
|
|
|
SetWindowDirty(WC_NETWORK_WINDOW, 0);
|
|
|
|
|
|
return NETWORK_RECV_STATUS_OKAY;
|
|
|
}
|
|
|
|
|
|
return NETWORK_RECV_STATUS_CLOSE_QUERY;
|
|
|
}
|
|
@@ -431,25 +431,25 @@ DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER
|
|
|
* Do not display that for now */
|
|
|
}
|
|
|
|
|
|
ci->client_playas = playas;
|
|
|
strecpy(ci->client_name, name, lastof(ci->client_name));
|
|
|
|
|
|
InvalidateWindow(WC_CLIENT_LIST, 0);
|
|
|
SetWindowDirty(WC_CLIENT_LIST, 0);
|
|
|
|
|
|
return NETWORK_RECV_STATUS_OKAY;
|
|
|
}
|
|
|
|
|
|
/* We don't have this client_id yet, find an empty client_id, and put the data there */
|
|
|
ci = new NetworkClientInfo(client_id);
|
|
|
ci->client_playas = playas;
|
|
|
if (client_id == _network_own_client_id) MY_CLIENT->SetInfo(ci);
|
|
|
|
|
|
strecpy(ci->client_name, name, lastof(ci->client_name));
|
|
|
|
|
|
InvalidateWindow(WC_CLIENT_LIST, 0);
|
|
|
SetWindowDirty(WC_CLIENT_LIST, 0);
|
|
|
|
|
|
return NETWORK_RECV_STATUS_OKAY;
|
|
|
}
|
|
|
|
|
|
DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_ERROR)
|
|
|
{
|
|
@@ -557,13 +557,13 @@ DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER
|
|
|
}
|
|
|
|
|
|
DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_WAIT)
|
|
|
{
|
|
|
_network_join_status = NETWORK_JOIN_STATUS_WAITING;
|
|
|
_network_join_waiting = p->Recv_uint8();
|
|
|
InvalidateWindow(WC_NETWORK_STATUS_WINDOW, 0);
|
|
|
SetWindowDirty(WC_NETWORK_STATUS_WINDOW, 0);
|
|
|
|
|
|
/* We are put on hold for receiving the map.. we need GUI for this ;) */
|
|
|
DEBUG(net, 1, "The server is currently busy sending the map to someone else, please wait..." );
|
|
|
DEBUG(net, 1, "There are %d clients in front of you", _network_join_waiting);
|
|
|
|
|
|
return NETWORK_RECV_STATUS_OKAY;
|
|
@@ -598,13 +598,13 @@ DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER
|
|
|
* that. If kbytes_total is 0, the packet must be malformed as a
|
|
|
* savegame less than 1 kilobyte is practically impossible. */
|
|
|
if (MY_CLIENT->HasClientQuit()) return NETWORK_RECV_STATUS_CONN_LOST;
|
|
|
if (_network_join_bytes_total == 0) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
|
|
|
|
|
_network_join_status = NETWORK_JOIN_STATUS_DOWNLOADING;
|
|
|
InvalidateWindow(WC_NETWORK_STATUS_WINDOW, 0);
|
|
|
SetWindowDirty(WC_NETWORK_STATUS_WINDOW, 0);
|
|
|
|
|
|
/* The first packet does not contain any more data */
|
|
|
return NETWORK_RECV_STATUS_OKAY;
|
|
|
}
|
|
|
|
|
|
if (maptype == MAP_PACKET_NORMAL) {
|
|
@@ -612,21 +612,21 @@ DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER
|
|
|
if (fwrite(p->buffer + p->pos, 1, p->size - p->pos, file_pointer) != (size_t)(p->size - p->pos)) {
|
|
|
_switch_mode_errorstr = STR_NETWORK_ERROR_SAVEGAMEERROR;
|
|
|
return NETWORK_RECV_STATUS_SAVEGAME;
|
|
|
}
|
|
|
|
|
|
_network_join_bytes = ftell(file_pointer);
|
|
|
InvalidateWindow(WC_NETWORK_STATUS_WINDOW, 0);
|
|
|
SetWindowDirty(WC_NETWORK_STATUS_WINDOW, 0);
|
|
|
}
|
|
|
|
|
|
/* Check if this was the last packet */
|
|
|
if (maptype == MAP_PACKET_END) {
|
|
|
fclose(file_pointer);
|
|
|
|
|
|
_network_join_status = NETWORK_JOIN_STATUS_PROCESSING;
|
|
|
InvalidateWindow(WC_NETWORK_STATUS_WINDOW, 0);
|
|
|
SetWindowDirty(WC_NETWORK_STATUS_WINDOW, 0);
|
|
|
|
|
|
/* The map is done downloading, load it */
|
|
|
if (!SafeSaveOrLoad("network_client.tmp", SL_LOAD, GM_NORMAL, AUTOSAVE_DIR)) {
|
|
|
DeleteWindowById(WC_NETWORK_STATUS_WINDOW, 0);
|
|
|
_switch_mode_errorstr = STR_NETWORK_ERROR_SAVEGAMEERROR;
|
|
|
return NETWORK_RECV_STATUS_SAVEGAME;
|
|
@@ -772,13 +772,13 @@ DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER
|
|
|
NetworkClientInfo *ci = NetworkFindClientInfoFromClientID(client_id);
|
|
|
if (ci != NULL) {
|
|
|
NetworkTextMessage(NETWORK_ACTION_LEAVE, CC_DEFAULT, false, ci->client_name, NULL, GetNetworkErrorMsg((NetworkErrorCode)p->Recv_uint8()));
|
|
|
delete ci;
|
|
|
}
|
|
|
|
|
|
InvalidateWindow(WC_CLIENT_LIST, 0);
|
|
|
SetWindowDirty(WC_CLIENT_LIST, 0);
|
|
|
|
|
|
return NETWORK_RECV_STATUS_OKAY;
|
|
|
}
|
|
|
|
|
|
DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_QUIT)
|
|
|
{
|
|
@@ -791,13 +791,13 @@ DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER
|
|
|
NetworkTextMessage(NETWORK_ACTION_LEAVE, CC_DEFAULT, false, ci->client_name, NULL, STR_NETWORK_MESSAGE_CLIENT_LEAVING);
|
|
|
delete ci;
|
|
|
} else {
|
|
|
DEBUG(net, 0, "Unknown client (%d) is leaving the game", client_id);
|
|
|
}
|
|
|
|
|
|
InvalidateWindow(WC_CLIENT_LIST, 0);
|
|
|
SetWindowDirty(WC_CLIENT_LIST, 0);
|
|
|
|
|
|
/* If we come here it means we could not locate the client.. strange :s */
|
|
|
return NETWORK_RECV_STATUS_OKAY;
|
|
|
}
|
|
|
|
|
|
DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_JOIN)
|
|
@@ -805,13 +805,13 @@ DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER
|
|
|
ClientID client_id = (ClientID)p->Recv_uint32();
|
|
|
|
|
|
NetworkClientInfo *ci = NetworkFindClientInfoFromClientID(client_id);
|
|
|
if (ci != NULL)
|
|
|
NetworkTextMessage(NETWORK_ACTION_JOIN, CC_DEFAULT, false, ci->client_name);
|
|
|
|
|
|
InvalidateWindow(WC_CLIENT_LIST, 0);
|
|
|
SetWindowDirty(WC_CLIENT_LIST, 0);
|
|
|
|
|
|
return NETWORK_RECV_STATUS_OKAY;
|
|
|
}
|
|
|
|
|
|
DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_SHUTDOWN)
|
|
|
{
|
|
@@ -878,13 +878,13 @@ DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER
|
|
|
return NETWORK_RECV_STATUS_OKAY;
|
|
|
}
|
|
|
|
|
|
DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_COMPANY_UPDATE)
|
|
|
{
|
|
|
_network_company_passworded = p->Recv_uint16();
|
|
|
InvalidateWindowClasses(WC_COMPANY);
|
|
|
SetWindowClassesDirty(WC_COMPANY);
|
|
|
|
|
|
return NETWORK_RECV_STATUS_OKAY;
|
|
|
}
|
|
|
|
|
|
|
|
|
/* The layout for the receive-functions by the client */
|