[ AmberSkyNet VR ]Продолжаем... Неспеша... Как там у Исссы - "тихо-тихо ползи, Улитка, по склону Фудзи.." Пора делать парсинг ini-файла. Файла, в котором
будут храниться всякие настройки - графические, сетевые, игровые.
Пора и нам сделать такой файл.. Его местом расположения
будет та папка, в которой лежит AmberSkyNet.exe, т.к. на момент
старта программы нам неизвестны другие пути. Вообще, планировал написать универсальный интерфейс парсера, одним из парсеров был бы парсер ini-файлов, но потом передумал. Я не стал делать отдельный класс для хранения структуры ini-файла.
Оно выглядит красиво, но по-моему не очень нужно, т.к. переменных
окружения не так уж и много, чтобы хранить их еще и иерархически. Например в ini-файле есть следующие строки: ... [Video] Screen=800x600 MouseSens_X=150 MouseSens_Y=150 ...Тогда после разбора ini-файла классом CEngine мы можем читать эти параметры во внешней программе следующим образом: ENGINE->GetPtrParam("[Video]Screen"); ENGINE->GetPtrParam("[Video]MouseSens_X"); ENGINE->GetPtrParam("[Video]MouseSens_Y"); После разбора ini-файла в конструкторе CEngine можно создавать различные менеджеры, подавая им на вход требуемый им путь или указатель на Engine (в этом случае они будут сами читать переменные окружения и в зависимости от их значений инициализироваться сами). Изменения в исходникахinclude/: Добавлен файл EngineStarter.h для "автоматической" загрузки модуля asnEngine.dll. Теперь к классу Engine можно обращаться используя макрос ENGINE (да, мне понравилось решение в SAVEngine 8), но у меня Engine вынесено в отдельный от Main модуль, поэтому обращаться напрямую к нему не получится - надо сначала загрузить asnEngine.dll). src/asnCommon/: В файле утилитарных функций добавлена функция Trim - отбрасывание пробелов в начале и конце строки src/asnMain/: Класс загрузки плагинов вынесен в asnEngine. Указатель на экземпляр класса движка получаем через использование макроса ENGINE. src/asnEngine/: Сюда перенесен класс загрузки плагинов. Класс CEngine разбирает ini-файл и создаёт экземпляр класса загрузки плагинов. Загружаемый модуль asnEngine.dll создаётся в папке bin/, а не в папке plugins/. Исходники этого шага выложены в SVN. Скачать их можно набрав команду: svn co https://svn.sourceforge.net/svnroot/ambernet/tags/AmberSkyNet-0.4 ambernet_0.4 |