Перейти к содержанию
Авторизация  
Hardtmuth

[CoP] Gui | Список шрифтов в игре

Рекомендуемые сообщения

 
image.jpg

Платформа: Сталкер Зов Припяти 1.6.02
Автор: FantomICW

Введение
Всем привет. Пожалуй, есть вопросы по модостроению, которые мучили меня месяцами. Один из них - список доступных для использования игровых шрифтов. Некоторые ресурсы в гугле предлагают открыть файл configs/fonts.ltx, но я так и не понял, каким образом эта вещь читается движком: названия "фонтов" не совпадают с тем, что используются в интерфейсе. Итого, данный вопрос будет пока что раскрыт наполовину. Тем не менее, благодаря исходникам движка 1.6.02, мне удалось докопаться до того самого места, где "регистрируются" реально работающие шрифты!
Предлагаю ознакомиться с этим небольшим справочником ?


Справочная информация

Регистрация шрифтов:

Спойлер

Собственно, "регистрация" шрифтов проходит в файле UIXmlInit.cpp. Строки 29-43 содержат определение переменных для большой части названий шрифтов (чуть ниже мы увидим, как эти переменные используются):


#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"

Структура:


#define ПЕРЕМЕННАЯ      "название"

Сама "регистрация" проходит в этом же файле, в функции 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;
}

Что можно вынести интересного:
- знакомые переменные
arial_14 не использует переменную, как другие шрифты
- есть функция R_ASSERT:


R_ASSERT3(0,"unknown font",font_name);
            pFnt    = NULL;

 

Чистый список всех возможных шрифтов:

Спойлер

"arial_14"

"medium"
"small"

"graffiti19"
"graffiti22"
"graffiti32"
"graffiti50"

"letterica16"
"letterica18"
"letterica25"

"di"

 

 

  • Мастер! 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

При указании шрифта "arial_14" - вылет.


За Гранью Реальности

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу