mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-10 08:17:05 +00:00
(svn r23709) -Feature-ish: try harder to sort text instead of fancy characters in the server names
This commit is contained in:
parent
cb414b09d2
commit
9a921fd0ae
@ -244,10 +244,24 @@ protected:
|
|||||||
this->vscroll->SetCount(this->servers.Length());
|
this->vscroll->SetCount(this->servers.Length());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Skip some of the 'garbage' in the string that we don't want to use
|
||||||
|
* to sort on. This way the alphabetical sorting will work better as
|
||||||
|
* we would be actually using those characters instead of some other
|
||||||
|
* characters such as spaces and tildes at the begin of the name.
|
||||||
|
* @param str The string to skip the initial garbage of.
|
||||||
|
* @return The string with the garbage skipped.
|
||||||
|
*/
|
||||||
|
static const char *SkipGarbage(const char *str)
|
||||||
|
{
|
||||||
|
while (*str != '\0' && (*str < 'A' || IsInsideMM(*str, '[', '`' + 1) || IsInsideMM(*str, '{', '~' + 1))) str++;
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
/** Sort servers by name. */
|
/** Sort servers by name. */
|
||||||
static int CDECL NGameNameSorter(NetworkGameList * const *a, NetworkGameList * const *b)
|
static int CDECL NGameNameSorter(NetworkGameList * const *a, NetworkGameList * const *b)
|
||||||
{
|
{
|
||||||
int r = strnatcmp((*a)->info.server_name, (*b)->info.server_name); // Sort by name (natural sorting).
|
int r = strnatcmp(SkipGarbage((*a)->info.server_name), SkipGarbage((*b)->info.server_name)); // Sort by name (natural sorting).
|
||||||
return r == 0 ? (*a)->address.CompareTo((*b)->address) : r;
|
return r == 0 ? (*a)->address.CompareTo((*b)->address) : r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user