summaryrefslogtreecommitdiffstats
path: root/src/Data/Level.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Data/Level.h')
-rw-r--r--src/Data/Level.h31
1 files changed, 28 insertions, 3 deletions
diff --git a/src/Data/Level.h b/src/Data/Level.h
index ab660a2..c72b503 100644
--- a/src/Data/Level.h
+++ b/src/Data/Level.h
@@ -25,6 +25,7 @@
#include "Gate.h"
#include "Texture.h"
#include <list>
+#include <map>
namespace ZoomEdit {
namespace Data {
@@ -33,17 +34,41 @@ class Level {
private:
Info info;
- std::list<Room> rooms;
+ std::map<Glib::ustring,Room> rooms;
xmlpp::Element *roomsNode;
- std::list<Gate> gates;
+ std::map<Glib::ustring,Gate> gates;
xmlpp::Element *gatesNode;
- std::list<Texture> textures;
+ std::map<Glib::ustring,Texture> textures;
xmlpp::Element *texturesNode;
public:
Level(xmlpp::Element *levelNode);
+
+ const std::map<Glib::ustring,Room>& getRooms() const {return rooms;}
+
+ Room* getRoom(const Glib::ustring &id);
+ const Room* getRoom(const Glib::ustring &id) const;
+
+ Room* addRoom(const Glib::ustring &id);
+ void removeRoom(const Glib::ustring &id);
+
+ const std::map<Glib::ustring,Gate>& getGates() const {return gates;}
+
+ Gate* getGate(const Glib::ustring &id);
+ const Gate* getGate(const Glib::ustring &id) const;
+
+ Gate* addGate(const Glib::ustring &id);
+ void removeGate(const Glib::ustring &id);
+
+ const std::map<Glib::ustring,Texture>& getTextures() const {return textures;}
+
+ Texture* getTexture(const Glib::ustring &id);
+ const Texture* getTexture(const Glib::ustring &id) const;
+
+ Texture* addTexture(const Glib::ustring &id);
+ void removeTexture(const Glib::ustring &id);
};
}