Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/orxonox/trunk/src/util/resource_manager.h @ 4010

Last change on this file since 4010 was 3983, checked in by bensch, 20 years ago

orxonox/trunk: resource now also gets loaded if the data-directory is not where it is supposed to be… this will be better in the future (i hope)

File size: 3.3 KB
RevLine 
[3245]1/*!
[3655]2    \file resource_manager.h
3    \brief The Resource Manager checks if a file/resource is loaded.
[3329]4
[3655]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.
[3245]9*/
[1853]10
[3655]11#ifndef _RESOURCE_MANAGER_H
12#define _RESOURCE_MANAGER_H
[1853]13
[3543]14#include "base_object.h"
[1853]15
[3911]16// FORWARD DEFINITION
17template<class T> class tList;
[3660]18
19//! An eumerator for different fileTypes the resourceManager supports \todo WAV, MP3, OGG support
[3790]20enum ResourceType {OBJ, PRIM, WAV, MP3, OGG, TTF, IMAGE};
[3660]21//! An enumerator for different UNLOAD-types.
22/**
23   RP_NO: will be unloaded on request
24   RP_LEVEL: will be unloaded at the end of a Level
25   RP_CAMPAIGN: will be unloaded at the end of a Campaign
26   RP_GAME: will be unloaded at the end of the whole Game (when closing orxonox)
27*/
28enum ResourcePriority {RP_NO = 0, RP_LEVEL = 1, RP_CAMPAIGN = 2, RP_GAME = 3};
[3543]29
[3660]30//! A Struct that keeps track about A resource its name its Type, and so on
[3658]31struct Resource
32{
33  void* pointer;             //!< Pointer to the Resource.
[3790]34  int count;                 //!< How many times this Resource has been loaded.
[3658]35 
36  char* name;                //!< Name of the Resource.
37  ResourceType type;         //!< ResourceType of this Resource.
[3660]38  ResourcePriority prio;     //!< The Priority of this resource. (This will only be increased)
[3790]39
40  // more specific
41  float modelSize;
42  unsigned int ttfSize;
43  unsigned char ttfColorR;
44  unsigned char ttfColorG;
45  unsigned char ttfColorB;
[3658]46};
[3543]47
[2036]48
[3655]49//! The ResourceManager is a class, that decides if a file/resource should be loaded
[3329]50/**
[3655]51   If a file/resource was already loaded the resourceManager will
52   return a void pointer to the desired resource.
53   Otherwise it will instruct the corresponding resource-loader to load,
54   and receive the pointer to it.
55
56   It does it by looking, if a desired file has already been loaded.
[3790]57
58   \todo loading also dependant by parameters.
[3329]59*/
[3655]60class ResourceManager : public BaseObject
61{
[1904]62 public:
[3655]63  static ResourceManager* getInstance();
64  virtual ~ResourceManager();
[1853]65
[3883]66  bool setDataDir(const char* dataDir);
[3672]67  bool addImageDir(char* imageDir);
[3790]68  void* load(const char* fileName, ResourcePriority prio = RP_NO,
69             void* param1 = NULL, void* param2 = NULL, void* param3 = NULL);
70  void* load(const char* fileName, ResourceType type, ResourcePriority prio = RP_NO,
71             void* param1 = NULL, void* param2 = NULL, void* param3 = NULL);
[3672]72  bool unload(void* pointer, ResourcePriority prio = RP_NO);
73  bool unload(Resource* resource, ResourcePriority = RP_NO);
74  bool unloadAllByPriority(ResourcePriority prio);
[3983]75
[3676]76  void debug(void);
[3245]77
[3983]78  // utility functions of this class
79  static bool isDir(const char* directory);
80  static bool isFile(const char* directory);
81
[3245]82 private:
[3655]83  ResourceManager();
84  static ResourceManager* singletonRef;
[3245]85
[3672]86  tList<Resource>* resourceList;       //!< The List of Resources, that has already been loaded.
87  char* dataDir;                       //!< The Data Directory, where all relevant Data is stored.
88  tList<char>* imageDirs;              //!< A list of directories in which images are stored.
[3655]89
[3672]90
[3790]91  Resource* locateResourceByInfo(const char* fileName, ResourceType type, void* param1, void* param2, void* param3);
[3672]92  Resource* locateResourceByPointer(const void* pointer);
[3658]93 
[1853]94};
95
[3655]96#endif /* _RESOURCE_MANAGER_H */
Note: See TracBrowser for help on using the repository browser.