Скрин помощи - 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')- границы.
Настройка вертикального слайдера для перемотки:
-
help.slider_ground = None- изображение "пустого прогресс-бара" (None-gui.vbar_ground), -
help.slider_hover = None- "заполненного" (None-gui.vbar_hover), -
help.slider_button_style = None- стиль кнопок "вверх"/"вниз".
Размеры относительно окна (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 - можно в цикле вычислить (или добавить оформления) десятку параметров за пару строк кода, что не только удобно, но ещё и надёжно (меньше вероятность исправить одно, забыв о другом - что нередко происходит при редактировании копипаста).