/*! * @file resource.h * @brief Definition of a Resource. */ #ifndef _RESOURCE_H #define _RESOURCE_H #include "base_object.h" #include "multi_type.h" #include #include #include //! A Resource is an Object, that can be loaded from Disk /** * */ class Resource : virtual public BaseObject { ObjectListDeclaration(Resource); public: class KeepLevel { public: void setKeepLevelName(unsigned int level, const std::string& name) { if (_keepLevelName.size() <= level) _keepLevelName.resize(level+1); _keepLevelName[level] = name; } private: std::vector _keepLevelName; }; class Type { public: Type(const ClassID& classID) : _classID(classID) { }; void addExtension(const std::string& extension); private: const ClassID& _classID; std::vector _resourcePaths; std::vector _resourceSubPaths; std::vector _fileExtensions; }; public: Resource(const std::string& fileName); virtual ~Resource(); virtual bool load(std::string& fileName, const MultiType& param1, const MultiType& param2); virtual bool reload(); virtual bool unload(); private: std::string _fileName; MultiType _parameters[3]; //!< The Parameters given to this Resource. Resource::KeepLevel _keepLevel; //!< The Priority of this resource. (can only be increased, so noone else will delete this) static std::vector _resourceTypes; //! GLOBALS static std::string _mainGlobalPath; static std::vector _globalPaths; }; #endif /* _RESOURCE_H */