some work...

read all, but missing morphs and upgrades
new in-game types (src and cur)
This commit is contained in:
2010-08-22 19:05:25 +03:00
parent 7099e17901
commit f6125014dd
5 changed files with 168 additions and 36 deletions

View File

@@ -27,8 +27,9 @@ void Loader::load()
readSplashes();
readTowers();
readTriggers();
//readChains();
//readLevTowers();
readChains();
//readUpgrades();
readLevTowers();
readWaves();
readWaveParts();
readLevWaves();
@@ -43,10 +44,6 @@ void Loader::create()
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);
@@ -110,7 +107,6 @@ void Loader::create()
elem.setAttribute("autoControl","true");
elem.setAttribute("radius",1.2);
elem.setAttribute("id",0);
cfile.write(doc->toByteArray());
cfile.close();
}
@@ -235,6 +231,53 @@ void Loader::readWaveParts()
}
void Loader::readChains()
{
QDomNodeList celems = doc->elementsByTagName("chain");
for (int i=0; i<celems.size(); i++)
{
bool OK = true;
tbChain chain;
QDomNamedNodeMap nm = celems.at(i).attributes();
chain.towerId = nm.namedItem("tower").nodeValue().toInt();
if (!towers.contains(chain.towerId))
{
qCritical("invalid tower Id");
OK = false;
}
chain.childSplashId = nm.namedItem("child").nodeValue().toInt();
if (chain.childSplashId > 0)
{
if (!splashes.contains(chain.childSplashId))
{
qCritical("invalid child splash Id");
OK = false;
}
}
chain.parentSplashId = nm.namedItem("parent").nodeValue().toInt();
if (!splashes.contains(chain.parentSplashId))
{
qCritical("invalid parent splash Id");
OK = false;
}
chain.triggerId = nm.namedItem("trigger").nodeValue().toInt();
if (!triggers.contains(chain.triggerId))
{
qCritical("invalid parent splash Id");
OK = false;
}
if (OK)
{
chains.insert(chain.towerId,chain);
qDebug() << tr("Tower=%1 parent=%2 child=%3 trigger=%4").arg(chain.towerId).arg(chain.parentSplashId).arg(chain.childSplashId).arg(chain.triggerId);
}
}
qDebug("================");
qDebug() << tr("Found %1 chains").arg(chains.size());
qDebug("================");
}
void Loader::readLevWaves()
{
QDomNodeList lwelems = doc->elementsByTagName("waveOnLevel");
@@ -267,6 +310,38 @@ void Loader::readLevWaves()
}
void Loader::readLevTowers()
{
QDomNodeList ltelems = doc->elementsByTagName("towerOnLevel");
for (int i=0; i<ltelems.size(); i++)
{
bool OK = true;
tbTowerOnLevel lt;
QDomNamedNodeMap nm = ltelems.at(i).attributes();
lt.levelId= nm.namedItem("level").nodeValue().toInt();
if (!levels.contains(lt.levelId))
{
qCritical("invalid level Id");
OK = false;
}
lt.towerId = nm.namedItem("tower").nodeValue().toInt();
if (!towers.contains(lt.towerId))
{
qCritical("invalid tower Id");
OK = false;
}
if (OK)
{
levTowers.insert(lt.levelId,lt);
qDebug() << tr("level=%1 tower=%2").arg(lt.levelId).arg(lt.towerId);
}
}
qDebug("================");
qDebug() << tr("Found %1 Towers On Level").arg(levTowers.size());
qDebug("================");
}
void Loader::readLevels()
{
QDomNodeList lelems = doc->elementsByTagName("level");