NAZWA: Gui | Lista czcionek w grze
PLATFORMA: Zew Prypeci 1.6.02
TWÓRCA: FantomICW
WPROWADZENIE:
Spoiler
Być może są pytania dotyczące modowania, które nękają twórcę od miesięcy. Jednym z nich jest lista dostępnych czcionek do gry. Niektóre zasoby w Google sugerują otwarcie pliku configs/fonts.ltx, ale nadal nie jest wyjaśnione, jak to jest odczytywane przez silnik: nazwy „czcionek” nie zgadzają się z tymi używanymi w interfejsie. W sumie na to pytanie na razie udzielona zostanie połowa odpowiedzi. Niemniej jednak, dzięki kodom źródłowym silnika 1.6.02, udało się dotrzeć do sedna miejsca, w którym „rejestrowane” są naprawdę działające czcionki!
Chcesz rzucić okiem na ten mały przewodnik?
REJESTRACJA CZCIONEK:
Spoiler
Właściwie „rejestracja” czcionek jest w pliku UIXmlInit.cpp. Linie 29-43 zawierają definicje zmiennych dla większości nazw czcionek (poniżej zobaczymy, jak te zmienne są używane):
#define ARIAL_FONT_NAME "arial"
#define MEDIUM_FONT_NAME "medium"
#define SMALL_FONT_NAME "small"
#define GRAFFITI19_FONT_NAME "graffiti19"
#define GRAFFITI22_FONT_NAME "graffiti22"
#define GRAFFITI32_FONT_NAME "graffiti32"
#define GRAFFITI50_FONT_NAME "graffiti50"
#define LETTERICA16_FONT_NAME "letterica16"
#define LETTERICA18_FONT_NAME "letterica18"
#define LETTERICA25_FONT_NAME "letterica25"
#define DI_FONT_NAME "di"
Struktura:
#define ZMIENNA "nazwa"
Sama „rejestracja” jest wykonywana w tym samym pliku, w funkcji InitFont:
bool CUIXmlInit::InitFont(CUIXml &xml_doc, LPCSTR path, int index, u32 &color, CGameFont *&pFnt)
{
color = GetColor (xml_doc, path, index, 0xff);
LPCSTR font_name = xml_doc.ReadAttrib(path, index, "font", NULL);
if(!font_name)
{
pFnt = NULL;
return false;
}else
{
if(!xr_strcmp(font_name, GRAFFITI19_FONT_NAME))
{
pFnt = UI().Font().pFontGraffiti19Russian;
}
else if(!xr_strcmp(font_name, GRAFFITI22_FONT_NAME))
{
pFnt = UI().Font().pFontGraffiti22Russian;
}
else if(!xr_strcmp(font_name, GRAFFITI32_FONT_NAME))
{
pFnt = UI().Font().pFontGraffiti32Russian;
}
else if(!xr_strcmp(font_name, GRAFFITI50_FONT_NAME))
{
pFnt = UI().Font().pFontGraffiti50Russian;
}
else if(!xr_strcmp(font_name, "arial_14"))
{
pFnt = UI().Font().pFontArial14;
}
else if(!xr_strcmp(font_name, MEDIUM_FONT_NAME))
{
pFnt = UI().Font().pFontMedium;
}
else if(!xr_strcmp(font_name, SMALL_FONT_NAME))
{
pFnt = UI().Font().pFontStat;
}
else if(!xr_strcmp(font_name, LETTERICA16_FONT_NAME))
{
pFnt = UI().Font().pFontLetterica16Russian;
}
else if(!xr_strcmp(font_name, LETTERICA18_FONT_NAME))
{
pFnt = UI().Font().pFontLetterica18Russian;
}
else if(!xr_strcmp(font_name, LETTERICA25_FONT_NAME))
{
pFnt = UI().Font().pFontLetterica25;
}
else if(!xr_strcmp(font_name, DI_FONT_NAME))
{
pFnt = UI().Font().pFontDI;
}else
{
R_ASSERT3(0,"unknown font",font_name);
pFnt = NULL;
}
}
return true;
}
Co może być interesujące:
- znane zmienne
- arial_14 nie używa zmiennej jak inne czcionki
- jest funkcja R_ASSERT:
R_ASSERT3(0,"unknown font",font_name);
pFnt = NULL;
LISTA WSZYSTKICH MOŻLIWYCH CZCIONEK:
Spoiler
"arial_14"
"medium"
"small"
"graffiti19"
"graffiti22"
"graffiti32"
"graffiti50"
"letterica16"
"letterica18"
"letterica25"
"di"
ŹRÓDŁO:
https://ap-pro.ru/forums/topic/1122-cop-gui-spisok-shriftov-v-igre/
