В Ren-Engine есть переключение между разными временами суток.

Эти времена в играх стиля
[RPG](./Функции-для-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` при регистрации текущего времени.  
`*` в питоне раскрывает список, и его содержимое передаётся как набор отдельных параметров,
т. е. с таким же успехом можно было бы написать:
```renpy
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"`.

***

[Далее ->](./ATL-(анимации-и-трансформации))  
[<- Назад](./Эффекты)
