truelight@543: #include "stdafx.h" truelight@543: #include "network_data.h" truelight@543: truelight@543: #ifdef ENABLE_NETWORK truelight@543: truelight@543: // truelight@543: // This file handles the GameList truelight@543: // Also, it handles the request to a server for data about the server truelight@543: truelight@543: extern void UpdateNetworkGameWindow(bool unselect); truelight@543: truelight@543: void NetworkGameListClear(void) truelight@543: { truelight@543: NetworkGameList *item; truelight@543: NetworkGameList *next; truelight@543: truelight@543: item = _network_game_list; truelight@543: truelight@543: while (item != NULL) { truelight@543: next = item->next; truelight@543: free(item); truelight@543: item = next; truelight@543: } truelight@543: _network_game_list = NULL; truelight@543: _network_game_count = 0; truelight@543: truelight@543: UpdateNetworkGameWindow(true); truelight@543: truelight@543: DEBUG(net, 4)("[NET][GameList] Cleared list"); truelight@543: } truelight@543: truelight@543: NetworkGameList *NetworkGameListAddItem(uint32 ip, uint16 port) truelight@543: { truelight@543: NetworkGameList *item; truelight@543: truelight@543: item = _network_game_list; truelight@543: if (item != NULL) { truelight@543: while (item->next != NULL) { truelight@543: if (item->ip == ip && item->port == port) truelight@543: return item; truelight@543: item = item->next; truelight@543: } truelight@543: truelight@543: if (item->ip == ip && item->port == port) truelight@543: return item; truelight@543: truelight@543: item->next = malloc(sizeof(*item)); truelight@543: item = item->next; truelight@543: } else { truelight@543: item = malloc(sizeof(*item)); truelight@543: _network_game_list = item; truelight@543: } truelight@543: truelight@543: DEBUG(net, 4) ("[NET][GameList] Added server to list"); truelight@543: truelight@543: memset(item, 0, sizeof(*item)); truelight@543: truelight@543: item->next = NULL; truelight@543: item->ip = ip; truelight@543: item->port = port; truelight@543: _network_game_count++; truelight@543: truelight@543: UpdateNetworkGameWindow(false); truelight@543: truelight@543: return item; truelight@543: } truelight@543: truelight@543: void NetworkGameListAddQueriedItem(NetworkGameInfo *info, bool server_online) truelight@543: { truelight@543: // We queried a server and now we are going to add it to the list truelight@543: NetworkGameList *item; truelight@543: truelight@543: item = NetworkGameListAddItem(_network_last_host_ip, _network_last_port); truelight@543: item->online = server_online; truelight@543: memcpy(&item->info, info, sizeof(NetworkGameInfo)); truelight@543: ttd_strlcpy(item->info.hostname, _network_last_host, sizeof(item->info.hostname)); truelight@543: truelight@543: UpdateNetworkGameWindow(false); truelight@543: } truelight@543: truelight@543: #endif /* ENABLE_NETWORK */ truelight@543: truelight@543: