bool LanguageManager::loadLanguage(const std::string& _file, bool _user) { DataStreamHolder data = DataManager::getInstance().getData(_file); if (data.getData() == nullptr) { MYGUI_LOG(Error, "file '" << _file << "' not found"); return false; } if (_file.find(".xml") != std::string::npos) _loadLanguageXML(data.getData(), _user); else _loadLanguage(data.getData(), _user); return true; }
bool ResourceManager::_loadImplement(const std::string& _file, bool _match, const std::string& _type, const std::string& _instance) { DataStreamHolder data = DataManager::getInstance().getData(_file); if (data.getData() == nullptr) { MYGUI_LOG(Error, _instance << " : '" << _file << "', not found"); return false; } xml::Document doc; if (!doc.open(data.getData())) { MYGUI_LOG(Error, _instance << " : '" << _file << "', " << doc.getLastError()); return false; } xml::ElementPtr root = doc.getRoot(); if ( (nullptr == root) || (root->getName() != "MyGUI") ) { MYGUI_LOG(Error, _instance << " : '" << _file << "', tag 'MyGUI' not found"); return false; } std::string type; if (root->findAttribute("type", type)) { Version version = Version::parse(root->findAttribute("version")); MapLoadXmlDelegate::iterator iter = mMapLoadXmlDelegate.find(type); if (iter != mMapLoadXmlDelegate.end()) { if ((!_match) || (type == _type)) (*iter).second(root, _file, version); else { MYGUI_LOG(Error, _instance << " : '" << _file << "', type '" << _type << "' not found"); return false; } } else { MYGUI_LOG(Error, _instance << " : '" << _file << "', delegate for type '" << type << "'not found"); return false; } } // предпологаем что будут вложенные else if (!_match) { xml::ElementEnumerator node = root->getElementEnumerator(); while (node.next("MyGUI")) { if (node->findAttribute("type", type)) { Version version = Version::parse(root->findAttribute("version")); MapLoadXmlDelegate::iterator iter = mMapLoadXmlDelegate.find(type); if (iter != mMapLoadXmlDelegate.end()) { (*iter).second(node.current(), _file, version); } else { MYGUI_LOG(Error, _instance << " : '" << _file << "', delegate for type '" << type << "'not found"); } } else { MYGUI_LOG(Error, _instance << " : '" << _file << "', tag 'type' not found"); } } } return true; }