Skip to content

Времена суток

TrueCat17 edited this page Apr 4, 2023 · 1 revision

В 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".


Далее ->
<- Назад

Основы
Если вы новичок, то будет достаточно прочитать лишь это, пока ваш энтузиазм не исчерпан.
Остальное можно будет прочесть по мере надобности.

  1. Быстрый старт!
  2. Основы команд и блоков.
  3. Простейшие примеры.
  4. Изображения.
  5. Музыка и звуки.

Документация по RPG-части находится здесь.


Более сложные вещи
Через некоторое время вам, возможно, потребуются более продвинутые возможности.

  1. Функции для изображений (im-функции).
  2. Эффекты.
  3. Времена суток.
  4. ATL (анимации и трансформации).
  5. Ввод с клавиатуры.
  6. Введение в ScreenLang (GUI, интерфейс).
  7. Конфигурирование игры.

Дополнительно


Перед самым началом
Советы для новичков и не только.


Оффтоп.

Clone this wiki locally