From c32aeda9ee076fa14c27918d7f11502e12ad4385 Mon Sep 17 00:00:00 2001
From: Tamir Atias <engine.games@gmail.com>
Date: Thu, 12 Apr 2012 02:04:56 +0300
Subject: [PATCH] [Fix] ResourceManager stuff.

---
 Bin/VC10/VC10.vcxproj         |  3 +++
 Bin/VC10/VC10.vcxproj.filters | 15 ++++++++++++---
 src/System/ResourceManager.h  | 12 ++++++------
 3 files changed, 21 insertions(+), 9 deletions(-)

diff --git a/Bin/VC10/VC10.vcxproj b/Bin/VC10/VC10.vcxproj
index ce2ca4d..4046f56 100644
--- a/Bin/VC10/VC10.vcxproj
+++ b/Bin/VC10/VC10.vcxproj
@@ -90,7 +90,9 @@
     <ClInclude Include="..\..\src\glx\glext.h" />
     <ClInclude Include="..\..\src\glx\wglext.h" />
     <ClInclude Include="..\..\src\IO\Input.h" />
+    <ClInclude Include="..\..\src\Level\Layer.h" />
     <ClInclude Include="..\..\src\Level\Level.h" />
+    <ClInclude Include="..\..\src\Level\MapTile.h" />
     <ClInclude Include="..\..\src\Main\Game.h" />
     <ClInclude Include="..\..\src\Main\GLWindow.h" />
     <ClInclude Include="..\..\src\Math\FPS.h" />
@@ -123,6 +125,7 @@
     <ClCompile Include="..\..\src\Collision\AABB.cpp" />
     <ClCompile Include="..\..\src\Global\Globals.cpp" />
     <ClCompile Include="..\..\src\IO\Input.cpp" />
+    <ClCompile Include="..\..\src\Level\Layer.cpp" />
     <ClCompile Include="..\..\src\Level\Level.cpp" />
     <ClCompile Include="..\..\src\Main\Game.cpp" />
     <ClCompile Include="..\..\src\Main\GLWindow.cpp" />
diff --git a/Bin/VC10/VC10.vcxproj.filters b/Bin/VC10/VC10.vcxproj.filters
index 4d2a69f..39acd67 100644
--- a/Bin/VC10/VC10.vcxproj.filters
+++ b/Bin/VC10/VC10.vcxproj.filters
@@ -132,15 +132,21 @@
     <ClInclude Include="..\..\src\TMXParser\TmxObject.h">
       <Filter>TMXParser</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\src\System\ResourceManager.h">
-      <Filter>System</Filter>
-    </ClInclude>
     <ClInclude Include="..\..\src\Level\Level.h">
       <Filter>Level</Filter>
     </ClInclude>
     <ClInclude Include="..\..\src\Collision\AABB.h">
       <Filter>Collision</Filter>
     </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>
     <ClCompile Include="..\..\src\Main\main.cpp">
@@ -221,5 +227,8 @@
     <ClCompile Include="..\..\src\Collision\AABB.cpp">
       <Filter>Collision</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\src\Level\Layer.cpp">
+      <Filter>Level</Filter>
+    </ClCompile>
   </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/src/System/ResourceManager.h b/src/System/ResourceManager.h
index decf664..8d0593e 100644
--- a/src/System/ResourceManager.h
+++ b/src/System/ResourceManager.h
@@ -18,10 +18,10 @@ class ResourceManager
 public:
   ResourceManager() { }
 
-  typedef std::map<std::string, T*> ResourceMap;
+  typedef std::map<std::string, typename T*> ResourceMap;
 
   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()) {
       T* resource = new T();
 			
@@ -43,7 +43,7 @@ public:
   }
 
   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()) {
       return i->second;
     }
@@ -51,7 +51,7 @@ public:
   }
 
   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()) {
       resource->refs++;
       m_resources.insert(std::pair<std::string, T*>(name, resource));
@@ -64,7 +64,7 @@ public:
     if(name.empty())
       return;
 
-    ResourceMap::iterator i = m_resources.find(name);
+    ResourceManager<T>::ResourceMap::iterator i = m_resources.find(name);
     if(i != m_resources.end()) {
       T* resource = i->second;
 
@@ -78,7 +78,7 @@ public:
   }
 
   void Destroy(T* resource) {
-    ResourceMap::iterator i;
+    ResourceManager<T>::ResourceMap::iterator i;
     for(i = m_resources.begin(); i != m_resources.end(); ++i) {
       if(i->second == resource){
         resource->refs--;