Во всех JSON-объектах, где поле называется conditions всегда подразумевается, что будет использована именно эта структура данных.
Их можно задать для завершения главы, для выборочного показа кнопок в диалоге, а также при использовании очереди диалогов.
Данная структура данных имеет вид массива строк, где в строках использованы специальные команды условий.
Все условия проверяются по порядку и если хоть одно условие было не выполнено, то какое-то действие не произойдет(зависит от контекста использования условий).
Примечание: Если список условий будет пуст, то это означает, что все условия были соблюдены.
{
"conditions": [
"paragraph test",
"not_completed test2",
"day"
]
}Пустой список условий
{
"conditions": []
}Ниже представлен список всех стандартных условий:
- Постоянно не выполняемое условие для отключения контента (
never) - Выполняется только ночью (
night) - Выполняется только днем (
day) - Выполняется когда идет дождь (
rain) - Проверяет наличие предмета в инвентаре у игрока (
item) - Проверка выполнения задания/изучения главы (
paragraph) - Проверка на то, что задание не выполнено/не изучена глава (
not_completed) - Проверка на прочтение диалога (
dialogue) - Проверка на то, что игрок не читал диалог (
not_read)
Для создания собственного условия вам потребуется наследовать класс условия от класса Condition.
public class DayCondition extends Condition {
public DayCondition() {
super("day"); //В конструктор суперкласса передается имя команды
}
@Override
public Result handle(PlayerData playerData, String[] args) throws IndexOutOfBoundsException {
int time = playerData.getPlayer().getLevel().getTime();
return new Result("Дождаться дня", 1000 < time && time < 12000);
}
}Обработка результата идет в методе handle. Данный метод должен возвращать объект класса Result с результатом проверки данного условия.
Первый аргумент конструктора данного класса содержит текст условия, а второй аргумент - результат выполнения типа boolean.
Далее нам нужно зарегистрировать данное условие в менеджере условий, а также регистрация условия должна происходить при загрузке плагина(в методе onLoad в главном классе плагина).
@Override
public void onLoad(){
ConditionManager conditionManager = Expo.getInstance().getConditionManager();
conditionManager.registerCondition(new DayCondition());
}