[Fix] ResourceManager stuff.

This commit is contained in:
Tamir Atias 2012-04-12 02:04:56 +03:00
parent 0cad1e8128
commit c32aeda9ee
3 changed files with 21 additions and 9 deletions

View File

@ -90,7 +90,9 @@
<ClInclude Include="..\..\src\glx\glext.h" /> <ClInclude Include="..\..\src\glx\glext.h" />
<ClInclude Include="..\..\src\glx\wglext.h" /> <ClInclude Include="..\..\src\glx\wglext.h" />
<ClInclude Include="..\..\src\IO\Input.h" /> <ClInclude Include="..\..\src\IO\Input.h" />
<ClInclude Include="..\..\src\Level\Layer.h" />
<ClInclude Include="..\..\src\Level\Level.h" /> <ClInclude Include="..\..\src\Level\Level.h" />
<ClInclude Include="..\..\src\Level\MapTile.h" />
<ClInclude Include="..\..\src\Main\Game.h" /> <ClInclude Include="..\..\src\Main\Game.h" />
<ClInclude Include="..\..\src\Main\GLWindow.h" /> <ClInclude Include="..\..\src\Main\GLWindow.h" />
<ClInclude Include="..\..\src\Math\FPS.h" /> <ClInclude Include="..\..\src\Math\FPS.h" />
@ -123,6 +125,7 @@
<ClCompile Include="..\..\src\Collision\AABB.cpp" /> <ClCompile Include="..\..\src\Collision\AABB.cpp" />
<ClCompile Include="..\..\src\Global\Globals.cpp" /> <ClCompile Include="..\..\src\Global\Globals.cpp" />
<ClCompile Include="..\..\src\IO\Input.cpp" /> <ClCompile Include="..\..\src\IO\Input.cpp" />
<ClCompile Include="..\..\src\Level\Layer.cpp" />
<ClCompile Include="..\..\src\Level\Level.cpp" /> <ClCompile Include="..\..\src\Level\Level.cpp" />
<ClCompile Include="..\..\src\Main\Game.cpp" /> <ClCompile Include="..\..\src\Main\Game.cpp" />
<ClCompile Include="..\..\src\Main\GLWindow.cpp" /> <ClCompile Include="..\..\src\Main\GLWindow.cpp" />

View File

@ -132,15 +132,21 @@
<ClInclude Include="..\..\src\TMXParser\TmxObject.h"> <ClInclude Include="..\..\src\TMXParser\TmxObject.h">
<Filter>TMXParser</Filter> <Filter>TMXParser</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\src\System\ResourceManager.h">
<Filter>System</Filter>
</ClInclude>
<ClInclude Include="..\..\src\Level\Level.h"> <ClInclude Include="..\..\src\Level\Level.h">
<Filter>Level</Filter> <Filter>Level</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\src\Collision\AABB.h"> <ClInclude Include="..\..\src\Collision\AABB.h">
<Filter>Collision</Filter> <Filter>Collision</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\src\Level\Layer.h">
<Filter>Level</Filter>
</ClInclude>
<ClInclude Include="..\..\src\Level\MapTile.h">
<Filter>Level</Filter>
</ClInclude>
<ClInclude Include="..\..\src\System\ResourceManager.h">
<Filter>System</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\src\Main\main.cpp"> <ClCompile Include="..\..\src\Main\main.cpp">
@ -221,5 +227,8 @@
<ClCompile Include="..\..\src\Collision\AABB.cpp"> <ClCompile Include="..\..\src\Collision\AABB.cpp">
<Filter>Collision</Filter> <Filter>Collision</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\Level\Layer.cpp">
<Filter>Level</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -18,10 +18,10 @@ class ResourceManager
public: public:
ResourceManager() { } ResourceManager() { }
typedef std::map<std::string, T*> ResourceMap; typedef std::map<std::string, typename T*> ResourceMap;
T* Load(const std::string& name) { T* Load(const std::string& name) {
ResourceMap::iterator i = m_resources.find(name); 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();
@ -43,7 +43,7 @@ public:
} }
T* Find(const std::string& name) { T* Find(const std::string& name) {
ResourceMap::iterator i = m_resources.find(name); 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) {
ResourceMap::iterator i = m_resources.find(name); 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;
ResourceMap::iterator i = m_resources.find(name); 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) {
ResourceMap::iterator i; 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--;