src/ResourceManager/ResourceManager.h

Go to the documentation of this file.
00001 /* Crown and Cutlass
00002  * Resource Manager Header
00003  */
00004 
00005 #if !defined ( _RESOURCEMANAGER_H_ )
00006 #define _RESOURCEMANAGER_H_
00007 
00008 #include <string>
00009 #include <map>
00010 #include <vector>
00011 
00012 class IResource;
00013 class IResourceFactory;
00014 
00015 struct ResourceEntry;
00016 typedef std::map< std::string, ResourceEntry* > ResourceMap;
00017 typedef std::vector< ResourceEntry* > ResourceEntryVector;
00018 typedef std::map< std::string, ResourceEntryVector > ResourceTypeMap;
00019 
00020 class ResourceManager {
00021  public:
00022   ResourceManager();
00023   ~ResourceManager();
00024 
00025   // Actual resource handling routines
00026   // Acquire a resource, loading it if necessary
00027   IResource* Acquire(std::string key);
00028   // Acquire a random resource of the specified type, only really useful for ships at the moment
00029   IResource* AcquireRandom(std::string type);
00030   // Release a resource, unloading it if necessary
00031   void Release(IResource *resource);
00032 
00033   void LoadXMLFile(std::string filename, std::auto_ptr<IResourceFactory> factory);
00034 
00035   void LogDebugInfo();
00036 
00037   static ResourceManager *s_resourceManager;
00038   static void Initialize();
00039   static void Shutdown();
00040 
00041  private:
00042   ResourceMap m_resources;
00043   ResourceTypeMap m_typeVectors;
00044 
00045   IResource* DoAcquireResource(ResourceEntry *entry);
00046 };
00047 
00048 #endif

Generated on Mon Jan 8 22:34:12 2007 for CrownandCutlass by  doxygen 1.4.7