about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTeetime <anton.tsoulos@yahoo.de>2011-10-22 21:01:08 +0200
committerTeetime <anton.tsoulos@yahoo.de>2011-10-22 21:01:08 +0200
commitc1bffb2f297fce988427ae25baef0a8dfd3cf1aa (patch)
treec268cabeb7f1a7270086b25dace5630d77a8159d
parent418340f4114bb4f5e5f9bf80062e870c1d46e2e3 (diff)
downloadzcatch-c1bffb2f297fce988427ae25baef0a8dfd3cf1aa.tar.gz
zcatch-c1bffb2f297fce988427ae25baef0a8dfd3cf1aa.zip
reload map after mode-change to ensure that all is loaded correctly
-rw-r--r--src/engine/server.h3
-rw-r--r--src/engine/server/server.cpp5
-rw-r--r--src/engine/server/server.h3
-rw-r--r--src/game/server/gamemodes/zcatch.cpp7
-rw-r--r--src/game/server/gamemodes/zcatch.hpp3
5 files changed, 21 insertions, 0 deletions
diff --git a/src/engine/server.h b/src/engine/server.h
index 31134ca9..d3eae861 100644
--- a/src/engine/server.h
+++ b/src/engine/server.h
@@ -58,6 +58,9 @@ public:
 	virtual void Kick(int ClientID, const char *pReason) = 0;
 
 	virtual void DemoRecorder_HandleAutoStart() = 0;
+	
+	//zCatch
+	virtual void MapReload() = 0;
 };
 
 class IGameServer : public IInterface
diff --git a/src/engine/server/server.cpp b/src/engine/server/server.cpp
index 193547cc..25214752 100644
--- a/src/engine/server/server.cpp
+++ b/src/engine/server/server.cpp
@@ -1541,6 +1541,11 @@ void CServer::DemoRecorder_HandleAutoStart()
 	}
 }
 
+void CServer::MapReload()
+{
+	m_MapReload = 1;
+}
+
 void CServer::ConRecord(IConsole::IResult *pResult, void *pUser)
 {
 	CServer* pServer = (CServer *)pUser;
diff --git a/src/engine/server/server.h b/src/engine/server/server.h
index d8fdd8fa..590e8f6d 100644
--- a/src/engine/server/server.h
+++ b/src/engine/server/server.h
@@ -218,6 +218,9 @@ public:
 	virtual void SnapFreeID(int ID);
 	virtual void *SnapNewItem(int Type, int ID, int Size);
 	void SnapSetStaticsize(int ItemType, int Size);
+	
+	//zCatch
+	virtual void MapReload();
 };
 
 #endif
diff --git a/src/game/server/gamemodes/zcatch.cpp b/src/game/server/gamemodes/zcatch.cpp
index a112ac04..eac8a4d3 100644
--- a/src/game/server/gamemodes/zcatch.cpp
+++ b/src/game/server/gamemodes/zcatch.cpp
@@ -10,12 +10,19 @@ CGameController_zCatch::CGameController_zCatch(class CGameContext *pGameServer)
 : IGameController(pGameServer)
 {
 	m_pGameType = "zCatch";
+	m_OldMode = g_Config.m_SvMode;
 }
 
 void CGameController_zCatch::Tick()
 {
 	DoWincheck();
 	IGameController::Tick();
+	
+	if(m_OldMode != g_Config.m_SvMode)
+	{
+		Server()->MapReload();
+		m_OldMode = g_Config.m_SvMode;
+	}
 }
 
 bool CGameController_zCatch::IsZCatch()
diff --git a/src/game/server/gamemodes/zcatch.hpp b/src/game/server/gamemodes/zcatch.hpp
index 64da71cc..58e43f61 100644
--- a/src/game/server/gamemodes/zcatch.hpp
+++ b/src/game/server/gamemodes/zcatch.hpp
@@ -9,6 +9,9 @@
 
 class CGameController_zCatch : public IGameController
 {
+	private:
+	int m_OldMode;
+	
 	public:
 	CGameController_zCatch(class CGameContext *pGameServer);
 	virtual void Tick();