summaryrefslogtreecommitdiff
path: root/network_gamelist.c
diff options
context:
space:
mode:
authortruelight <truelight@openttd.org>2004-12-04 17:54:56 +0000
committertruelight <truelight@openttd.org>2004-12-04 17:54:56 +0000
commitd6a1f3e412834c52b09e297cffc36d0776cb7a92 (patch)
tree68d3e795694a875138c369707ed74b5b4b022d49 /network_gamelist.c
parentc90bba35a23204c47151cf0ab97b16d8a124dabe (diff)
downloadopenttd-d6a1f3e412834c52b09e297cffc36d0776cb7a92.tar.xz
(svn r942) -Merged branch/network back into the trunk
Diffstat (limited to 'network_gamelist.c')
-rw-r--r--network_gamelist.c83
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 */
+
+