feya писал(а):как эти карты упорядочивать в меню?
Очень просто. В конфигурационном файле слоя/карты (ini-образная структура файла) просто в каком-то ключе должен храниться путь в меню, где эта карта должна болтаться. Можно два пути, чтобы и там и там можно было её видеть.
Примеры:
[*]MenuPath=\Другие карты\Мои любимые карты\Мои карты меркурия\[*]
или, что одно и то же:
[*]MenuPath=\<mnuMapsOther>\Мои любимые карты\Мои карты меркурия\[*]
Здесь в угловых скобках прописывается имя пункта меню, а без скобок Caption. Это позволит избавиться от проблем с локализацией в будущем.
Если пункта меню с указанным именем или кэпшном нет, то создаём его.
Корнем для этих путей можно считать пункты: "Тип карты" для карт и "Слои" для слоёв. Но если в пути нет "\" в начале, то можно, к примеру, допускать указание абсолютного пути в меню (Например вынести карту в самый корень меню!).
feya писал(а):И лучше не в zip. и так счас время открытия закрытия программы мя напрягает, а если еще паковать распаковывать вообще кошмар будет.
Файлы слоёв получатся небольшими. Там только иконки, настройки да скрипты. Никакого сжатия даже не нужно. И распаковываться всё это будет быстро и один раз при запуске. Кстати, в будущем подгрузку дополнительных карт можно проводить в отдельном потоке уже во время работы программы.
При загрузке карты/слоя файл не надо распаковывать на диск. Достаточно вытащить из него нужные файлы прямо в памяти и загрузить их в соответствующие структуры программы. Больше обращения к этим архивам в процессе работы быть недолжно.
Zip в этом плане наиболее удобный формат. Пользователям не сложно будет создавать и редактировать свои карты и слои. WinAMP'овские скины, например, тоже лежат в ZIP-архивах и это не мешает ему довольно шустро грузиться.
---------------------------------
Чуть не забыл.
Относительно путей в меню.
Если пользователю не нравится где та или иная карта/слой себя располагает в меню, то ему не нужно править файл с настройками этого слоя, достаточно в настройках планеты указать для этого слоя (идентифицировать его по GUID и/или какому-то названию) новый путь, который будет перекрывать стандартные настройки слоя.
Вообще нужно, чтобы тот или иной параметр настроек карты/слоя сначала искался в общем ini-файле в группе, соответствующей GUID'у крты/слоя, а затем уже в настройках слоя.