[Fix] Fixed KonoM's resource manager shit. typenames had not been declared.
This commit is contained in:
parent
c32aeda9ee
commit
48e08fa576
@ -9,7 +9,7 @@
|
|||||||
#include "../System/Debug.h"
|
#include "../System/Debug.h"
|
||||||
#include "../Sprite/Sprite.h"
|
#include "../Sprite/Sprite.h"
|
||||||
#include "../Texture/Texture.h"
|
#include "../Texture/Texture.h"
|
||||||
#include "../Level/Level.h"
|
//#include "../Level/Level.h"
|
||||||
#include "Game.h"
|
#include "Game.h"
|
||||||
|
|
||||||
Game::Game(void) {
|
Game::Game(void) {
|
||||||
|
@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
class Resource {
|
class Resource {
|
||||||
public:
|
public:
|
||||||
virtual bool Load(const std::string& filename) = 0;
|
virtual bool Load(const std::string& filename) = 0;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Resource() : refs(0) {}
|
Resource() : refs(0) {}
|
||||||
int refs;
|
int refs;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class T>
|
template<class T>
|
||||||
@ -18,24 +18,24 @@ class ResourceManager
|
|||||||
public:
|
public:
|
||||||
ResourceManager() { }
|
ResourceManager() { }
|
||||||
|
|
||||||
typedef std::map<std::string, typename T*> ResourceMap;
|
typedef std::map<std::string, T*> ResourceMap;
|
||||||
|
|
||||||
T* Load(const std::string& name) {
|
T* Load(const std::string& name) {
|
||||||
ResourceManager<T>::ResourceMap::iterator i = m_resources.find(name);
|
typename ResourceManager<T>::ResourceMap::iterator i = m_resources.find(name);
|
||||||
if(i == m_resources.end()) {
|
if(i == m_resources.end()) {
|
||||||
T* resource = new T();
|
T* resource = new T();
|
||||||
|
|
||||||
if(!resource->Load(name)) {
|
if(!resource->Load(name)) {
|
||||||
delete resource;
|
delete resource;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
resource->refs = 1;
|
resource->refs = 1;
|
||||||
|
|
||||||
m_resources.insert(std::pair<std::string, T*>(name, resource));
|
m_resources.insert(std::pair<std::string, T*>(name, resource));
|
||||||
|
|
||||||
return resource;
|
return resource;
|
||||||
}
|
}
|
||||||
|
|
||||||
i->second->refs++;
|
i->second->refs++;
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
T* Find(const std::string& name) {
|
T* Find(const std::string& name) {
|
||||||
ResourceManager<T>::ResourceMap::iterator i = m_resources.find(name);
|
typename ResourceManager<T>::ResourceMap::iterator i = m_resources.find(name);
|
||||||
if(i != m_resources.end()) {
|
if(i != m_resources.end()) {
|
||||||
return i->second;
|
return i->second;
|
||||||
}
|
}
|
||||||
@ -51,7 +51,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Add(const std::string& name, T* resource) {
|
void Add(const std::string& name, T* resource) {
|
||||||
ResourceManager<T>::ResourceMap::iterator i = m_resources.find(name);
|
typename ResourceManager<T>::ResourceMap::iterator i = m_resources.find(name);
|
||||||
if(i == m_resources.end()) {
|
if(i == m_resources.end()) {
|
||||||
resource->refs++;
|
resource->refs++;
|
||||||
m_resources.insert(std::pair<std::string, T*>(name, resource));
|
m_resources.insert(std::pair<std::string, T*>(name, resource));
|
||||||
@ -64,7 +64,7 @@ public:
|
|||||||
if(name.empty())
|
if(name.empty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ResourceManager<T>::ResourceMap::iterator i = m_resources.find(name);
|
typename ResourceManager<T>::ResourceMap::iterator i = m_resources.find(name);
|
||||||
if(i != m_resources.end()) {
|
if(i != m_resources.end()) {
|
||||||
T* resource = i->second;
|
T* resource = i->second;
|
||||||
|
|
||||||
@ -78,7 +78,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Destroy(T* resource) {
|
void Destroy(T* resource) {
|
||||||
ResourceManager<T>::ResourceMap::iterator i;
|
typename ResourceManager<T>::ResourceMap::iterator i;
|
||||||
for(i = m_resources.begin(); i != m_resources.end(); ++i) {
|
for(i = m_resources.begin(); i != m_resources.end(); ++i) {
|
||||||
if(i->second == resource){
|
if(i->second == resource){
|
||||||
resource->refs--;
|
resource->refs--;
|
||||||
|
Loading…
Reference in New Issue
Block a user