game: use binary search for message translation

This commit is contained in:
Denis Pauk 2024-09-14 21:08:07 +03:00
parent 1f0e67621c
commit 3dd4dbf2ce
1 changed files with 35 additions and 5 deletions

View File

@ -193,6 +193,38 @@ LocalizationInit(void)
}
}
static int
LocalizationSearch(const char *name)
{
int start, end;
start = 0;
end = nlocalmessages - 1;
while (start <= end)
{
int i, res;
i = start + (end - start) / 2;
res = Q_stricmp(localmessages[i].key, name);
if (res == 0)
{
return i;
}
else if (res < 0)
{
start = i + 1;
}
else
{
end = i - 1;
}
}
return -1;
}
const char*
LocalizationMessage(const char *message)
{
@ -205,12 +237,10 @@ LocalizationMessage(const char *message)
{
int i;
for (i = 0; i < nlocalmessages; i++)
i = LocalizationSearch(message);
if (i >= 0)
{
if (!strcmp(localmessages[i].key, message))
{
return localmessages[i].value;
}
return localmessages[i].value;
}
}