Модификации > Русификация игры

SDL_ttf.dll

(1/14) > >>

insolor:
Наконец-то добрался до SDL_ttf.dll. К сожалению не разобрался, как его компилировать из исходников. Посмотрел версию mialax'а, так он вообще скомпилировал ее как Microsoft.Net Assembly :)

В общем, выбрал обходной путь, и написал Fake_ttf.dll - библиотеку-переходничёк на ассемблере 8-) Исходная библиотека SDL_ttf не меняется, просто между DF и ею добавляется "прослойка", в которую в свою очередь можно добавлять свой функционал.

Библиотеку ChangeText тоже посмотрел, и заставить ее работать в паре с моей Fake_ttf. Единственно, сделал буферный массив outText в функции ChangeText() статическим, потому как возвращать адрес нестатической локальной переменной - это айайай. Позже постараюсь добавить возможность писать скипты на питоне.

Во вложении:

* FakeTTF_ChangeText_bin.7z - готовые к употреблению библиотеки Fake_ttf.dll и ChangeText.dll. Распаковать в папку с игрой и запустить bat-файл. Для отключения запустить тот же батник еще раз :)
* ChangeTextInsolor_src.7z - исходники слегка подправленной библиотеки ChangeText.dll и проект для MS Visual Studio 2008

insolor:
По поводу обрезания текста. Жаб, к сожалению, не знает, для чего в SDL_ttf функция TTF_SizeUNICODE, поэтому определяет размеры выводимого текста, взяв "самую широкую" букву - латинскую букву M, и умножив ее ширину на количество выводимых символов. В результате, если попытаться через SDL_ttf переводить "Quit" как "Выход", то получится "Выхо" и маленький кусочек буквы д.

Отсюда вывод: использовать перевод через SDL_ttf как самостоятельное решение не получится, а только вместе с имеющимся патчем-переводчиком, с целью устранения нестыковок грамматики, например, и перевода где-то глубоко закопаных строк (например, текста, появляющегося при переходе к созданию мира).

Jesus:

--- Цитата: insolor от 08 Сентября 2013, 02:16:14 ---По поводу обрезания текста. Жаб, к сожалению, не знает, для чего в SDL_ttf функция TTF_SizeUNICODE, поэтому определяет размеры выводимого текста, взяв "самую широкую" букву - латинскую букву M, и умножив ее ширину на количество выводимых символов. В результате, если попытаться через SDL_ttf переводить "Quit" как "Выход", то получится "Выхо" и маленький кусочек буквы д.

Отсюда вывод: использовать перевод через SDL_ttf как самостоятельное решение не получится, а только вместе с имеющимся патчем-переводчиком, с целью устранения нестыковок грамматики, например, и перевода где-то глубоко закопаных строк (например, текста, появляющегося при переходе к созданию мира).

--- Конец цитаты ---
А размер буквы M он получает через библиотеку? один раз ?

iKlim:
Сколько же ещё в коде таких неожиданно-смелых решений от Жаба.   ???

Jesus:

--- Цитата: iKlim от 08 Сентября 2013, 13:43:20 ---Сколько же ещё в коде таких неожиданно-смелых решений от Жаба.   ???

--- Конец цитаты ---
Это обычные решения :) чаще всего именно так на практике некоторые вещи и решаются....
а на другой стороне есть теоретики от программирования которые всегда знаю как должно быть :) но почему-то редко они являются программистами :)

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии