Понял всю важность этого реквеста когда думал, отклонять ли вот эти идеи:
https://doom2d.org/forum/viewtopic.php?f=41&t=2217https://doom2d.org/forum/viewtopic.php?f=41&t=1497https://doom2d.org/forum/viewtopic.php?f=41&t=1732Во-первых, прежде всего надо обдумать, чем вообще являются наши триггеры и чем они отличаются от обычного рафинированного скриптования в вакууме.
Другими словами, нужно понять вычислительную модель: что у нас является программой (машиной состояний), и что в ней является детерминированными аспектами, а что нет.
Сейчас мне видятся три основных понятия: зона срабатывания, область воздействия, типы активации. Нужно чётко их определить и отделить друг от друга.
То есть в подобной модели триггер "Звук", например, не надо разделять на "Глобальный звук" и "Локальный звук".
Ему просто надо добавить параметр "точка воспроизведения" в качестве области воздействия, подобно "точке назначения" в телепорте.
А глобальными считать звуки, у которых она не выставлена.
Во-вторых, нужно определить параметры, которые должны стать общими для всех триггеров в принципе.
Чтобы не делать по расширителю на каждый несчастный счётчик.
В-третьих, нужно упростить программирование триггерами и сделать его более наглядным.
Скажем, добавить окошко для просмотра графа потока управления, где точками входа в "программу" считать триггеры с типами активации.
Кроме того, у нас сейчас есть заметная проблема с необходимостью накладывать несколько триггеров друг на друга ради совершения действий одновременно.
Чтобы это преодолеть, я бы предложил разделить понятие "триггер" на "зона срабатывания" и "выполняемые действия". У одной зоны есть список действий.
Нынешние триггеры в таком случае следует понимать как зону, у которой в списке содержится только одно действие.
А вот к идее о замене понятия "область активации" на "список активации" я со временем охладел. Наличие у триггера только одной области активации и необходимость располагать активируемые ею триггеры в топологической близости друг от друга, как ни странно, хорошо ограничивают сложность логики и принуждают к её структурированию. Иначе со временем понимать эти конструкции становилось бы совсем невозможно. То есть получается этакое двухмерное визуальное программирование.