6.0 KiB
Interactive Base — то, по чему можно щёлкнуть в сцене
Interactive Base добавляет в картинки-сцены кликабельные объекты: вещь, лежащую на земле, дверь, место «за склепом». У объекта может быть своя картинка поверх фона, он может подсвечиваться под курсором, а клик по нему запускает сценарий. Сценарии добавляют и убирают объекты по ходу истории.
Interactive Base использует пролог Cthangover. Тайловые карты RPG World вместо этого работают со своими событиями.
В игре
В начале Cthangover в переулке у велосипеда лежит красная тряпка. Она — не часть фона: это интерактивный объект со своей картинкой.
Когда курсор оказывается над тряпкой, он превращается в руку, а тряпка приобретает лёгкий золотистый оттенок:
Клик запускает сценарий тряпки: Марао поднимает её, а сценарий убирает объект со сцены.
Интерактивный объект
Объекты — это JSON-файлы в папке interactives/ мода. Вот тряпка с картинок (из Cthangover), контур в ней сокращён:
{
"Items": [
{
"id": "cloak_ground",
"texture": "cloak_ground",
"layer": "foreground",
"zIndex": 5,
"cursor": "PointingHand",
"hitArea": {
"type": "polygon",
"vertices": [
{ "x": 0.2796, "y": 0.7318 }, { "x": 0.3207, "y": 0.7167 },
{ "x": 0.3456, "y": 0.8434 }, { "x": 0.3387, "y": 0.8872 }
]
},
"highlight": { "color": "#FFD70044", "scale": 1, "duration": 0.12 },
"actions": {
"onClick": { "scenario": "scenarios/prolog/morning_cloak.scenario" }
}
}
]
}
texture— картинка размером во весь экран, прозрачная везде, кроме самого объекта, поэтому с фоном она совмещается сама. Уберите её, если нужен невидимый участок.hitArea— где объект можно щёлкать, в долях экрана (0–1):rectсx,y,width,height;circleсx,y,radius; илиpolygonсvertices.layer—backgroundилиforeground; оба — часть картинки и остаются под окном диалога, панелью инструментов и панелями.uiрисуется поверх всего.zIndex— порядок среди объектов одного слоя: большее число рисуется сверху.cursor— курсор мыши над объектом, напримерPointingHand.highlight— подсветка, пока курсор над объектом:color(с прозрачностью),scaleиdurationпоявления в секундах.enabled,visible— реагирует ли объект и рисуется ли он поначалу.actions—onClickзапускает файлscenarioилиcommandsпрямо в строке;onHoverEnterиonHoverLeaveвыполняют сценарные команды.
Как объекты попадают в сцену
Само по себе описание нигде не появляется. Объект добавляет сценарий сцены, а убирает обычно сценарий клика:
interactive_add cloak_ground
interactive_remove cloak_ground
При смене сцены объекты очищаются, поэтому Cthangover добавляет их заново при каждом входе — сценарием сцены, который проверяет сюжет:
scene: prolog_alley
priority: 15
condition: AwakeningQuest.notHasTag("cloak_taken") && AwakeningQuest.notHasTag("book_taken")
---
interactive_add cloak_ground
interactive_add book_ground
end
Добавление объекта, который уже есть, ничего не делает, поэтому повторять это безопасно.
Расставить объекты и нарисовать их области клика можно и в интерактивном редакторе Editor Tools.
Если что-то пошло не так
- Клик ни к чему не приводит. Объект ни разу не добавлялся в этой сцене, у него выключен
enabled, либо клик пришёлся мимоhitArea. - Картинка стоит не на месте. Текстура должна быть картинкой во весь экран, совпадающей с фоном, а не маленькой вырезкой.
- Объект возвращается после того, как его взяли. Сценарий, который его добавляет, должен проверять тот же тег или флаг, который ставит сценарий клика.


