Skocz do zawartości

Gui | Lista czcionek w grze [CoP]


Gość Diegtiariow

Rekomendowane odpowiedzi

Gość Diegtiariow

image.jpg

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/

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Korzystając z tej strony, zgadzasz się na nasze Warunki użytkowania.