added some tables, add upgrade

now not reading tables:
	morphs
	chains
	upgrades
	towersOnLevel
This commit is contained in:
2010-08-22 08:57:31 +03:00
parent da42fe8f58
commit 7099e17901
5 changed files with 261 additions and 86 deletions

View File

@@ -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))