Времена суток - TrueCat17/Ren-Engine GitHub Wiki
В Ren-Engine есть переключение между разными временами суток.
Эти времена в играх стиля
RPG
позволяют использовать дополнительные изображения для локаций, персонажей и
объектов на них или менять оттенки основных изображений, если дополнительные отсутствуют.
Также они влияют и на обычные
ВН-спрайты,
если они зарегистрированы нужным образом.
$ make_time('name', sprite, location)
Где
-
name
- название времени, будет создана функцияname_time
, -
sprite
- параметры для изменения ВН-спрайтов, -
location
- параметры для изменения RPG-объектов (локации, объекты локаций, персонажи).
Параметры location
применяются в функции im.recolor
, sprite
- обычно тоже, хотя вы можете это и изменить.
Например, так зарегистрировано ночное время:
$ make_time('night', sprite=(160, 200, 210), location=(140, 180, 210))
Следует обратить внимание на то, что после названия здесь допускаются только именованные аргументы, т. е. код
$ make_time('night', (160, 200, 210), (140, 180, 210))
не является допустимым.
Установить ночь в сценарии можно так:
$ night_time()
Это соответствующим образом изменит изображения.
Все RPG объекты при этом будут пытаться брать изображения с постфиксом _night
.
Например, не images/locations/wood/main.png
, а images/locations/wood/main_night.png
.
Или не images/characters/mi_form.png
, а images/characters/mi_form_night.png
.
Если нужное изображение не существует, будет использован результат функции im.recolor
к оригинальному изображению с нужными параметрами.
Т. е. если не будет найден файл images/characters/me_form_night.png
,
будет использован результат im.recolor('images/characters/mi_form.png', 140, 180, 210)
.
Обычно являются одним и тем же изображением, у которого допустимо лишь менять оттенки. Причём для этого спрайт должен быть зарегистрирован специальным образом.
Вместо, например,
image rn normal = 'images/sprites/rn/normal.png'
следует сделать
image rn normal = im.recolor('images/sprites/rn/normal.png', *sprite_time_rgb)
Переменная sprite_time_rgb
содержит то, что было передано в параметре sprite
при регистрации текущего времени.
*
в питоне раскрывает список, и его содержимое передаётся как набор отдельных параметров,
т. е. с таким же успехом можно было бы написать:
image rn normal = im.recolor('images/sprites/rn/normal.png', sprite_time_rgb[0], sprite_time_rgb[1], sprite_time_rgb[2])
Но всё же рекомендуется более короткий и удобный способ.
Название текущего времени хранится в times['current_name']
.
По умолчанию существуют времена day
, night
и sunset
(закат/рассвет).
Регистрируются они в файле Ren-Engine/rpy/times.rpy
, вы можете посмотреть в нём параметры этих времён.
Изначально активно время day
.
Если что, вызов im.recolor
с параметрами 255, 255, 255
(параметры day
) не делает ничего и
сразу же возвращает изначальное изображение.
Поэтому время day
можно считать игнорированием системы переключения времени.
Конечно, за исключением случая, когда у какого-то RPG-объекта есть изображение с постфиксом _day
.
Это может звучать странно, но систему "времён суток" можно использовать ещё и как систему времён года, или для придания, к примеру, праздничного или "ужасного" вида.
При смене времени суток отправляется сигнал "time"
.