arenaelementtyperegistry.cpp
Go to the documentation of this file.
2 
3 #include "arenaelementtype.h"
4 #include "arenaelement.h"
5 #include "xmlloadingexception.h"
6 
7 #include "../global.h"
8 
9 #include <QDebug>
10 #include <QDir>
11 
13 {
14  load(dir);
15 }
16 
17 QList<ArenaElementType*> ArenaElementTypeRegistry::elementTypes()
18 {
19  return m_elementTypes.values();
20 }
21 
23 {
24  return m_elementTypes[typeName];
25 }
26 
27 bool ArenaElementTypeRegistry::hasElement(const QString &typeName)
28 {
29  return m_elementTypes.contains(typeName);
30 }
31 
33 {
34  ArenaElementType *type = elementType(typeName);
35  if (!type)
36  return 0;
37  ArenaElement *element = type->createInstance();
38  return element;
39 }
40 
41 void ArenaElementTypeRegistry::load(const QString &dir)
42 {
43  QDir topDir(dir);
44  QStringList entries = topDir.entryList(QDir::Dirs);
45  //qDebug() << "[Rescue Arena Designer] ArenaElementTypeRegistry: Loading elements.";
46  foreach (QString entry, entries)
47  {
48  //qDebug() << "[Rescue Arena Designer] ArenaElementTypeRegistry: Checking elements/" + entry;
49  // These aren't really folders...
50  if (entry == "." || entry == "..")
51  continue;
52 
53  QDir entryDir(topDir.path() + "/" + entry);
54  if (entryDir.exists("properties.xml"))
55  {
56  //qDebug() << "[Rescue Arena Designer] ArenaElementTypeRegistry: properties.xml exists. Loading element.";
59  if (t->load(entryDir))
60  m_elementTypes[t->name()] = t;
61  else
62  delete t;
63  }
64  }
65 }
QMap< QString, ArenaElementType * > m_elementTypes
bool load(const QDir &folderDir)
ArenaElementType * elementType(const QString &typeName)
ArenaElementTypeRegistry(const QString &dir)
void load(const QString &dir)
QList< ArenaElementType * > elementTypes()
ArenaElement * instantiateElement(const QString &typeName)
bool hasElement(const QString &typeName)
ArenaElement * createInstance() const
QString name() const


hector_nist_arena_designer
Author(s): Stefan Kohlbrecher , Johannes Simon
autogenerated on Fri Aug 21 2020 10:45:27