lordmuzer 743 Опубликовано 7 Апреля 2019 Поделиться Опубликовано 7 Апреля 2019 Это собственно отрисовка внитри игровых шрифтов. В xray так устроено, что весь текст который игры хочет показать на экране, на самом деле сохраняется в объекте этого самого шрифта И потом на рендеринге худа каждый объект шрифта выводит все надписи которые им "написали" Ссылка на комментарий
AndreySol 215 Опубликовано 7 Апреля 2019 Поделиться Опубликовано 7 Апреля 2019 24 минуты назад, lordmuzer сказал: И потом на рендеринге худа каждый объект шрифта выводит все надписи которые им "написали" Глядя на код, я было то же так подумал, но оказалось иначе. Я у себя решил добавить возможность использовать вновь добавленные шрифты без обязательной прописи их в движке. Получилось довольно элементарно: xr_3da\xrGame\HUDManager.h CGameFont* InitializeCustomFont(LPCSTR section, u32 flags = 0); xr_3da\xrGame\HUDManager.cpp CGameFont* CFontManager::InitializeCustomFont(LPCSTR section, u32 flags) { CGameFont* pFontAdd = NULL; InitializeFont(pFontAdd, section, flags); return pFontAdd; } xr_3da\xrGame\ui\UIXmlInit.cpp Скрытый текст bool CUIXmlInit::InitFont(CUIXml &xml_doc, LPCSTR path, int index, u32 &color, CGameFont *&pFnt) { pFnt = NULL; color = GetColor(xml_doc, path, index, 0xff); shared_str font_name = xml_doc.ReadAttrib(path, index, "font", NULL); if(*font_name == NULL || xr_strlen(*font_name)<1) { // pFnt = NULL; return false; } if(*font_name) { if (!xr_strcmp(*font_name, ARIAL10_FONT_NAME)) { pFnt = UI()->Font()->pFontArial10Russian; } else if (!xr_strcmp(*font_name, ARIAL14_FONT_NAME))//"arial14" { pFnt = UI()->Font()->pFontArial14; } 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, 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 { // pFnt = UI()->Font()->InitializeCustomFont(*font_name); if (!pFnt) { R_ASSERT3(0,"unknown font",*font_name); pFnt = NULL; } } } return true; } xr_3da\xrGame\ui\UIWindow_script.cpp ..... CGameFont* GetFontCustom(LPCSTR section) {return mngr().InitializeCustomFont(section);} ..... def("GetFontCustom", &GetFontCustom), ..... Теперь просто указываем в xml-теге секцию шрифта из fonts.ltx, или в скриптовом вызове так же. Потестил - вроде все нормально. И как видно по коду, нигде m_all_fonts не задействован. Вот и хотел уточнить, на кой изначально инициализированные шрифты прогонялись через этот вектор и CFontManager::Render() ? Ссылка на комментарий
lordmuzer 743 Опубликовано 7 Апреля 2019 Поделиться Опубликовано 7 Апреля 2019 (изменено) Оконная система это не весь движок. Окна сами вызывают на своем шрифте OnRender(); потому и работают. Для UI этого будет достаточно. Но сам движок выводит текст через OutI,Out и прочее - вот там важен этот цикл. А сама идея интересная кстати. Изменено 7 Апреля 2019 пользователем lordmuzer 1 Ссылка на комментарий
Graff46 598 Опубликовано 14 Апреля 2019 Поделиться Опубликовано 14 Апреля 2019 Подскажите как поменять RGB баланс текстуры если текстура представлена как экземпляр класса CTexture ? Ссылка на комментарий
Ересь 0 Опубликовано 17 Апреля 2019 Поделиться Опубликовано 17 Апреля 2019 Гм, товарищи. Возникла такая нужда - сделать круглую миникарту. В ТЧ. А как - фиг его знает. Не подскажет тут кто-нибудь, как её круглой сделать. Что-то в двигле, в классе самой миникарты... Но что? Ссылка на комментарий
lordmuzer 743 Опубликовано 17 Апреля 2019 Поделиться Опубликовано 17 Апреля 2019 Хм, а разве тут нужно движок править? В НА5 была уже круглая карта. Можно откуда взять конфиги для UI 1 Ссылка на комментарий
sto1en 420 Опубликовано 17 Апреля 2019 Поделиться Опубликовано 17 Апреля 2019 В ТЧ круглую карту просто эмулируют. Сама карта - квадратная, а рамка поверх нее - круглая. И за счет ширины этой рамки прячут выступающие углы карты. 1 1 Do what thou wilt shall be the whole of the Law. Ссылка на комментарий
lordmuzer 743 Опубликовано 17 Апреля 2019 Поделиться Опубликовано 17 Апреля 2019 Да, так и есть. Но кроме довольно толстой рамки - проблемы не замечено. Ссылка на комментарий
sto1en 420 Опубликовано 17 Апреля 2019 Поделиться Опубликовано 17 Апреля 2019 Да проблем и не было никогда. Вариантов реализации за последнии лет восемь нарожали тонну)). 1 Do what thou wilt shall be the whole of the Law. Ссылка на комментарий
Ересь 0 Опубликовано 17 Апреля 2019 Поделиться Опубликовано 17 Апреля 2019 @lordmuzer, нет, такая затычка мне не подходит. Рамка у меня тонкая очень, никак не перекроешь. Править надо именно двигло, кхе, там ведь всё. Ну по-крайней мере это нужно сделать в ЗП, чтобы она была квадратной(там даже вроде в самом классе параметр отдельный есть). Значит что? Аналогично надо сделать всё это дело через двигло и в ТЧ. Ну, разве что как-то по-другому, код то отличается во многом. Вот и пишу сюда, в эту тему. Может кто-то уже делал нормально, без вот этих вот "Ну не видно и ладно", или проблема была аналогичная - рамка слишком тонкая. Ссылка на комментарий
lordmuzer 743 Опубликовано 17 Апреля 2019 Поделиться Опубликовано 17 Апреля 2019 (изменено) @Ересь требования как - не было ) могу прикрутить к ogsr если интересно Изменено 17 Апреля 2019 пользователем lordmuzer 1 Ссылка на комментарий
Ересь 0 Опубликовано 17 Апреля 2019 Поделиться Опубликовано 17 Апреля 2019 @lordmuzer, ну как же это. Прямым текстом написал: 8 часов назад, Ересь сказал: Не подскажет тут кто-нибудь, как её круглой сделать. Ссылка на комментарий
lordmuzer 743 Опубликовано 17 Апреля 2019 Поделиться Опубликовано 17 Апреля 2019 Вот как сделать ее круглой - я подсказал. Дальше уже хотелки ) Вопрос - движок ogsr подходит для задачи или нет? Под него сделать могу я. Но нужно что бы кто то проверял. Ссылка на комментарий
Ересь 0 Опубликовано 18 Апреля 2019 Поделиться Опубликовано 18 Апреля 2019 (изменено) @lordmuzer, ну что значит хотелки.. Вы ж затычку подсказали. Гм, огср... Мне лишь код нужен, поэтому собирать, если вы хотите править исходники, не обязательно. Изменено 18 Апреля 2019 пользователем Ересь Ссылка на комментарий
lordmuzer 743 Опубликовано 18 Апреля 2019 Поделиться Опубликовано 18 Апреля 2019 Код берем из исходников ЗП Ссылка на комментарий
Ересь 0 Опубликовано 18 Апреля 2019 Поделиться Опубликовано 18 Апреля 2019 @lordmuzer, поможете под ТЧ кодец заточить? Я пытался перенести класс минимапы полностью с ЗП, не получилось ничего. Игра запустилось, но карте было очень плохо. Ссылка на комментарий
laki 326 Опубликовано 19 Апреля 2019 Поделиться Опубликовано 19 Апреля 2019 Всем привет! Ребята, очень нужна ваша профессиональная помощь! Движок ЗП. Нужно изменить цвет текста 100 советов. Или воткнуть возможность изменения цвета текста, но только для 100 советов, чтобы не затронуть другие надписи. Заранее спасибо! Ссылка на комментарий
lordmuzer 743 Опубликовано 19 Апреля 2019 Поделиться Опубликовано 19 Апреля 2019 @Ересь сделаю правку для ogsr и скину линку с изменениями. Но сразу скажу - будет не супер скоро. Ссылка на комментарий
laki 326 Опубликовано 19 Апреля 2019 Поделиться Опубликовано 19 Апреля 2019 Всё отбой, помощь не нужна. Уже помогли. Ссылка на комментарий
Ересь 0 Опубликовано 19 Апреля 2019 Поделиться Опубликовано 19 Апреля 2019 @lordmuzer, линку? Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти