/* * Level.h * * Copyright (C) 2008 Matthias Schiffer * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ #ifndef ZOOMEDIT_DATA_LEVEL_H_ #define ZOOMEDIT_DATA_LEVEL_H_ #include "Info.h" #include namespace ZoomEdit { namespace Data { class Room; class Gate; class Texture; class Level { private: Info info; std::list rooms; xmlpp::Element *roomsNode; std::list gates; xmlpp::Element *gatesNode; std::list textures; xmlpp::Element *texturesNode; // Prevent shallow copy Level(const Level &o); Level& operator=(const Level &o); public: Level(xmlpp::Element *levelNode); virtual ~Level(); const std::list& getRooms() const {return rooms;} Room* getRoom(const Glib::ustring &id) const; Room* addRoom(const Glib::ustring &id); void removeRoom(Room *room); const std::list& getGates() const {return gates;} Gate* addGate(); void removeGate(Gate *gate); const std::list& getTextures() const {return textures;} Texture* getTexture(const Glib::ustring &id) const; Texture* addTexture(const Glib::ustring &id); void removeTexture(Texture *tex); }; } } #endif /*ZOOMEDIT_DATA_LEVEL_H_*/