Files @ r3856:fdde268f4475
Branch filter:

Location: cpp/openttd-patchpack/source/network_gamelist.c

belugas
(svn r4888) CodeChange : Newgrf : little cleanup and additions
-Add 4 new langIDs (Afrikaans, greek, ukrainian,croatian)
-Only allocate memory when the string will be inserted
-In order to avoid the UTF-8 marker, compare based on length of defined iso_code (thanks peter1138)
-Synch with lang files iso_code cleanup
/* $Id$ */

#include "stdafx.h"
#include "debug.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);

/** Add a new item to the linked gamelist. If the IP and Port match
 * return the existing item instead of adding it again
 * @param ip the IP-address (inet_addr) of the to-be added item
 * @param port the port the server is running on
 * @return a point to the newly added or already existing item */
NetworkGameList *NetworkGameListAddItem(uint32 ip, uint16 port)
{
	NetworkGameList *item, *prev_item;

	prev_item = NULL;
	for (item = _network_game_list; item != NULL; item = item->next) {
		if (item->ip == ip && item->port == port) return item;
		prev_item = item;
	}

	item = malloc(sizeof(*item));
	memset(item, 0, sizeof(*item));
	item->next = NULL;
	item->ip = ip;
	item->port = port;

	if (prev_item == NULL) {_network_game_list = item;}
	else {prev_item->next = item;}
	DEBUG(net, 4) ("[NET][GameList] Added server to list");

	UpdateNetworkGameWindow(false);

	return item;
}

/** Remove an item from the gamelist linked list
 * @param remove pointer to the item to be removed */
void NetworkGameListRemoveItem(NetworkGameList *remove)
{
	NetworkGameList *item, *prev_item;

	prev_item = NULL;
	for (item = _network_game_list; item != NULL; item = item->next) {
		if (remove == item) {
			if (prev_item == NULL) {_network_game_list = remove->next;}
			else {prev_item->next = remove->next;}

			free(remove);
			DEBUG(net, 4) ("[NET][GameList] Removed server from list");
			UpdateNetworkGameWindow(false);
			return;
		}
		prev_item = item;
	}
}

#endif /* ENABLE_NETWORK */