mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-22 12:11:25 +00:00
- automated the SmallFont selection based on a filter string in the language table.
This commit is contained in:
parent
13841655aa
commit
5b6bae409e
3 changed files with 591 additions and 535 deletions
|
@ -38,6 +38,8 @@
|
|||
#include "g_game.h"
|
||||
#include "gstrings.h"
|
||||
#include "i_system.h"
|
||||
#include "v_font.h"
|
||||
#include "utf8.h"
|
||||
|
||||
CVAR (Bool, cl_spreaddecals, true, CVAR_ARCHIVE)
|
||||
CVAR(Bool, var_pushers, true, CVAR_SERVERINFO);
|
||||
|
@ -134,13 +136,54 @@ CUSTOM_CVAR(Float, teamdamage, 0.f, CVAR_SERVERINFO | CVAR_NOINITCALL)
|
|||
|
||||
bool generic_ui;
|
||||
|
||||
bool CheckFontComplete(FFont *font)
|
||||
{
|
||||
// Also check if the SmallFont contains all characters this language needs.
|
||||
// If not, switch back to the original one.
|
||||
const uint8_t* checkstr = (const uint8_t*)GStrings["REQUIRED_CHARACTERS"];
|
||||
bool incomplete = false;
|
||||
|
||||
if (!checkstr) return true;
|
||||
while (int c = GetCharFromString(checkstr))
|
||||
{
|
||||
bool redirected;
|
||||
int cc = font->GetCharCode(c, true);
|
||||
if (c != cc && (c != 0x1e9e || cc != 0xdf))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void UpdateGenericUI(bool cvar)
|
||||
{
|
||||
auto switchstr = GStrings["USE_GENERIC_FONT"];
|
||||
generic_ui = (cvar || (switchstr && strtoll(switchstr, nullptr, 0)));
|
||||
if (!generic_ui)
|
||||
{
|
||||
// Use the mod's SmallFont if it is complete.
|
||||
// Otherwise use the stock Smallfont if it is complete.
|
||||
// If none is complete, fall back to the VGA font.
|
||||
// The font being set here will be used in 3 places: Notifications, centered messages and menu confirmations.
|
||||
if (CheckFontComplete(SmallFont))
|
||||
{
|
||||
AlternativeSmallFont = SmallFont;
|
||||
}
|
||||
else if (OriginalSmallFont && CheckFontComplete(OriginalSmallFont))
|
||||
{
|
||||
AlternativeSmallFont = OriginalSmallFont;
|
||||
}
|
||||
else
|
||||
{
|
||||
AlternativeSmallFont = NewSmallFont;
|
||||
}
|
||||
|
||||
// Todo: Do the same for the BigFont
|
||||
}
|
||||
}
|
||||
|
||||
CUSTOM_CVAR(Bool, ui_generic, false, 0) // This is for allowing to test the generic font system with all languages
|
||||
CUSTOM_CVAR(Bool, ui_generic, false, CVAR_NOINITCALL) // This is for allowing to test the generic font system with all languages
|
||||
{
|
||||
UpdateGenericUI(self);
|
||||
}
|
||||
|
|
|
@ -71,6 +71,7 @@
|
|||
// PRIVATE FUNCTION PROTOTYPES ---------------------------------------------
|
||||
|
||||
static int TranslationMapCompare (const void *a, const void *b);
|
||||
void UpdateGenericUI(bool cvar);
|
||||
|
||||
// EXTERNAL DATA DECLARATIONS ----------------------------------------------
|
||||
|
||||
|
@ -1601,6 +1602,7 @@ void V_InitFonts()
|
|||
BigFont = NewSmallFont;
|
||||
}
|
||||
AlternativeSmallFont = OriginalSmallFont;
|
||||
UpdateGenericUI(false);
|
||||
}
|
||||
|
||||
void V_ClearFonts()
|
||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue