-
Notifications
You must be signed in to change notification settings - Fork 0
Интерфейс (стили)
Это статья о настройке стилей, используемых в экранах (Загрузка, Настройки...).
Настройка свойств gui
-объекта обсуждалась в
прошлой
статье.
Определение стилей по умолчанию производится в файле Ren-Engine/rpy/screens/styles.rpy
.
Вносить изменения для своей игры рекомендуется в файле resources/mods/common/styles.rpy
.
Стили часто наследуются друг от друга, поэтому они должны быть объявлены в нужном порядке.
Для возможности переопределения пользователем "базовых" стилей (от которых зависят другие стили)
все стили определяются в init
-блоках с чётко определённым приоритетом.
Благодаря этому можно легко изменить любой стиль без отслеживания их зависимостей друг от друга и
повторных переопределений свойств, получая при этом хороший результат.
Некоторые стили можно определить не только в "общем" виде, но и создать их специализированные версии со спец. префиксами, тогда они будут применяться в конкретных экранах.
Например, скрин загрузки будет использовать для заголовка стиль load_menu_title
,
скрин сохранения - save_menu_title
, а скрин настроек - prefs_menu_title
.
В случае же отсутствия нужного стиля (по умолчанию их обычно нет)
будет использоваться базовый стиль menu_title
.
Далее для некоторых стилей будет указана такая возможность создания специализированных вариантов.
В этом случае в самом начале их абзаца будет написана фраза:
"Общий" стиль.
Иногда требуется отключить отображение некоторых элементов.
Для этого вы можете в соответствующем стиле alpha 0
.
Отключение заголовка, например, можно сделать так:
init -999:
style menu_title is text:
alpha 0
Очевидно, похожим образом легко поменять его местоположение на экране и другие характеристики.
В Ren-Engine интерфейс является адаптивным, т. е. меняется в зависимости от разрешения окна игры.
Однако, изображения обычно нельзя просто так растягивать (кроме разве что полностью однотонных),
поэтому для этого используется специальная функция im.scale_without_borders
(см. статью об im-функциях).
Обычно это происходит не прямо, а косвенно, через методы get_ground
/get_hover
у стилей
(для подробностей см. абзац про стили в ScreenLang).
Т. е. для более точного управления масштабированием, вам может понадобиться использовать свойства
xsize
, xsize_min
, xsize_max
, их аналоги ysize*
, а также "нестандартное" свойство corner_sizes
.
По умолчанию corner_sizes
не существует или равен None
, т. е. в качестве "размера границы",
которую не нужно масштабировать, берётся треть от минимальной стороны изображения.
Но в случае необходимости, этот размер можно задать явно (или даже размеры - для каждой стороны отдельно).
Если по каким-то причинам нужно "отключить" это поведение и масштабировать всё изображение целиком,
свойству corner_sizes
можно присвоить значение 0
.
Далее идут стили (с нужным приоритетом вроде -999
) и их краткие описания.
Посмотреть на свойства по умолчанию и примеры можно в файле Ren-Engine/rpy/screens/styles.rpy
.
Порядок стилей взят оттуда же, т. е. они сгруппированы скорее по "наследованию" (если оно есть),
чем по расположению на экране.
"Общий" стиль.
init -999:
style menu_title is text:
# ...
Обычный текст, используется только в экране настроек.
init -999:
style menu_text is text:
# ...
"Общий" стиль.
init -999:
style menu_button is textbutton:
# ...
Стиль vbox
-контейнера для всех "строк" ("рядов", "линий") настроек.
init -999:
style prefs_content is vbox:
# ...
Стиль hbox
-контейнера для "строки" настроек.
init -999:
style prefs_line is hbox:
# ...
Стиль для текста "Пропуск" в режиме пропуска (по Ctrl или Tab).
init -999:
style skip_text is text:
# ...
Обратите внимание на изменившийся приоритет init
-блока.
Это нужно, т. к. стиль mods_button
наследуется от menu_button
.
init -998:
style mods_button is menu_button:
# ...
"Общий" стиль.
init -998:
style return_button is menu_button:
# ...
"Общий" стиль.
Под "страницей" подразумевается страница сохранений (1
, "quick"
, auto
) или вкладка настроек (Language
).
init -998:
style page_button is menu_button:
# ...
"Общий" стиль.
Стиль vbox
-контейнера для кнопок страниц из абзаца выше.
init -998:
style pages_vbox is vbox:
# ...
Аналог page_button
, но специально для экрана настроек.
init -997:
style prefs_page_button is page_button:
# ...
Аналог pages_vbox
, но специально для экрана настроек.
init -997:
style prefs_pages_vbox is pages_vbox:
# ...
Стиль кнопок слева и справа от бара ("минус" и "плюс").
init -998:
style bar_button is menu_button:
# ...
Хоть этот стиль и наследуется от menu_button
, использовать его будет изображение
(это нужно для равенства некоторых параметров, чтобы разные элементы хорошо смотрелись вместе).
init -998:
style bar is menu_button:
# ...
Стиль кнопки поверх чекбокса (затемнение).
Такая кнопка нужна, чтобы не целиться в маленький чекбокс, а также
чтобы клик по тексту или рядом воспринимался также, как клик по чекбоксу.
init -998:
style bool_button is menu_button:
# ...
init -998:
style checkbox is image:
# ...
init -998:
style bool_text is menu_text:
# ...
init -998:
style bool_hbox is hbox:
# ...
Стиль vbox
-контейнера в скрине slots
(используется в экранах загрузки и сохранения).
Основная задача - отделять слоты и кнопки управления ("Загрузить"/"Сохранить" и "Удалить") друг от друга,
а также размещать их в определённой части экрана.
init -998:
style slots_content is vbox:
# ...
Стиль vbox
-контейнера в скрине slots
,
основная задача которого - отделять slots_hbox
("строки"/"ряды"/"линии")
друг от друга.
init -998:
style slots_vbox is vbox:
# ...
Стиль hbox
-контейнера в скрине slots
, который ставит слоты в горизонтальный ряд.
init -998:
style slots_hbox is hbox:
# ...
В нём пишется время создания сохранения.
init -998:
style slot_text is menu_text:
# ...
Стиль hbox
-контейнера для разделения кнопок управления ("Загрузить"/"Сохранить" и "Удалить")
друг от друга, а также размещения их в определённой части экрана.
init -998:
style slots_buttons is slots_hbox:
# ...
Есть несколько стилей, которые по умолчанию отсутствуют (берётся menu_button
с некоторыми изменениями),
но которые могут быть использованы:
-
save_button
- для кнопки сохранения, -
enabled_load_button
- для доступной кнопки загрузки, -
disabled_load_button
- для "отключённой" кнопки загрузки, -
enabled_delete_button
- для доступной кнопки удаления, -
disabled_delete_button
- для "отключённой" кнопки удаления.
Кнопки имеют "отключённый" вид, если выделен слот без сохранения (очевидно, это не относится к кнопке "Сохранить").
Рекомендуется наследовать эти стили от menu_button
.
В init
-блоке для них используйте приоритет 0
(относится ко всем несуществующим по умолчанию стилям).
Стиль vbox
-контейнера для кнопок модов из абзаца ниже.
init -997:
style mods_vbox is vbox:
# ...
init -997:
style mod_button is menu_button:
# ...
Есть 2 такие кнопки: для перехода на предыдущую и следующую страницы.
Отображаются, когда установлено больше модов, чем может вместиться на 1 странице
(см. gui.prefs_mods_in_page
).
init -997:
style change_mod_page_button is mod_button:
# ...
Текст имеет вид номер_страницы / кол-во_страниц
.
Отображаются, когда установлено больше модов, чем может вместиться на 1 странице
(см. gui.prefs_mods_in_page
).
init -997:
style mod_page_text is menu_text:
# ...
Стиль hbox
-контейнера для элементов из 2 предыдущих абзацев.
Отображается, когда установлено больше модов, чем может вместиться на 1 странице
(см. gui.prefs_mods_in_page
).
init -997:
style change_mod_page_button_hbox is hbox:
# ...
См. gui.choice_buttons_bg
.
init -998:
style choice_buttons_bg is image:
# ...
init -998:
style choice_button is menu_button:
# ...
Стиль vbox
-контейнера для кнопок из предыдущего абзаца.
init -998:
style choice_buttons_vbox is vbox:
# ...
См. gui.quick_buttons_bg
и gui.quick_buttons_bg_without_window
(по умолчанию - прозрачные изображения),
а также gui.quick_buttons_top_indent
(расстояние между быстрым меню и диалог-боксом).
init -998:
style quick_buttons_bg is image:
# ...
Стиль hbox
-контейнера для кнопок быстрого меню.
init -998:
style quick_buttons_hbox is hbox:
# ...
Находится в init
-блоке с приоритетом -997
, а не -998
, т. к. в варианте по умолчанию
кроме наследования от стиля menu_button
здесь также есть
взятие некоторых параметров из стиля quick_buttons_bg
(ysize*
).
init -997:
style quick_button is menu_button:
# ...
Основы
Если вы новичок, то будет достаточно прочитать лишь это, пока ваш энтузиазм не исчерпан.
Остальное можно будет прочесть по мере надобности.
Документация по RPG-части находится здесь.
Более сложные вещи
Через некоторое время вам, возможно, потребуются более продвинутые возможности.
- Функции для изображений (im-функции).
- Эффекты.
- Времена суток.
- ATL (анимации и трансформации).
- Ввод с клавиатуры.
- Введение в ScreenLang (GUI, интерфейс).
- Конфигурирование игры.
Дополнительно
- Некоторые полезные функции.
- Сигналы и таймауты.
- Технические подробности работы с изображениями.
- Технические подробности ВН-спрайтов.
- Система переводов.
- Воспроизведение видео.
- Скрин помощи.
- Прерываемые циклы.
- https.
- Система обновлений.
Перед самым началом
Советы для новичков и не только.
Оффтоп.