#include "plugin.hpp" #include #include #include namespace MyGUI { const std::string& ResourcePlugin::getName() const { static const std::string name = "OpenMW resource plugin"; return name; } void ResourcePlugin::install() { } void ResourcePlugin::uninstall() { } void ResourcePlugin::initialize() { MYGUI_LOGGING("OpenMW_Resource_Plugin", Info, "initialize"); boost::program_options::variables_map variables; boost::program_options::options_description desc("Allowed options"); desc.add_options() ("data", boost::program_options::value()->default_value(Files::PathContainer(), "data")->multitoken()) ("data-local", boost::program_options::value()->default_value("")) ("fs-strict", boost::program_options::value()->implicit_value(true)->default_value(false)) ("fallback-archive", boost::program_options::value >()-> default_value(std::vector(), "fallback-archive")->multitoken()); boost::program_options::notify(variables); Files::ConfigurationManager cfgManager; cfgManager.readConfiguration(variables, desc); std::vector archives = variables["fallback-archive"].as >(); bool fsStrict = variables["fs-strict"].as(); Files::PathContainer dataDirs, dataLocal; if (!variables["data"].empty()) { dataDirs = Files::PathContainer(variables["data"].as()); } std::string local = variables["data-local"].as(); if (!local.empty()) { dataLocal.push_back(Files::PathContainer::value_type(local)); } cfgManager.processPaths (dataDirs); cfgManager.processPaths (dataLocal, true); if (!dataLocal.empty()) dataDirs.insert (dataDirs.end(), dataLocal.begin(), dataLocal.end()); Files::Collections collections (dataDirs, !fsStrict); Bsa::registerResources(collections, archives, true, fsStrict); } void ResourcePlugin::shutdown() { /// \todo remove resource groups MYGUI_LOGGING("OpenMW_Resource_Plugin", Info, "shutdown"); } }