13 m_name = folderDir.dirName();
15 QFile in(folderDir.filePath(
"properties.xml"));
16 Q_ASSERT(in.exists());
17 in.open(QFile::ReadOnly);
22 QDomElement node = doc.firstChild().toElement();
23 Q_ASSERT(!node.isNull());
24 if (node.tagName() !=
"properties")
26 qDebug() <<
"Error loading properties.xml in " << QFileInfo(in).filePath() <<
": Root element must be <property>!";
30 QDomNodeList childNodes = node.childNodes();
31 for (
int i = 0; i < childNodes.size(); i++)
33 QDomElement child = childNodes.at(i).toElement();
34 Q_ASSERT(!child.isNull());
40 if (child.tagName() ==
"type")
42 if (child.text() ==
"floor")
44 else if (child.text() ==
"wall")
46 else if (child.text() ==
"mountable-item")
48 else if (child.text() ==
"item")
52 qDebug() <<
"Error loading properties.xml in " << QFileInfo(in).filePath() <<
": Unknown element type!";
56 else if (child.tagName() ==
"pixmap")
58 m_pixmap = QPixmap(folderDir.filePath(child.text()));
60 else if (child.tagName() ==
"mesh")
64 else if (child.tagName() ==
"meta-info")
66 QDomNodeList
metaInfos = child.childNodes();
67 for (
int i = 0; i < metaInfos.size(); i++)
69 QDomElement metaInfo = metaInfos.at(i).toElement();
70 Q_ASSERT(!metaInfo.isNull());
72 if (metaInfo.tagName() ==
"mi")
74 if (!metaInfo.hasAttribute(
"desc"))
76 qDebug() <<
"Warning: meta-info element is missing \"desc\" attribute in " 77 << QFileInfo(in).filePath();
80 QString desc = metaInfo.attribute(
"desc");
82 if (metaInfo.text().isEmpty())
84 qDebug() <<
"Warning: Empty meta-info element in " 85 << QFileInfo(in).filePath();
88 QString value = metaInfo.text();
93 else if (child.tagName() ==
"item-mount-points")
96 for (
int i = 0; i < itemMountPoints.size(); i++)
98 QDomElement itemMountPoint = itemMountPoints.at(i).toElement();
99 Q_ASSERT(!itemMountPoint.isNull());
101 if (itemMountPoint.tagName() ==
"item-mount-point")
105 if (itemMountPoint.hasAttribute(
"x"))
106 pos.rx() = itemMountPoint.attribute(
"x").toFloat();
107 if (itemMountPoint.hasAttribute(
"y"))
108 pos.ry() = itemMountPoint.attribute(
"y").toFloat();
109 if (itemMountPoint.hasAttribute(
"desc"))
110 desc = itemMountPoint.attribute(
"desc");
122 if (metaInfo.first ==
"Name")
123 return metaInfo.second;
Item freely movable within a grid point.
QPair< QString, QString > QStringPair
QList< ItemMountPoint > itemMountPoints() const
bool load(const QDir &folderDir)
QVector< QStringPair > metaInfos() const
QPair< QString, QPointF > ItemMountPoint
QVector< QStringPair > m_metaInfos
QList< ItemMountPoint > m_itemMountPoints
Item that can be mounted to a wall element.
ArenaElement * createInstance() const
QString humanReadableName() const
Returns the "Name" meta info field if it exists, otherwise name()