浏览代码

Missing serialization for Border Gate fixes #1040.

DjWarmonger 13 年之前
父节点
当前提交
12e71e0dff
共有 3 个文件被更改,包括 91 次插入244 次删除
  1. 84 243
      client/VCMI_client.vcxproj.filters
  2. 6 1
      lib/CObjectHandler.h
  3. 1 0
      lib/RegisterTypes.h

+ 84 - 243
client/VCMI_client.vcxproj.filters

@@ -1,252 +1,97 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup>
   <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
+    <ClCompile Include="AdventureMapClasses.cpp" />
+    <ClCompile Include="BattleInterface\CBattleAnimations.cpp" />
+    <ClCompile Include="BattleInterface\CBattleInterface.cpp" />
+    <ClCompile Include="BattleInterface\CBattleInterfaceClasses.cpp" />
+    <ClCompile Include="BattleInterface\CCreatureAnimation.cpp" />
+    <ClCompile Include="CAdvmapInterface.cpp" />
+    <ClCompile Include="CAnimation.cpp" />
+    <ClCompile Include="..\CCallback.cpp" />
+    <ClCompile Include="CBitmapHandler.cpp" />
+    <ClCompile Include="CCastleInterface.cpp" />
+    <ClCompile Include="CConfigHandler.cpp" />
+    <ClCompile Include="CCreatureWindow.cpp" />
+    <ClCompile Include="CDefHandler.cpp" />
+    <ClCompile Include="CGameInfo.cpp" />
+    <ClCompile Include="CHeroWindow.cpp" />
+    <ClCompile Include="CKingdomInterface.cpp" />
+    <ClCompile Include="Client.cpp" />
+    <ClCompile Include="CMessage.cpp" />
+    <ClCompile Include="CMT.cpp" />
+    <ClCompile Include="CMusicHandler.cpp" />
+    <ClCompile Include="CPlayerInterface.cpp" />
+    <ClCompile Include="CPreGame.cpp" />
+    <ClCompile Include="CSndHandler.cpp" />
+    <ClCompile Include="CSpellWindow.cpp" />
+    <ClCompile Include="CVideoHandler.cpp" />
+    <ClCompile Include="Graphics.cpp" />
+    <ClCompile Include="GUIClasses.cpp" />
+    <ClCompile Include="mapHandler.cpp" />
+    <ClCompile Include="NetPacksClient.cpp" />
+    <ClCompile Include="StdInc.cpp" />
+    <ClCompile Include="UIFramework\CCursorHandler.cpp" />
+    <ClCompile Include="UIFramework\CGuiHandler.cpp" />
+    <ClCompile Include="UIFramework\CIntObject.cpp" />
+    <ClCompile Include="UIFramework\CIntObjectClasses.cpp" />
+    <ClCompile Include="UIFramework\Geometries.cpp" />
+    <ClCompile Include="UIFramework\SDL_Extensions.cpp" />
+    <ClCompile Include="CQuestLog.cpp" />
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
-    <ClCompile Include="CAdvmapInterface.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="CBitmapHandler.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\CCallback.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="CCastleInterface.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="CConfigHandler.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="CGameInfo.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="CHeroWindow.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="CKingdomInterface.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="Client.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="CMessage.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="CMT.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="CPlayerInterface.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="CPreGame.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="CSpellWindow.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="Graphics.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="GUIClasses.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="NetPacksClient.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="mapHandler.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="CAnimation.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="CDefHandler.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="CMusicHandler.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="CSndHandler.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="CVideoHandler.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="CCreatureWindow.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="BattleInterface\CBattleAnimations.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="BattleInterface\CBattleInterface.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="BattleInterface\CBattleInterfaceClasses.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="BattleInterface\CCreatureAnimation.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="StdInc.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="UIFramework\CCursorHandler.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="UIFramework\CGuiHandler.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="UIFramework\CIntObject.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="UIFramework\CIntObjectClasses.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="UIFramework\Geometries.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="UIFramework\SDL_Extensions.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="AdventureMapClasses.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
+    <ClInclude Include="..\Global.h" />
+    <ClInclude Include="AdventureMapClasses.h" />
+    <ClInclude Include="BattleInterface\CBattleAnimations.h" />
+    <ClInclude Include="BattleInterface\CBattleInterface.h" />
+    <ClInclude Include="BattleInterface\CBattleInterfaceClasses.h" />
+    <ClInclude Include="BattleInterface\CCreatureAnimation.h" />
+    <ClInclude Include="CAdvmapInterface.h" />
+    <ClInclude Include="..\hch\CArtHandler.h" />
+    <ClInclude Include="CAnimation.h" />
+    <ClInclude Include="CBitmapHandler.h" />
+    <ClInclude Include="..\hch\CBuildingHandler.h" />
+    <ClInclude Include="..\CCallback.h" />
+    <ClInclude Include="CCastleInterface.h" />
+    <ClInclude Include="CConfigHandler.h" />
+    <ClInclude Include="CCreatureWindow.h" />
+    <ClInclude Include="CDefHandler.h" />
+    <ClInclude Include="CGameInfo.h" />
+    <ClInclude Include="..\hch\CHeroHandler.h" />
+    <ClInclude Include="CHeroWindow.h" />
+    <ClInclude Include="CKingdomInterface.h" />
+    <ClInclude Include="Client.h" />
+    <ClInclude Include="CMessage.h" />
+    <ClInclude Include="..\hch\CObjectHandler.h" />
+    <ClInclude Include="CMusicBase.h" />
+    <ClInclude Include="CMusicHandler.h" />
+    <ClInclude Include="CPlayerInterface.h" />
+    <ClInclude Include="CPreGame.h" />
+    <ClInclude Include="CSndHandler.h" />
+    <ClInclude Include="CSoundBase.h" />
+    <ClInclude Include="CSpellWindow.h" />
+    <ClInclude Include="..\hch\CVideoHandler.h" />
+    <ClInclude Include="CVideoHandler.h" />
+    <ClInclude Include="FontBase.h" />
+    <ClInclude Include="FunctionList.h" />
+    <ClInclude Include="Graphics.h" />
+    <ClInclude Include="GUIClasses.h" />
+    <ClInclude Include="resource.h" />
+    <ClInclude Include="StdInc.h" />
+    <ClInclude Include="UIFramework\CCursorHandler.h" />
+    <ClInclude Include="UIFramework\CGuiHandler.h" />
+    <ClInclude Include="UIFramework\CIntObject.h" />
+    <ClInclude Include="UIFramework\CIntObjectClasses.h" />
+    <ClInclude Include="UIFramework\Geometries.h" />
+    <ClInclude Include="UIFramework\SDL_Extensions.h" />
+    <ClInclude Include="UIFramework\SDL_Pixels.h" />
+    <ClInclude Include="CQuestLog.h" />
     <ClCompile Include="CQuestLog.cpp">
     <ClCompile Include="CQuestLog.cpp">
       <Filter>Source Files</Filter>
       <Filter>Source Files</Filter>
     </ClCompile>
     </ClCompile>
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
-    <ClInclude Include="CAdvmapInterface.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="CBitmapHandler.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\CCallback.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="CCastleInterface.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="CConfigHandler.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="CGameInfo.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="CHeroWindow.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="CKingdomInterface.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="Client.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="CMessage.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="CPlayerInterface.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="CPreGame.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="CSpellWindow.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="FontBase.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="FunctionList.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\global.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="Graphics.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="GUIClasses.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="resource.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="CAnimation.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="CDefHandler.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="CMusicBase.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="CMusicHandler.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="CSndHandler.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="CSoundBase.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="CVideoHandler.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="CCreatureWindow.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="BattleInterface\CBattleAnimations.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="BattleInterface\CBattleInterface.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="BattleInterface\CBattleInterfaceClasses.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="BattleInterface\CCreatureAnimation.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="StdInc.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="UIFramework\CCursorHandler.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="UIFramework\CGuiHandler.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="UIFramework\CIntObject.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="UIFramework\CIntObjectClasses.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="UIFramework\Geometries.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="UIFramework\SDL_Extensions.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="mapHandler.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="UIFramework\SDL_Pixels.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="AdventureMapClasses.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
+    <ResourceCompile Include="VCMI_client.rc" />
     <ClInclude Include="CQuestLog.h">
     <ClInclude Include="CQuestLog.h">
       <Filter>Header Files</Filter>
       <Filter>Header Files</Filter>
     </ClInclude>
     </ClInclude>
@@ -254,9 +99,5 @@
   <ItemGroup>
   <ItemGroup>
     <None Include="..\ChangeLog" />
     <None Include="..\ChangeLog" />
     <None Include="vcmi.ico" />
     <None Include="vcmi.ico" />
-    <None Include="ClassDiagram21.cd" />
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="VCMI_client.rc" />
   </ItemGroup>
   </ItemGroup>
 </Project>
 </Project>

+ 6 - 1
lib/CObjectHandler.h

@@ -1090,11 +1090,16 @@ public:
 	}
 	}
 };
 };
 
 
-class DLL_LINKAGE CGBorderGate : public CGBorderGuard //not fully imlemented, waiting for garrison
+class DLL_LINKAGE CGBorderGate : public CGBorderGuard
 {
 {
 public:
 public:
 	void onHeroVisit(const CGHeroInstance * h) const;
 	void onHeroVisit(const CGHeroInstance * h) const;
 	ui8 getPassableness() const;
 	ui8 getPassableness() const;
+
+	template <typename Handler> void serialize(Handler &h, const int version)
+	{
+		h & static_cast<CGBorderGuard&>(*this); //need to serialize or object will be empty
+	}
 };
 };
 
 
 class DLL_LINKAGE CGBoat : public CGObjectInstance 
 class DLL_LINKAGE CGBoat : public CGObjectInstance 

+ 1 - 0
lib/RegisterTypes.h

@@ -53,6 +53,7 @@ void registerTypes1(Serializer &s)
 	s.template registerType<CGKeys>();
 	s.template registerType<CGKeys>();
 	s.template registerType<CGKeymasterTent>();
 	s.template registerType<CGKeymasterTent>();
 	s.template registerType<CGBorderGuard>();
 	s.template registerType<CGBorderGuard>();
+	s.template registerType<CGBorderGate>();
 	s.template registerType<CGBoat>();
 	s.template registerType<CGBoat>();
 	s.template registerType<CGMagi>();
 	s.template registerType<CGMagi>();
 	s.template registerType<CGSirens>();
 	s.template registerType<CGSirens>();