diff options
author | truelight <truelight@openttd.org> | 2004-12-04 17:54:56 +0000 |
---|---|---|
committer | truelight <truelight@openttd.org> | 2004-12-04 17:54:56 +0000 |
commit | b8f6d41418982163965dd5beb0b39dbdce1fbe8f (patch) | |
tree | 68d3e795694a875138c369707ed74b5b4b022d49 /network_gamelist.c | |
parent | 0434287ef826a4ed72cd8528a52a86ae8b70a948 (diff) | |
download | openttd-b8f6d41418982163965dd5beb0b39dbdce1fbe8f.tar.xz |
(svn r942) -Merged branch/network back into the trunk
Diffstat (limited to 'network_gamelist.c')
-rw-r--r-- | network_gamelist.c | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/network_gamelist.c b/network_gamelist.c new file mode 100644 index 000000000..6aa4cc90e --- /dev/null +++ b/network_gamelist.c @@ -0,0 +1,83 @@ +#include "stdafx.h" +#include "network_data.h" + +#ifdef ENABLE_NETWORK + +// +// This file handles the GameList +// Also, it handles the request to a server for data about the server + +extern void UpdateNetworkGameWindow(bool unselect); + +void NetworkGameListClear(void) +{ + NetworkGameList *item; + NetworkGameList *next; + + item = _network_game_list; + + while (item != NULL) { + next = item->next; + free(item); + item = next; + } + _network_game_list = NULL; + _network_game_count = 0; + + UpdateNetworkGameWindow(true); + + DEBUG(net, 4)("[NET][GameList] Cleared list"); +} + +NetworkGameList *NetworkGameListAddItem(uint32 ip, uint16 port) +{ + NetworkGameList *item; + + item = _network_game_list; + if (item != NULL) { + while (item->next != NULL) { + if (item->ip == ip && item->port == port) + return item; + item = item->next; + } + + if (item->ip == ip && item->port == port) + return item; + + item->next = malloc(sizeof(*item)); + item = item->next; + } else { + item = malloc(sizeof(*item)); + _network_game_list = item; + } + + DEBUG(net, 4) ("[NET][GameList] Added server to list"); + + memset(item, 0, sizeof(*item)); + + item->next = NULL; + item->ip = ip; + item->port = port; + _network_game_count++; + + UpdateNetworkGameWindow(false); + + return item; +} + +void NetworkGameListAddQueriedItem(NetworkGameInfo *info, bool server_online) +{ + // We queried a server and now we are going to add it to the list + NetworkGameList *item; + + item = NetworkGameListAddItem(_network_last_host_ip, _network_last_port); + item->online = server_online; + memcpy(&item->info, info, sizeof(NetworkGameInfo)); + ttd_strlcpy(item->info.hostname, _network_last_host, sizeof(item->info.hostname)); + + UpdateNetworkGameWindow(false); +} + +#endif /* ENABLE_NETWORK */ + + |