Russian-Doom / russian-doom

A limit-removing source port of Doom, Heretic and Hexen. It has numerous vanilla bug fixes, enhanced 640x400 and 1280x800 rendering resolutions, improved game palettes and offers many optional aesthetic game enhancements along with the maximum possible translation to the Russian language.
GNU General Public License v2.0
81 stars 13 forks source link

Simplify pwad/deh autoload #442

Closed JNechaevsky closed 1 year ago

JNechaevsky commented 1 year ago

So user won't need to manually create folders and read instruction. Such structure should also be compatible with Chocolate, Crispy and Woof.

Dasperal commented 1 year ago

Я правильно понимаю что в результате этого упрощения мы: 1) Потеряли возможность автолоада для pwad-ов (широкоформатные титульники, umapinfo, и т.д.). 2) Потеряли возможность задать папку автолоада через аргумент командной строки. 3) Задали приоритет *.deh файлов над *.wad и *.lmp, при этом потеряли возможность автолоуда файлов с иными расширениями. 4) Потеряли загрузку внутренних ресурсов для pwad-ов из автолоада.

А ещё M_GetAutoloadDir это дублирование кода, которое ещё и криво работает.

Я предлагаю вертать всё взад с учётом новых требований. Кстати, а в чём была изначальная цель изменений?

JNechaevsky commented 1 year ago

Да, видимо лучше всё вернуть как было. Цель была простая - не создавать руками папку с autoload/iwadами, и не прописывать её руками в конфиг. Т.е. чтобы порт сам создавал нужные папки, в которые пользователю нужно просто положить нужные pwad/deh.

Dasperal commented 1 year ago

Для этого нужно было просто задать дефолтное значение пути в конфиге на базе GetDefaultConfigDir, и добавить в AutoloadFiles создание папок. Если важно задать порядок по типам файлов, то это делается тоже через изменения в AutoloadFiles.

Изначально было сделано так как сделано потому что: 1) Не всем нужен автолоад. 2) Если человек уже использовал автолоад с шоколадкой, то ему не нужно будет копировать папку, а просто прописать её в конфиг ID. 3) Как написал rfomin, если создавать папки автоматически то будет много пустых папок.

Возможность задать папку через командную строку нужна когда тебе нужен автолдоад в другом окружении, например при создании и тестировании вадов.

По коду суть в том что загрузка любых pwad-ов проходит через LoadFile где при необходимости подгружаются внутренние ресурсы и делается прочая поддержка.

JNechaevsky commented 1 year ago

Насчёт папок у нас недопонимание - имеется в виду автосоздание для iwad (doom.wad, doom2.wad, ...), ни в коем случае не для pwad. Или "для pwad" подразумевает что-то другое? @rfomin ?

rfomin commented 1 year ago

Насчёт папок у нас недопонимание - имеется в виду автосоздание для iwad (doom.wad, doom2.wad, ...), ни в коем случае не для pwad.

Думаю у нас правильное понимание.

Почему-то против автолоада возник гигантский спор в Дискорде, видимо поэтому в Inter Doom все как-то усложнилось. В других портах нету никаких настроек.

JNechaevsky commented 1 year ago

Почему-то против автолоада возник гигантский спор в Дискорде, видимо поэтому в Inter Doom все как-то усложнилось. В других портах нету никаких настроек.

Кто зачинщик? Кто исполнитель? Всё выпилить! Всё выкинуть! В т.ч. неканоничное, оставить только кросс-порт совместимое! :gun:

Dasperal commented 1 year ago

@JNechaevsky Если только для iwad, то на этапе https://github.com/JNechaevsky/inter-doom/blob/master/src/doom/d_main.c#L2126 создавать нужную по тому же принципу, что и в AutoloadFiles.

@rfomin А что у нас усложнилось? Всё то же самое же, просто больше возможностей и есть описание как оно работает и как им пользоваться.

rfomin commented 1 year ago

А что у нас усложнилось? Всё то же самое же, просто больше возможностей и есть описание как оно работает и как им пользоваться.

Ну по факту когда открываешь папку с портом там нет autoload и я бы решил что он не поддерживается. Весь смысл идеи в том что там 0 настроек и не нужно никакого описания. Например, зачем настраивать путь для autoload? Можно просто скопировать папку, у вас там не будет сотен гигабайт, в чем проблема.. Впрочем я об этом уже спорил.

Dasperal commented 1 year ago

@rfomin

Например, зачем настраивать путь для autoload? Можно просто скопировать папку, у вас там не будет сотен гигабайт, в чем проблема.

А я не хочу копировать папку, я хочу использовать ту, что уже есть, или даже полностью свою в удобном мне месте. Вносить изменения только в одну папку, а не распихивать новый вад для автолоуда по папкам разных портов. Если это нельзя указать в конфиге, то я сделаю символьную ссылку, но лучше чтобы можно было настроить в конфиге.

и не нужно никакого описания

Описание всегда нужно. Хотя бы для людей которые сначала читают мануал, а потом начинают пользоваться.

Против наличия папки autoload изначально ничего не имею. Как сделать её автоматическое создание я уже написал выше. Если будет поставлена такая задача, могу даже сам реализовать. @JNechaevsky

rfomin commented 1 year ago

Против наличия папки autoload изначально ничего не имею.

Собственно да, считаю это бы всех устроило.

Вносить изменения только в одну папку, а не распихивать новый вад для автолоуда по папкам разных портов.

Да это резонно. Подумываю добавить во все порты (до которых позволят дотянуться 😆) переменную окружения по типу DOOMWADDIR. Например DOOMAUTOLOADDIR.

JNechaevsky commented 1 year ago

Против наличия папки autoload изначально ничего не имею. Как сделать её автоматическое создание я уже написал выше. Если будет поставлена такая задача, могу даже сам реализовать. @JNechaevsky

Да, в этом как раз идея: порт сам создаёт себе папку autoload с подпапками iwad-ов (по мере их запуска, а не сразу скопом), но в тоже время ничто не запрещает пользователю переключиться на папку от другого порта через переменную в конфиге. Сделай, пожалуйста, без моего вмешательства.

Dasperal commented 1 year ago

Done #443

JNechaevsky commented 1 year ago

Спасибо!