04.07.2013, 18:55
SyDr, тогда предлагаю следующее.
1) Имя мода — каноническое имя мода = название папки. То, что у тебя в файле настроек зовётся Name — это Заголовок (Caption, Title). Будет правильным, на мой взгляд, изменить это поле в mod_info.
2) Версия мода — строка, при обрезании которой можно вычленить первое дробное число, которое и является ориентиром для сравнения. Дата не нужна.
2) Репозиторий — папка, где хранятся в каком-то порядке моды и находится файл со списком модов. Путь к папке может быть url-адресом (фильтрация по поиску "://") или локально/сетевым путём. В зависимости от типа пути используются соответственно обычные файловые функции или InetDownloadFile и им подобные.
Репозиторий содержит в корне файл mods.ini с простым списком модов.
Список имеет формат (EBNF):
Пример:
Таким образом репозиторий есть набор имён модов, путей к ним и путей к конфигам. Для сетевых репозиториев необходимо кодировать адреса или хотя бы преобразовывать пробелы в %20.
3) В менеджере модов отображается текущий выбранный репозиторий или ничего. Есть возможность редактировать список репозиториев и выбирать новый активный
4) Поле Link для менеджера модов не имеет смысла, только для пользователя, куда тот сможет перейти в поисках новостей или непрямой ссылки для скачивания обновления.
5) Репозиторий можно просмотреть, можно выбрать мод для установки (в случае наличия такого же обновления или отката). Для сетевого репозитория иконки можно не отображать (серые папки). Вероятно имеет смысл выделять уже установленные моды. Можно выбрать любой мод и нажать «Установить».
6) При обычном просмотре списка модов доступна кнопка «Обновить». При её нажатии происходит загрузка информации с репозитория (обработка возможных ошибок) и попытка скачать/скопировать архив во временную папку.
1) Имя мода — каноническое имя мода = название папки. То, что у тебя в файле настроек зовётся Name — это Заголовок (Caption, Title). Будет правильным, на мой взгляд, изменить это поле в mod_info.
2) Версия мода — строка, при обрезании которой можно вычленить первое дробное число, которое и является ориентиром для сравнения. Дата не нужна.
2) Репозиторий — папка, где хранятся в каком-то порядке моды и находится файл со списком модов. Путь к папке может быть url-адресом (фильтрация по поиску "://") или локально/сетевым путём. В зависимости от типа пути используются соответственно обычные файловые функции или InetDownloadFile и им подобные.
Репозиторий содержит в корне файл mods.ini с простым списком модов.
Список имеет формат (EBNF):
Code:
Список = ПустаяСекция [Моды]
ПустаяСекция = "[]" ПереводСтроки
Моды = Мод [ПереводСтроки Мод]
Мод = ИмяМода "=" ОтносительныйПутьКМоду "|" ОтносительныйПутьКModInfo
Пример:
Code:
[]
WoG = wog/wog.exe | wog/mod_info.ini
HoL 3.1 = hol/hol 3.1.emp | hol/hol3.1.ini
Таким образом репозиторий есть набор имён модов, путей к ним и путей к конфигам. Для сетевых репозиториев необходимо кодировать адреса или хотя бы преобразовывать пробелы в %20.
3) В менеджере модов отображается текущий выбранный репозиторий или ничего. Есть возможность редактировать список репозиториев и выбирать новый активный
4) Поле Link для менеджера модов не имеет смысла, только для пользователя, куда тот сможет перейти в поисках новостей или непрямой ссылки для скачивания обновления.
5) Репозиторий можно просмотреть, можно выбрать мод для установки (в случае наличия такого же обновления или отката). Для сетевого репозитория иконки можно не отображать (серые папки). Вероятно имеет смысл выделять уже установленные моды. Можно выбрать любой мод и нажать «Установить».
6) При обычном просмотре списка модов доступна кнопка «Обновить». При её нажатии происходит загрузка информации с репозитория (обработка возможных ошибок) и попытка скачать/скопировать архив во временную папку.
Quote:Version = Value ; в любом виде, в котором только хочется. Именно это значение и будет показываться пользователю в качестве версии (если будет показываться).На всякий случай. Более новая дата не есть новая версия. Порой правишь ошибки в старых или обновляешь старые на минорные значения.
Version Date = YYYYMMDDhhmmss ; т.е. 20130704154759, при этом конечные цифры можно будет опускать 20130704 = 20130704000000