aboutsummaryrefslogtreecommitdiff
path: root/engines/illusions/resourcesystem.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/illusions/resourcesystem.h')
-rw-r--r--engines/illusions/resourcesystem.h18
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);