summaryrefslogtreecommitdiff
path: root/src/resources
diff options
context:
space:
mode:
Diffstat (limited to 'src/resources')
-rw-r--r--src/resources/image.cpp18
-rw-r--r--src/resources/image.h7
-rw-r--r--src/resources/music.cpp8
-rw-r--r--src/resources/music.h4
-rw-r--r--src/resources/resource.cpp10
-rw-r--r--src/resources/resource.h9
-rw-r--r--src/resources/resourcemanager.cpp7
-rw-r--r--src/resources/soundeffect.cpp8
-rw-r--r--src/resources/soundeffect.h5
9 files changed, 33 insertions, 43 deletions
diff --git a/src/resources/image.cpp b/src/resources/image.cpp
index 5ea45842..6910bd55 100644
--- a/src/resources/image.cpp
+++ b/src/resources/image.cpp
@@ -31,8 +31,8 @@
bool Image::useOpenGL = false;
#endif
-Image::Image(SDL_Surface *image):
- image(image)
+Image::Image(const std::string &idPath, SDL_Surface *image):
+ Resource(idPath), image(image)
{
// Default to opaque
alpha = 1.0f;
@@ -44,7 +44,9 @@ Image::Image(SDL_Surface *image):
}
#ifdef USE_OPENGL
-Image::Image(GLuint glimage, int width, int height, int texWidth, int texHeight):
+Image::Image(const std::string &idPath, GLuint glimage, int width, int height,
+ int texWidth, int texHeight):
+ Resource(idPath),
glimage(glimage),
texWidth(texWidth),
texHeight(texHeight)
@@ -64,7 +66,7 @@ Image::~Image()
unload();
}
-Image* Image::load(void* buffer, unsigned int bufferSize)
+Image* Image::load(void* buffer, unsigned int bufferSize, const std::string &idPath)
{
// Load the raw file data from the buffer in an RWops structure
SDL_RWops *rw = SDL_RWFromMem(buffer, bufferSize);
@@ -234,7 +236,7 @@ Image* Image::load(void* buffer, unsigned int bufferSize)
return NULL;
}
- return new Image(texture, width, height, realWidth, realHeight);
+ return new Image(idPath, texture, width, height, realWidth, realHeight);
}
#endif
@@ -254,7 +256,7 @@ Image* Image::load(void* buffer, unsigned int bufferSize)
return NULL;
}
- return new Image(image);
+ return new Image(idPath, image);
}
void Image::unload()
@@ -330,7 +332,7 @@ void Image::setLoadAsOpenGL(bool useOpenGL)
SubImage::SubImage(Image *parent, SDL_Surface *image,
int x, int y, int width, int height):
- Image(image), parent(parent)
+ Image("", image), parent(parent)
{
parent->incRef();
@@ -344,7 +346,7 @@ SubImage::SubImage(Image *parent, SDL_Surface *image,
#ifdef USE_OPENGL
SubImage::SubImage(Image *parent, GLuint image,
int x, int y, int width, int height, int texWidth, int texHeight):
- Image(image, width, height, texWidth, texHeight), parent(parent)
+ Image("", image, width, height, texWidth, texHeight), parent(parent)
{
parent->incRef();
diff --git a/src/resources/image.h b/src/resources/image.h
index a4a65787..6fc4e89a 100644
--- a/src/resources/image.h
+++ b/src/resources/image.h
@@ -58,7 +58,7 @@ class Image : public Resource
* otherwise.
*/
static Image*
- load(void* buffer, unsigned int bufferSize);
+ load(void* buffer, unsigned int bufferSize, const std::string &idPath);
/**
* Frees the resources created by SDL.
@@ -113,9 +113,10 @@ class Image : public Resource
* Constructor.
*/
#ifdef USE_OPENGL
- Image(GLuint glimage, int width, int height, int texWidth, int texHeight);
+ Image(const std::string &idPath, GLuint glimage, int width, int height,
+ int texWidth, int texHeight);
#endif
- Image(SDL_Surface *image);
+ Image(const std::string &idPath, SDL_Surface *image);
SDL_Rect bounds;
bool loaded;
diff --git a/src/resources/music.cpp b/src/resources/music.cpp
index 9cc848ad..ba9f6df7 100644
--- a/src/resources/music.cpp
+++ b/src/resources/music.cpp
@@ -23,8 +23,8 @@
#include "music.h"
-Music::Music(Mix_Chunk *music):
- music(music)
+Music::Music(const std::string &idPath, Mix_Chunk *music):
+ Resource(idPath), music(music)
{
channel = -1;
}
@@ -36,7 +36,7 @@ Music::~Music()
music = NULL;
}
-Music* Music::load(void* buffer, unsigned int bufferSize)
+Music* Music::load(void* buffer, unsigned int bufferSize, const std::string &idPath)
{
// Load the raw file data from the buffer in an RWops structure
SDL_RWops *rw = SDL_RWFromMem(buffer, bufferSize);
@@ -48,7 +48,7 @@ Music* Music::load(void* buffer, unsigned int bufferSize)
// Now free the SDL_RWops data
SDL_FreeRW(rw);
- return new Music(tmpMusic);
+ return new Music(idPath, tmpMusic);
}
bool Music::play(int loops)
diff --git a/src/resources/music.h b/src/resources/music.h
index b8d493e2..4858eb86 100644
--- a/src/resources/music.h
+++ b/src/resources/music.h
@@ -48,7 +48,7 @@ class Music : public Resource
* @return <code>NULL</code> if the an error occurred, a valid pointer
* otherwise.
*/
- static Music *load(void* buffer, unsigned int bufferSize);
+ static Music *load(void* buffer, unsigned int bufferSize, const std::string &idPath);
/**
* Plays the music.
@@ -72,7 +72,7 @@ class Music : public Resource
/**
* Constructor.
*/
- Music(Mix_Chunk *music);
+ Music(const std::string &idPath, Mix_Chunk *music);
//Mix_Music *music;
Mix_Chunk *music;
diff --git a/src/resources/resource.cpp b/src/resources/resource.cpp
index e13ec359..5c1df52d 100644
--- a/src/resources/resource.cpp
+++ b/src/resources/resource.cpp
@@ -28,8 +28,8 @@
#include "resourcemanager.h"
-Resource::Resource():
- mRefCount(0)
+Resource::Resource(const std::string &idPath):
+ mRefCount(0), mIdPath(idPath)
{
}
@@ -38,12 +38,6 @@ Resource::~Resource()
}
void
-Resource::setIdPath(const std::string &idPath)
-{
- mIdPath = idPath;
-}
-
-void
Resource::incRef()
{
mRefCount++;
diff --git a/src/resources/resource.h b/src/resources/resource.h
index 09c12c90..ce3a62fb 100644
--- a/src/resources/resource.h
+++ b/src/resources/resource.h
@@ -35,14 +35,7 @@ class Resource
/**
* Constructor
*/
- Resource();
-
- /**
- * Sets the id path of this resource. This path is used to notify the
- * resource manager when this resource is deleted.
- */
- void
- setIdPath(const std::string &idPath);
+ Resource(const std::string &idPath);
/**
* Increments the internal reference count.
diff --git a/src/resources/resourcemanager.cpp b/src/resources/resourcemanager.cpp
index b443c715..3567ac35 100644
--- a/src/resources/resourcemanager.cpp
+++ b/src/resources/resourcemanager.cpp
@@ -150,19 +150,19 @@ ResourceManager::get(const E_RESOURCE_TYPE &type, const std::string &idPath)
case MUSIC:
{
// Let the music class load it
- resource = Music::load(buffer, fileSize);
+ resource = Music::load(buffer, fileSize, idPath);
}
break;
case IMAGE:
{
// Let the image class load it
- resource = Image::load(buffer, fileSize);
+ resource = Image::load(buffer, fileSize, idPath);
}
break;
case SOUND_EFFECT:
{
// Let the sound effect class load it
- resource = SoundEffect::load(buffer, fileSize);
+ resource = SoundEffect::load(buffer, fileSize, idPath);
}
break;
default:
@@ -174,7 +174,6 @@ ResourceManager::get(const E_RESOURCE_TYPE &type, const std::string &idPath)
if (resource) {
resource->incRef();
- resource->setIdPath(idPath);
resources[idPath] = resource;
}
diff --git a/src/resources/soundeffect.cpp b/src/resources/soundeffect.cpp
index 30d405d3..7c77d5b7 100644
--- a/src/resources/soundeffect.cpp
+++ b/src/resources/soundeffect.cpp
@@ -23,8 +23,8 @@
#include "soundeffect.h"
-SoundEffect::SoundEffect(Mix_Chunk *soundEffect):
- soundEffect(soundEffect)
+SoundEffect::SoundEffect(const std::string &idPath, Mix_Chunk *soundEffect):
+ Resource(idPath), soundEffect(soundEffect)
{
}
@@ -34,7 +34,7 @@ SoundEffect::~SoundEffect()
soundEffect = NULL;
}
-SoundEffect* SoundEffect::load(void* buffer, unsigned int bufferSize)
+SoundEffect* SoundEffect::load(void* buffer, unsigned int bufferSize, const std::string &idPath)
{
// Load the raw file data from the buffer in an RWops structure
SDL_RWops *rw = SDL_RWFromMem(buffer, bufferSize);
@@ -45,7 +45,7 @@ SoundEffect* SoundEffect::load(void* buffer, unsigned int bufferSize)
// Now free the SDL_RWops data
SDL_FreeRW(rw);
- return new SoundEffect(tmpSoundEffect);
+ return new SoundEffect(idPath, tmpSoundEffect);
}
bool SoundEffect::play(int loops, int volume)
diff --git a/src/resources/soundeffect.h b/src/resources/soundeffect.h
index 69d9823d..bd1c3c00 100644
--- a/src/resources/soundeffect.h
+++ b/src/resources/soundeffect.h
@@ -48,7 +48,8 @@ class SoundEffect : public Resource
* @return <code>NULL</code> if the an error occurred, a valid pointer
* otherwise.
*/
- static SoundEffect *load(void* buffer, unsigned int bufferSize);
+ static SoundEffect *load(void* buffer, unsigned int bufferSize,
+ const std::string &idPath);
/**
* Plays the sample.
@@ -65,7 +66,7 @@ class SoundEffect : public Resource
/**
* Constructor.
*/
- SoundEffect(Mix_Chunk *soundEffect);
+ SoundEffect(const std::string &idPath, Mix_Chunk *soundEffect);
Mix_Chunk *soundEffect;
};