Скрин помощи - TrueCat17/Ren-Engine GitHub Wiki

Иногда может понадобиться скрин помощи - например, он используется в моде rpg_editor и в игре simple_civ.

В этом случае он обычно показывается при нажатии на F1 или при клике на спец. кнопку.
Делается это простым показом скрином помощи: show_screen('help').

Выглядит этот скрин так:
Help screen

Файл с реализацией находится по пути 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

Зачем это нужно?

  1. Для возможности менять некоторые параметры игры/мода так, чтобы справка всегда была корректной (т. е. нельзя забыть изменить значения в справке, потому что эти значения там просто не хранятся);
  2. Для вычислений (когда нужно, например, сложить несколько параметров);
  3. Развитие п. 2 - можно в цикле вычислить (или добавить оформления) десятку параметров за пару строк кода, что не только удобно, но ещё и надёжно (меньше вероятность исправить одно, забыв о другом - что нередко происходит при редактировании копипаста).
⚠️ **GitHub.com Fallback** ⚠️