Quote:Появляется плагин на новых монстров с описанием формата. Он закрывает все вопросы, предоставляя декларативное json-api (под который без проблем можно писать визуальный редактор) и набор функций API для остальных.
Но ведь это не ответ.
Т.е. "автор сделает нам зашибись, а как - ну как-нибудь сделает". Я за такое даже за бабки грязно ругаюсь и иногда даже отказываюсь, а тут прост так.
Как будет реализовываться единообразное чтение json? Эра поддерживает комментарии, но не предоставляет плагинам ничего для работы с json (емнип), поэтому библиотек будет..разнообразно, и с теми же нестандартизированными комментариями будут наблюдаться всякие интересные эффекты.
Если это будет не просто "api c json", а именно JSON:API "типа я restful", то нужна сразу эталонная реализация. Кто её подгонит? Кто будет гарантировать, что она адекватна всем возникающим задачам? Как убедить людей, что она нужна?
Как будет это апи реализовываться? Экспорты из дллплагина, и заголовочник? Это возможно и без эры, но почему-то этим никто не пользуется. Не говоря уже об опухании дллмейна от всяких InitializeEra(); InitializeMonsterExtender(); InitializeMonsterExtender2(); InitializeArtifactExtender(); InitializeSomeshit1Extender(); InitializeSomeshit2Extender(); .. InitializeSomeshit37Extender();
Как будет решаться вопрос с разными версиями плагинов, и вообще с известной проблемой
пятнадцатого стандарта? У нас уже есть два разных плагина для добавления монстров, и при этом этот зоопарк еще и не закрывает всех потребностей.
Альтернативное предложение: нам просто нужен обмен переменными на уровне эры, как это делают плагины и хота для общения с HD-модом.
Т.е. никакого внешнего апи, которое поддерживается волшебными гномиками, а тупо глобальное key-value хранилище, и функции типа GetEraDword("name", [default_value]), добавить по вкусу вариаций для разных типов.
Тогда, для получения размера монстров - GetEraDword("amethyst.monster_count", 197) или там даже GetEraDword("amethyst.monster_count", GetEraDword("typhon.monster_count", 197))
Более того, мы даже для массива существ можем использовать тогда конструкции вида (_CreatureInfo_*)GetEraDword("amethyst.monster_table_ptr", o_Creatures)
И вообще функция универсальная. У меня давно подгорает от того, что для SN:W-переменных нету прямого доступа, например, приходится писать всякие ненужные обертки над erm.
Туда же можно заливать прочитанный эрой JSON, типа какой-нибудь {plugin_config":{"param":1}} будет мапиться в "_json.plugin_config.param".. ладно, увлекся.