bool BaseEvents::loadFromXml() { std::string scriptsName = getScriptBaseName(); if(m_loaded) { std::clog << "[Error - BaseEvents::loadFromXml] " << scriptsName << " interface already loaded!" << std::endl; return false; } std::string path = getFilePath(FILE_TYPE_OTHER, std::string(scriptsName + "/lib/")); if(!getInterface().loadDirectory(path, false, true)) std::clog << "[Warning - BaseEvents::loadFromXml] Cannot load " << path << std::endl; #ifdef _MULTIPLATFORM76 path = getFilePath(FILE_TYPE_OTHER, std::string(scriptsName + "/" + scriptsName + ".xml")); #else path = getFilePath(FILE_TYPE_OTHER, std::string(scriptsName + "/" + ITEMS_PATH + "/" + scriptsName + ".xml")); #endif xmlDocPtr doc = xmlParseFile(path.c_str()); if(!doc) { std::clog << "[Warning - BaseEvents::loadFromXml] Cannot open " << path << " file." << std::endl; std::clog << getLastXMLError() << std::endl; return false; } xmlNodePtr root = xmlDocGetRootElement(doc); if(xmlStrcmp(root->name, (const xmlChar*)scriptsName.c_str())) { std::clog << "[Error - BaseEvents::loadFromXml] Malformed " << path << " file." << std::endl; xmlFreeDoc(doc); return false; } path = getFilePath(FILE_TYPE_OTHER, std::string(scriptsName + "/scripts/")); for(xmlNodePtr p = root->children; p; p = p->next) parseEventNode(p, path, false); xmlFreeDoc(doc); m_loaded = true; return m_loaded; }
bool BaseEvents::loadFromXml() { std::string scriptsName = getScriptBaseName(); if(m_loaded) { std::cout << "[Error - BaseEvents::loadFromXml] " << scriptsName << " interface already loaded!" << std::endl; return false; } if(getScriptInterface().loadFile(getFilePath(FILE_TYPE_OTHER, std::string(scriptsName + "/lib/" + scriptsName + ".lua"))) == -1) std::cout << "[Warning - BaseEvents::loadFromXml] Cannot load " << scriptsName << "/lib/" << scriptsName << ".lua" << std::endl; xmlDocPtr doc = xmlParseFile(getFilePath(FILE_TYPE_OTHER, std::string(scriptsName + "/" + scriptsName + ".xml")).c_str()); if(!doc) { std::cout << "[Warning - BaseEvents::loadFromXml] Cannot open " << scriptsName << ".xml file." << std::endl; std::cout << getLastXMLError() << std::endl; return false; } xmlNodePtr p, root = xmlDocGetRootElement(doc); if(xmlStrcmp(root->name,(const xmlChar*)scriptsName.c_str())) { std::cout << "[Error - BaseEvents::loadFromXml] Malformed " << scriptsName << ".xml file." << std::endl; xmlFreeDoc(doc); return false; } std::string scriptsPath = getFilePath(FILE_TYPE_OTHER, std::string(scriptsName + "/scripts/")); p = root->children; while(p) { parseEventNode(p, scriptsPath, false); p = p->next; } xmlFreeDoc(doc); m_loaded = true; return m_loaded; }