Gość Diegtiariow Opublikowano 8 Kwietnia 2023 Zgłoś Udostępnij Opublikowano 8 Kwietnia 2023 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/ Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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.