#include "loader.h" Loader::Loader(QObject *parent) : QObject(parent) { doc = new QDomDocument("data"); //create(); load(); } void Loader::load() { validate(); file = new QFile("data.xml"); if (!file->open(QIODevice::ReadOnly)) qFatal("No file data.xml found!"); if (!doc->setContent(file)) { file->close(); qFatal("Error parsing data.xml"); } readAliens(); readMaps(); readLevels(); //readMorphs(); //readSplashes(); //readTowers(); //readLevTowers(); //readTriggers(); readWaves(); readWaveParts(); readLevWaves(); file->close(); } void Loader::create() { QFile cfile("data.xml"); if (!cfile.open(QIODevice::WriteOnly)) return; cfile.resize(0); // if (!doc.setContent(&file)) { // file.close(); // return; // } QDomElement elem; QDomElement root = doc->createElement("ADdata"); doc->appendChild(root); QDomElement child = doc->createElement("aliens"); root.appendChild(child); elem = doc->createElement("alien"); child.appendChild(elem); elem.setAttribute("name","my alien"); elem.setAttribute("speed",0.012); elem.setAttribute("health",100); elem.setAttribute("prise",0); elem.setAttribute("id",10); elem.setAttribute("imageType",1); elem = doc->createElement("alien"); child.appendChild(elem); elem.setAttribute("name","MONSTR"); elem.setAttribute("speed",0.0099); elem.setAttribute("health",200); elem.setAttribute("prise",1); elem.setAttribute("id",12); elem.setAttribute("imageType",1); child = doc->createElement("towers"); root.appendChild(child); elem = doc->createElement("tower"); child.appendChild(elem); elem.setAttribute("name","my tower"); elem.setAttribute("imageType",1); elem.setAttribute("reload",20); elem.setAttribute("buildTime",100); elem.setAttribute("price",10); elem.setAttribute("radius",1.2); elem.setAttribute("splashType",0); elem.setAttribute("id",0); elem = doc->createElement("tower"); child.appendChild(elem); elem.setAttribute("name","Wall"); elem.setAttribute("imageType",1); elem.setAttribute("buildTime",300); elem.setAttribute("reload",0); elem.setAttribute("price",9); elem.setAttribute("radius",0); elem.setAttribute("splashType",0); elem.setAttribute("id",1); child = doc->createElement("maps"); root.appendChild(child); elem = doc->createElement("map"); child.appendChild(elem); elem.setAttribute("name","Map 16x16"); elem.setAttribute("maxPlayers","2"); elem.setAttribute("id",1); elem.setAttribute("imageType",1); elem.setAttribute("data",CreateMapExample()); child = doc->createElement("splashes"); root.appendChild(child); elem = doc->createElement("splash"); child.appendChild(elem); elem.setAttribute("name","shot"); elem.setAttribute("imageType",1); elem.setAttribute("damage",2.5); elem.setAttribute("speed",100); elem.setAttribute("autoControl","true"); elem.setAttribute("radius",1.2); elem.setAttribute("id",0); cfile.write(doc->toByteArray()); cfile.close(); } QString Loader::CreateMapExample() { QVector < QVector < int > > Cells; Cells.resize(16); for (int i=0; ielementsByTagName("alien"); for (int i=0; ielementsByTagName("wave"); for (int i=0; ielementsByTagName("wavePart"); for (int i=0; ielementsByTagName("waveOnLevel"); for (int i=0; ielementsByTagName("level"); for (int i=0; ielementsByTagName("splash"); for (int i=0; ielementsByTagName("tower"); for (int i=0; ielementsByTagName("map"); for (int i=0; i> m.cells; maps.insert(m.id,m); qDebug() << tr("Map %1 id=%2 imgType=%3 maxPlayers=%5").arg(m.name).arg(m.id).arg(m.imgType).arg(m.maxPlayers); for (int k=0; k