diff options
Diffstat (limited to 'engines/illusions/resourcesystem.h')
-rw-r--r-- | engines/illusions/resourcesystem.h | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/engines/illusions/resourcesystem.h b/engines/illusions/resourcesystem.h index 833a7db112..0a214c5a2a 100644 --- a/engines/illusions/resourcesystem.h +++ b/engines/illusions/resourcesystem.h @@ -36,6 +36,7 @@ namespace Illusions { #define ResourceTypeId(x) ((x) & 0xFFFF0000) class BaseResourceLoader; +class IllusionsEngine; struct Resource { bool _loaded; @@ -46,7 +47,8 @@ struct Resource { uint32 _dataSize; BaseResourceLoader *_resourceLoader; void *_refId; - Common::String _filename; // TODO Check if this is needed + int _gameId; + Common::String _filename; Resource() : _loaded(false), _resId(0), _tag(0), _threadId(0), _data(0), _dataSize(0), _resourceLoader(0), _refId(0) {} ~Resource() { @@ -80,7 +82,7 @@ public: class ResourceSystem { public: - ResourceSystem(); + ResourceSystem(IllusionsEngine *vm); ~ResourceSystem(); void addResourceLoader(uint32 resTypeId, BaseResourceLoader *resourceLoader); @@ -89,10 +91,12 @@ public: void loadResource(uint32 resId, uint32 tag, uint32 threadId); void unloadResourceById(uint32 resId); void unloadResourcesByTag(uint32 tag); - + void unloadSceneResources(uint32 sceneId1, uint32 sceneId2); + protected: typedef Common::HashMap<uint32, BaseResourceLoader*> ResourceLoadersMap; typedef ResourceLoadersMap::iterator ResourceLoadersMapIterator; + IllusionsEngine *_vm; ResourceLoadersMap _resourceLoaders; BaseResourceLoader *getResourceLoader(uint32 resId); @@ -124,6 +128,14 @@ protected: } }; + struct ResourceNotEqualByScenes : public Common::UnaryFunction<const Resource*, bool> { + uint32 _sceneId1, _sceneId2; + ResourceNotEqualByScenes(uint32 sceneId1, uint32 sceneId2) : _sceneId1(sceneId1), _sceneId2(sceneId2) {} + bool operator()(const Resource *resource) const { + return resource->_tag != _sceneId1 && resource->_tag != _sceneId2; + } + }; + Resource *getResource(uint32 resId); void unloadResource(Resource *resource); |