network_gamelist.c
changeset 543 e3b43338096b
child 716 40a349345f82
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/network_gamelist.c	Sat Dec 04 17:54:56 2004 +0000
@@ -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 */
+
+