blob: ce4d5dc83e2928b7c550a0a580af97d01e407266 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
#include "resource_manager.h"
#include "constants.h"
#include "resource.h"
#include "resource_fabricator.h"
#include <SDL2/SDL_image.h>
#include <unordered_map>
ResourceManager::ResourceManager(){
IMG_Init(IMG_INIT_PNG);
}
ResourceManager::~ResourceManager(){
for(auto pair : m_resources){
delete pair.second;
}
m_resources.clear();
IMG_Quit();
}
Resource* ResourceManager::Load(const Constants::FILE_PATH& file_path){
if(m_resources.find(file_path) != m_resources.end( )){
return m_resources[file_path];
}
Resource* res = ResourceFactory::create_resource(file_path);
if(res){
m_resources[file_path] = std::move(res);
}
return m_resources[file_path];
}
void ResourceManager::Unload(const Constants::FILE_PATH& file_path){
std::unordered_map<Constants::FILE_PATH, Resource* >::iterator itr = m_resources.find(file_path);
if(itr != m_resources.end()){
delete itr->second;
m_resources.erase(itr);
}
}
|