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 "g_game.h"
|
||||||
#include "gstrings.h"
|
#include "gstrings.h"
|
||||||
#include "i_system.h"
|
#include "i_system.h"
|
||||||
|
#include "v_font.h"
|
||||||
|
#include "utf8.h"
|
||||||
|
|
||||||
CVAR (Bool, cl_spreaddecals, true, CVAR_ARCHIVE)
|
CVAR (Bool, cl_spreaddecals, true, CVAR_ARCHIVE)
|
||||||
CVAR(Bool, var_pushers, true, CVAR_SERVERINFO);
|
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 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)
|
void UpdateGenericUI(bool cvar)
|
||||||
{
|
{
|
||||||
auto switchstr = GStrings["USE_GENERIC_FONT"];
|
auto switchstr = GStrings["USE_GENERIC_FONT"];
|
||||||
generic_ui = (cvar || (switchstr && strtoll(switchstr, nullptr, 0)));
|
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);
|
UpdateGenericUI(self);
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,6 +71,7 @@
|
||||||
// PRIVATE FUNCTION PROTOTYPES ---------------------------------------------
|
// PRIVATE FUNCTION PROTOTYPES ---------------------------------------------
|
||||||
|
|
||||||
static int TranslationMapCompare (const void *a, const void *b);
|
static int TranslationMapCompare (const void *a, const void *b);
|
||||||
|
void UpdateGenericUI(bool cvar);
|
||||||
|
|
||||||
// EXTERNAL DATA DECLARATIONS ----------------------------------------------
|
// EXTERNAL DATA DECLARATIONS ----------------------------------------------
|
||||||
|
|
||||||
|
@ -1601,6 +1602,7 @@ void V_InitFonts()
|
||||||
BigFont = NewSmallFont;
|
BigFont = NewSmallFont;
|
||||||
}
|
}
|
||||||
AlternativeSmallFont = OriginalSmallFont;
|
AlternativeSmallFont = OriginalSmallFont;
|
||||||
|
UpdateGenericUI(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void V_ClearFonts()
|
void V_ClearFonts()
|
||||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue