Changeset 9790 in orxonox.OLD for branches/new_class_id/src/lib/util/loading/new_resource_manager.h
- Timestamp:
- Sep 23, 2006, 10:34:42 AM (18 years ago)
- File:
-
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/new_class_id/src/lib/util/loading/new_resource_manager.h
r9789 r9790 1 1 /*! 2 * @file resource_manager.h3 * The Resource Manager checks if a file/resource is loaded.2 * @file new_resource_manager.h 3 */ 4 4 5 If a file/resource was already loaded the resourceManager will 6 return a void pointer to the desired resource. 7 Otherwise it will instruct the coresponding resource-loader to load, 8 and receive a pointer to it. 5 #ifndef _NEW_RESOURCE_MANAGER_H 6 #define _NEW_RESOURCE_MANAGER_H 9 7 10 it is possible to compile the resource Manager without some modules by 11 just adding the compile flag -D.... 12 (NO_MODEL) 13 (NO_AUDIO) 14 (NO_TEXT) 15 (NO_TEXTURES) 16 (NO_SHADERS) 17 */ 8 #include "resource.h" 9 #include "filesys/file.h" 10 #include "filesys/directory.h" 18 11 19 #ifndef _RESOURCE_MANAGER_H 20 #define _RESOURCE_MANAGER_H 21 22 #include "base_object.h" 23 #include "filesys/file.h" 24 25 #include "multi_type.h" 26 #include <vector> 27 28 //! An eumerator for different fileTypes the resourceManager supports 29 typedef enum ResourceType 12 class NewResourceManager : public BaseObject 30 13 { 31 #ifndef NO_MODEL 32 OBJ, //!< loading .obj file 33 PRIM, //!< loading primitive model 34 MD2, //!< loading md2-file 35 MD3, //!< loading md3-file 36 MD3_CONFIG, //!< the md3 config file 37 #endif /* NO_MODEL */ 38 #ifndef NO_TEXT 39 TTF, //!< loading a TrueTypeFont 40 #endif /* NO_TEXT */ 41 #ifndef NO_AUDIO 42 WAV, //!< loading wav 43 MP3, //!< loading mp3 44 OGG, //!< loading ogg 45 #endif /* NO_AUDIO */ 46 #ifndef NO_TEXTURES 47 IMAGE, //!< loading an image 48 #endif /* NO_TEXTURES */ 49 #ifndef NO_SHADERS 50 SHADER, //!< openGL-shader program 51 #endif /* NO_SHADERS */ 52 RESOURCE_TYPE_SIZE 53 }; 54 55 //! An enumerator for different UNLOAD-types. 56 /** 57 RP_NO: will be unloaded on request 58 RP_LEVEL: will be unloaded at the end of a Level 59 RP_CAMPAIGN: will be unloaded at the end of a Campaign 60 RP_GAME: will be unloaded at the end of the whole Game (when closing orxonox) 61 */ 62 typedef enum ResourcePriority 63 { 64 RP_NO = 0, 65 RP_LEVEL = 1, 66 RP_CAMPAIGN = 2, 67 RP_GAME = 4 68 }; 69 70 //! A Struct that keeps track about a resource its name its Type, and so on 71 struct Resource 72 { 73 BaseObject* pointer; //!< Pointer to the Resource. 74 unsigned int count; //!< How many times this Resource has been loaded. 75 76 std::string name; //!< Name of the Resource. 77 ResourceType type; //!< ResourceType of this Resource. 78 ResourcePriority prio; //!< The Priority of this resource. (This will only be increased) 79 80 MultiType param[3]; //!< The Parameters given to this Resource. 81 }; 82 83 84 //! The ResourceManager is a class, that decides if a file/resource should be loaded 85 /** 86 * If a file/resource was already loaded the resourceManager will 87 * return a pointer to the desired resource. 88 * Otherwise it will instruct the corresponding resource-loader to load, 89 * and receive the pointer to it. 90 * 91 * It does it by looking, if a desired file has already been loaded. 92 * There is also the possibility to check for some variables 93 */ 94 class ResourceManager : public BaseObject 95 { 96 ObjectListDeclaration(ResourceManager); 14 ObjectListDeclaration(NewResourceManager); 97 15 public: 98 virtual ~ ResourceManager();16 virtual ~NewResourceManager(); 99 17 /** @returns a Pointer to the only object of this Class */ 100 inline static ResourceManager* getInstance() { if (!singletonRef) singletonRef = new ResourceManager(); return singletonRef; }; 101 102 bool setDataDir(const std::string& dataDir); 103 /** @returns the Name of the data directory */ 104 inline const std::string& getDataDir() const { return this->dataDir; }; 105 18 inline static NewResourceManager* getInstance() { if (!singletonRef) singletonRef = new NewResourceManager(); return singletonRef; }; 106 19 107 20 bool tryDataDir(const std::string& dataDir); 108 21 bool verifyDataDir(const std::string& fileInside); 109 bool addImageDir(const std::string& imageDir);110 22 111 bool cache(const std::string& fileName, ResourceType type, ResourcePriority prio = RP_NO, 112 const MultiType& param0 = MultiType(), const MultiType& param1 = MultiType(), const MultiType& param2 = MultiType()); 113 BaseObject* copy(BaseObject* resourcePointer); 114 115 BaseObject* load(const std::string& fileName, ResourcePriority prio = RP_NO, 116 const MultiType& param0 = MultiType(), const MultiType& param1 = MultiType(), const MultiType& param2 = MultiType()); 117 BaseObject* load(const std::string& fileName, ResourceType type, ResourcePriority prio = RP_NO, 118 const MultiType& param0 = MultiType(), const MultiType& param1 = MultiType(), const MultiType& param2 = MultiType()); 119 bool unload(BaseObject* pointer, ResourcePriority prio = RP_NO); 120 bool unload(Resource* resource, ResourcePriority = RP_NO); 121 bool unloadAllByPriority(ResourcePriority prio); 122 123 Resource* locateResourceByInfo(const std::string& fileName, ResourceType type, 124 const MultiType& param0 = MultiType(), const MultiType& param1 = MultiType(), const MultiType& param2 = MultiType()) const; 125 Resource* locateResourceByPointer(const void* pointer) const; 126 127 std::string toResourcableString(unsigned int i); 128 bool fromResourceableString(const std::string& resourceableString); 129 /** @returns the Count of Resources the ResourceManager handles */ 130 unsigned int resourceCount() const { return this->resourceList.size(); } 23 bool unloadAllByPriority(); 131 24 132 25 void debug() const; 133 134 26 135 27 // utility functions for handling files in and around the data-directory … … 137 29 static bool isInDataDir(const std::string& fileName); 138 30 139 static const char* ResourceTypeToChar(ResourceType type); 140 static ResourceType stringToResourceType(const std::string& resourceType);31 private: 32 NewResourceManager(); 141 33 142 34 private: 143 ResourceManager(); 144 Resource* loadResource(const std::string& fileName, ResourceType type, ResourcePriority prio, 145 const MultiType& param0, const MultiType& param1, const MultiType& param2); 35 static NewResourceManager* singletonRef; //!< singleton Reference 146 36 147 private:148 static ResourceManager* singletonRef; //!< singleton Reference149 150 std::string dataDir; //!< The Data Directory, where all relevant Data is stored.151 std::vector<std::string> imageDirs; //!< A list of directories in which images are stored.152 153 std::vector<Resource*> resourceList; //!< The List of Resources, that has already been loaded.154 155 static const char* resourceNames[RESOURCE_TYPE_SIZE];156 37 }; 157 38
Note: See TracChangeset
for help on using the changeset viewer.