added some tables, add upgrade
now not reading tables: morphs chains upgrades towersOnLevel
This commit is contained in:
119
loader.cpp
119
loader.cpp
@@ -24,10 +24,11 @@ void Loader::load()
|
||||
readMaps();
|
||||
readLevels();
|
||||
//readMorphs();
|
||||
//readSplashes();
|
||||
//readTowers();
|
||||
readSplashes();
|
||||
readTowers();
|
||||
readTriggers();
|
||||
//readChains();
|
||||
//readLevTowers();
|
||||
//readTriggers();
|
||||
readWaves();
|
||||
readWaveParts();
|
||||
readLevWaves();
|
||||
@@ -171,8 +172,9 @@ void Loader::readAliens()
|
||||
al.armor = nm.namedItem("armor").nodeValue().toFloat();
|
||||
al.imgType = nm.namedItem("imageType").nodeValue().toInt();
|
||||
al.regeneration = nm.namedItem("regeneration").nodeValue().toFloat();
|
||||
al.score = nm.namedItem("score").nodeValue().toInt();
|
||||
aliens.insert(al.id,al);
|
||||
qDebug() << tr("Alien %1 id=%2 health=%3 speed=%4 prise=%5 imgType=%6 armor=%7 regeneration=%8").arg(al.name).arg(al.id).arg(al.health).arg(al.speed).arg(al.prise).arg(al.imgType).arg(al.armor).arg(al.regeneration);
|
||||
qDebug() << tr("Alien %1 id=%2 health=%3 speed=%4 prise=%5 imgType=%6 armor=%7 regeneration=%8 score=%10").arg(al.name).arg(al.id).arg(al.health).arg(al.speed).arg(al.prise).arg(al.imgType).arg(al.armor).arg(al.regeneration).arg(al.score);
|
||||
}
|
||||
qDebug("================");
|
||||
qDebug() << tr("Found %1 aliens").arg(aliens.size());
|
||||
@@ -294,6 +296,51 @@ void Loader::readLevels()
|
||||
}
|
||||
|
||||
|
||||
void Loader::readTriggers()
|
||||
{
|
||||
QString str;
|
||||
QDomNodeList trelems = doc->elementsByTagName("trigger");
|
||||
for (int i=0; i<trelems.size(); i++)
|
||||
{
|
||||
tbTrigger trig;
|
||||
QDomNamedNodeMap nm = trelems.at(i).attributes();
|
||||
trig.id = nm.namedItem("id").nodeValue().toInt();
|
||||
if (triggers.contains(trig.id)) qCritical("Same splash ID dedected, replacing...");
|
||||
trig.name = nm.namedItem("name").nodeValue();
|
||||
trig.damage = nm.namedItem("damage").nodeValue().toFloat();
|
||||
trig.radius = nm.namedItem("radius").nodeValue().toFloat();
|
||||
trig.randomPosRadius = nm.namedItem("randomPosRadius").nodeValue().toFloat();
|
||||
trig.count = nm.namedItem("count").nodeValue().toInt();
|
||||
trig.timer = nm.namedItem("timer").nodeValue().toInt();
|
||||
trig.chance = nm.namedItem("chance").nodeValue().toInt();
|
||||
if (!(trig.chance>1)) trig.chance = 100;
|
||||
str = nm.namedItem("delParent").nodeValue();
|
||||
trig.delParent = (str == "true");
|
||||
str = nm.namedItem("type").nodeValue();
|
||||
if (str == "onDestination")
|
||||
trig.type = tbTrigger::onDestination;
|
||||
if (str == "onTimer")
|
||||
trig.type = tbTrigger::onTimer;
|
||||
if (str == "onAlienInRadius")
|
||||
trig.type = tbTrigger::onAlienInRadius;
|
||||
str = nm.namedItem("childAim").nodeValue();
|
||||
trig.childAim = tbTrigger::noAim;
|
||||
if (str == "allSide")
|
||||
trig.childAim = tbTrigger::allSide;
|
||||
if (str == "parentAim")
|
||||
trig.childAim = tbTrigger::parentAim;
|
||||
if (str == "nearlestAlien")
|
||||
trig.childAim = tbTrigger::nearlestAlien;
|
||||
triggers.insert(trig.id,trig);
|
||||
qDebug() << tr("Trigger %1 id=%2 damage=%3 radius=%4 delParent=%5 timer=%6").arg(trig.name).arg(trig.id).arg(trig.damage).arg(trig.radius).arg(trig.delParent).arg(trig.timer)
|
||||
<< tr("count=%1 chance=%2 randomPosRadius=%3 type=%4 childAim=%5").arg(trig.count).arg(trig.chance).arg(trig.randomPosRadius).arg(trig.type).arg(trig.childAim);
|
||||
}
|
||||
qDebug("================");
|
||||
qDebug() << tr("Found %1 triggers").arg(triggers.size());
|
||||
qDebug("================");
|
||||
}
|
||||
|
||||
|
||||
void Loader::readSplashes()
|
||||
{
|
||||
QString str;
|
||||
@@ -301,29 +348,17 @@ void Loader::readSplashes()
|
||||
for (int i=0; i<selems.size(); i++)
|
||||
{
|
||||
tbSplash s;
|
||||
// s.id = selems.at(i).attributes().namedItem("id").nodeValue().toInt();
|
||||
// if (splashes.contains(s.id)) qCritical("Same splash ID dedected, replacing...");
|
||||
// s.name = selems.at(i).attributes().namedItem("name").nodeValue();
|
||||
// s.speed = selems.at(i).attributes().namedItem("speed").nodeValue().toFloat();
|
||||
// s.radius = selems.at(i).attributes().namedItem("radius").nodeValue().toFloat();
|
||||
// s.damage = selems.at(i).attributes().namedItem("damage").nodeValue().toFloat();
|
||||
// s.timer = selems.at(i).attributes().namedItem("timer").nodeValue().toInt();
|
||||
// s.lifetime = selems.at(i).attributes().namedItem("lifetime").nodeValue().toInt();
|
||||
// s.imgType = selems.at(i).attributes().namedItem("imageType").nodeValue().toInt();
|
||||
// str = selems.at(i).attributes().namedItem("autoControl").nodeValue();
|
||||
// s.autoControl = (str == "true");
|
||||
// str = selems.at(i).attributes().namedItem("triggerDeath").nodeValue();
|
||||
// s.isDeadAfterTrigger = (str == "true");
|
||||
// str = selems.at(i).attributes().namedItem("trigger").nodeValue();
|
||||
// s.trigger = tbSplash::noTrigger;
|
||||
// if (str == "onDestination")
|
||||
// s.trigger = tbSplash::onDestination;
|
||||
// if (str == "onTimer")
|
||||
// s.trigger = tbSplash::onTimer;
|
||||
// if (str == "onAlienInRadius")
|
||||
// s.trigger = tbSplash::onAlienInRadius;
|
||||
// splashes.insert(s.id,s);
|
||||
// qDebug() << tr("Splash %1 id=%2 damage=%3 speed=%4 radius=%5 imgType=%6 ").arg(s.name).arg(s.id).arg(s.damage).arg(s.speed).arg(s.radius).arg(s.imgType) << tr("lifetime=%1 timer=%2 trigger=%3 autoControl=%4 triggerDeath=%5").arg(s.lifetime).arg(s.timer).arg(s.trigger).arg(s.autoControl).arg(s.isDeadAfterTrigger);
|
||||
QDomNamedNodeMap nm = selems.at(i).attributes();
|
||||
s.id = nm.namedItem("id").nodeValue().toInt();
|
||||
if (splashes.contains(s.id)) qCritical("Same splash ID dedected, replacing...");
|
||||
s.name = nm.namedItem("name").nodeValue();
|
||||
s.speed = nm.namedItem("speed").nodeValue().toFloat();
|
||||
s.lifetime = nm.namedItem("lifetime").nodeValue().toInt();
|
||||
s.imgType = nm.namedItem("imageType").nodeValue().toInt();
|
||||
str = nm.namedItem("autoControl").nodeValue();
|
||||
s.autoControl = (str == "true");
|
||||
splashes.insert(s.id,s);
|
||||
qDebug() << tr("Splash %1 id=%2 speed=%3 imgType=%4 autoControl=%5 lifetime=%6").arg(s.name).arg(s.id).arg(s.speed).arg(s.imgType).arg(s.autoControl).arg(s.lifetime);
|
||||
}
|
||||
qDebug("================");
|
||||
qDebug() << tr("Found %1 splashes").arg(splashes.size());
|
||||
@@ -336,12 +371,32 @@ void Loader::readTowers()
|
||||
QDomNodeList twelems = doc->elementsByTagName("tower");
|
||||
for (int i=0; i<twelems.size(); i++)
|
||||
{
|
||||
bool OK = true;
|
||||
tbTower tw;
|
||||
tw.id = twelems.at(i).attributes().namedItem("id").nodeValue().toInt();
|
||||
QDomNamedNodeMap nm = twelems.at(i).attributes();
|
||||
tw.id = nm.namedItem("id").nodeValue().toInt();
|
||||
if (towers.contains(tw.id)) qCritical("Same tower ID dedected, replacing...");
|
||||
tw.name = twelems.at(i).attributes().namedItem("name").nodeValue();
|
||||
towers.insert(tw.id,tw);
|
||||
qDebug() << tr("Tower %1 id=%2").arg(tw.name).arg(tw.id);
|
||||
tw.name = nm.namedItem("name").nodeValue();
|
||||
tw.radius = nm.namedItem("radius").nodeValue().toFloat();
|
||||
tw.expByDamage = nm.namedItem("expByDamage").nodeValue().toFloat();
|
||||
tw.expByKill = nm.namedItem("expByKill").nodeValue().toFloat();
|
||||
tw.expByShot = nm.namedItem("expByShot").nodeValue().toFloat();
|
||||
tw.imgType = nm.namedItem("imageType").nodeValue().toInt();
|
||||
tw.reload = nm.namedItem("reload").nodeValue().toInt();
|
||||
tw.cost = nm.namedItem("cost").nodeValue().toInt();
|
||||
tw.buildTime = nm.namedItem("buildTime").nodeValue().toInt();
|
||||
tw.splashId = nm.namedItem("splash").nodeValue().toInt();
|
||||
if (!splashes.contains(tw.splashId))
|
||||
{
|
||||
qCritical("Invalid splash Id");
|
||||
OK = false;
|
||||
}
|
||||
if (OK)
|
||||
{
|
||||
towers.insert(tw.id,tw);
|
||||
qDebug() << tr("Tower %1 id=%2 radius=%3 cost=%4 reload=%5 buildTime=%6 splash=%7").arg(tw.name).arg(tw.id).arg(tw.radius).arg(tw.cost).arg(tw.reload).arg(tw.buildTime).arg(tw.splashId)
|
||||
<< tr("imgType=%1 expByKill=%2 expByShot=%3 expByDamage=%4").arg(tw.imgType).arg(tw.expByKill).arg(tw.expByShot).arg(tw.expByDamage);
|
||||
}
|
||||
}
|
||||
qDebug("================");
|
||||
qDebug() << tr("Found %1 towers").arg(towers.size());
|
||||
@@ -383,8 +438,6 @@ void Loader::validate()
|
||||
QXmlSchema schema;
|
||||
if (!schema.load(&sfile))
|
||||
qFatal("Error parsing schema.xml");
|
||||
if (!schema.isValid())
|
||||
qFatal("Invalid XMLSchema in schema.xml");
|
||||
QXmlSchemaValidator sval(schema);
|
||||
QFile dfile("data.xml");
|
||||
if (!dfile.open(QIODevice::ReadOnly))
|
||||
|
||||
Reference in New Issue
Block a user