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: 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: dominik@738: void NetworkGameListRemoveItem(NetworkGameList *remove) dominik@738: { dominik@738: NetworkGameList *item; dominik@738: dominik@738: item = _network_game_list; dominik@738: dominik@738: // examine head of the list dominik@738: if ( remove == _network_game_list ) { dominik@738: _network_game_list = remove->next; dominik@738: free(remove); dominik@738: DEBUG(net, 4) ("[NET][GameList] Removed server from list"); dominik@738: return; dominik@738: } dominik@738: dominik@738: // examine each item dominik@738: while ( item->next != NULL ) { dominik@738: if ( item->next == remove ) dominik@738: { dominik@738: item->next = remove->next; dominik@738: free(remove); dominik@738: DEBUG(net, 4) ("[NET][GameList] Removed server from list"); dominik@738: return; dominik@738: } dominik@738: item = item->next; dominik@738: } dominik@738: } dominik@738: truelight@543: #endif /* ENABLE_NETWORK */