Анатолий Адонин

Анатолий Адонин 

Разработка на Python / Renpy

413subscribers

116posts

Showcase and bundles

16
A bundle is a collection, compilation, playlist, or catalog of posts that saves you from searching through the blog and lets you buy the entire content series in a single click.

56 Изменяем экраны сохранения / загрузки в Renpy

Экраны screen save и screen load, как и прочие экраны интерфейса можно найти в файле screens.rpy. Если мы посмотрим на них, то увидим, что они состоят всего из двух строк.
Tag menu добавляет экран в группу экранов главного меню. При открытии одного из них, другой с таким же тегом автоматически закрывается.
use file_slots - использует внутри этого экрана другой экран, с названием file_slots. То есть, чтобы отредактировать экраны сохранения и загрузки нам предстоит работать с экраном file_slots, в нём прописана таблица, которая раскладывает слоты сохранения и загрузки.
Рассмотрим, за что отвечает каждая из строк данного экрана и отредактируем таблицу, увеличив количество слотов сохранений. Также добавим поверх кнопку удаления, чтобы игрок мог удалять ненужные сохранения.
Строка default page_name_value создаёт переменную, в которой хранится объект, управляющий названием текущей страницы сохранений. Если вы не знакомы с языком программирования Python, оставляйте её без изменений.
use game_menu - добавляет экран game_menu внутрь текущего. Который в свою очередь добавляет стандартные кнопки навигации слева. Подробнее об этом было в предыдущих уроках.
Далее идёт общий контейнер fixed, который объединяет всё остальное содержимое экрана.
Кнопка на скрине выше отвечает за нумерацию страниц, название которых можно изменить. Иногда полезно для записи каких-то напоминаний или группировки сохранений.
Следующий блок относится непосредственно к слотам сохранений, которые раскладываются в виде таблицы.
В уроке 35 подробно рассказывалось как работают таблицы grid. Напомню, что после объявления таблицы командой grid далее следует написать два числа для количества колонок и строк. В данном случае вместо чисел у нас указаны переменные в файле gui.rpy, которые хранят эти числа.
То есть, если мы хотим изменить количество столбцов и строк в таблице, нужно изменить эти переменные, указав свои значения.
Аналогичная ситуация со spacing, его значение также хранится в переменной, в файле gui.rpy.
Обратите внимание, что увеличив количество столбцов и строк, количество слотов на каждой странице увеличится, но они имеют прежние размеры, поэтому это сломает расстановку в таблице.
Чтобы привести всё в порядок, нужно рассчитать размеры слотов таким образом, чтобы они корректно помещались в рамках экрана. Все настройки и размеры также можно найти в файле gui.rpy.
Основные параметры, которые нужно изменить, это размер слота (синяя рамка) и размер скриншота в слоте (жёлтая рамка).
В итоге настроив подходящие размеры мы можем увеличить количество слотов сохранения на каждой странице.
Стоит иметь в виду, что если у вас остались старые сохранения со старыми большими скриншотами, то они по прежнему будут ломать таблицу. Поэтому следует их удалить. Наведите курсор на каждый и нажмите клавишу Delete на клавиатуре.
Как понятно из примера выше, в движке есть функция удаления сохранений на кнопку Delete, но обычный игрок может не знать об этом. Поэтому для удобства добавим визуальную кнопку, которая будет располагаться на каждом слоте, и при клике на неё пользователь сможет удалять свои сохранения.
Кнопка-шаблон раскладывается по ячейкам таблицы с помощью цикла for. Он берёт кнопку и кладёт её дубликат в каждую ячейку. Благодаря этому нам не нужно прописывать отдельную кнопку для каждой ячейки. Подробнее о циклах будет в отдельном уроке.
На скриншоте выше в шаблоне кнопки прописана функция для удаления сохранки. Нам остаётся только написать ещё одну кнопку-шаблон, которую цикл будет раскладывать поверх слотов, если в них есть сохранение.
В нижней области мы добавили кнопку с изображением крестика, при нажатии на которую будет срабатывать удаление, как на кнопку Delete. Чтобы кнопки не было на пустых слотах, делаем проверку на состояние слота (пустой / не пустой).
В верхнем блоке мы создали новую переменную, для состояния слота (пустой / не пустой). Далее мы поместили обе кнопки в контейнер fixed, чтобы они накладывались друг на друга (крестик поверх кнопки сохранения), а не рядом в одной ячейке. Так как это сломает таблицу.
Кроме того, для fixed задан фиксированный размер, который берётся из текущего размера слотов:
xysize (config.thumbnail_width, config.thumbnail_height)
Это нужно для того, чтобы позиция кнопки с крестиком высчитывалась на правильном расстоянии от краёв ячейки, так как она по размеру не занимает весь слот.
***
Код из урока:
rpy
file_slots.rpy4.71 Kb
***
Предыдущий урок:
55 Редактируем экран Настроек в Renpy
Следующий урок:
57 Экран быстрого меню (quick menu) в Renpy
Все уроки здесь
Subscription levels3

Личный состав

$0.97 per month
Участник экспедиции

Колонист

$2.58 per month
С комфортом до Бетельгейзе

Штурман

$5.2 per month
Штурмуем геймдев - Пошаговые уроки с нуля до профи
Учимся создавать игры на Renpy
Программируем на Python
Go up