Скрин помощи - TrueCat17/Ren-Engine GitHub Wiki
Иногда может понадобиться скрин помощи - например, он используется в моде rpg_editor
и в игре simple_civ
.
В этом случае он обычно показывается при нажатии на F1
или при клике на спец. кнопку.
Делается это простым показом скрином помощи: show_screen('help')
.
Выглядит этот скрин так:
Файл с реализацией находится по пути Ren-Engine/rpy/screens/help.rpy
.
Можно указать, откуда будет браться файл с содержимым для отображения, а также (опционально) функцию, которая возвращает словарь с переменными (имена которых нужно заменить) и их значениями (на что нужно заменять).
help.set_file(path_dir = None, path_file = 'readme.txt', make_vars = dict)
Здесь:
-
path_dir
- путь к папке с файлом (по умолчанию - папка текущего мода), -
path_file
- путь к файлу относительно этойpath_dir
, -
make_vars
- функция, о которой говорилось выше (не её результат!).
К параметру path_file
автоматически применяется
система переводов
.
Если параметры по умолчанию менять не требуется, то эту функцию можно не вызывать.
Размеры окна помощи:
-
help.width = 0.8
- ширина, -
help.height = 0.8
- высота.
Размеры в пикселях (целых числах):
-
help.border_size = 5
- граница, -
help.button_spacing = 15
- расстояние между кнопками, -
help.slider_width = 25
- ширина слайдера.
Изображения (цвет):
-
help.background_image = im.rect('#FFF')
- фон, -
help.border_image = im.rect('#000')
- границы.
Размеры относительно окна (float
):
-
help.indent = 0.03
- отступ текста от границы, -
help.xindent = help.indent / get_from_hard_config("window_w_div_h", float)
- аналогindent
для горизонтали, с коррекцией из-за разных размеров сторон окна игры, -
help.indent_for_buttons = 0.1
- расстояние для кнопок-разделов (сверху), -
help.viewport_height = help.height - help.indent_for_buttons - help.indent
- всё оставшееся расстояние, для текста.
-
help_background_button
- "кнопка" закрытия на фоне скрина (затемнение), -
help_button
- стиль кнопки переключения разделов (наследуется отmenu_button
), -
help_text
- стиль непосредственно текста.
Разные разделы должны быть отделены друг от друга 3 переносами строки (т. е. 2 пустыми строками).
Для удобства первая строка каждого раздела (название) должна браться в квадратные скобки []
.
В конце строки можно поставить символ \
, который заставит игнорировать перенос строки.
Таким образом можно сделать перенос строки в файле, не делая его в тексте скрина.
Это может упростить редактирование этого файла.
Также, разумеется, в тексте поддерживается вся разметка текстовых полей.
Например: {b}полужирный текст{/b}, {color=00FF00}раскрашенный{/color}
.
В тексте может встречаться подстановка переменных (но не вычислений!) из словаря:
a = ${my_var}
при
def get_help_data():
res = {
'my_var': '123',
}
return res
help.set_file(make_vars = get_help_data) # ok
#help.set_file(make_vars = get_help_data()) # error
даст
a = 123
Зачем это нужно?
- Для возможности менять некоторые параметры игры/мода так, чтобы справка всегда была корректной (т. е. нельзя забыть изменить значения в справке, потому что эти значения там просто не хранятся);
- Для вычислений (когда нужно, например, сложить несколько параметров);
- Развитие п. 2 - можно в цикле вычислить (или добавить оформления) десятку параметров за пару строк кода, что не только удобно, но ещё и надёжно (меньше вероятность исправить одно, забыв о другом - что нередко происходит при редактировании копипаста).