about summary refs log tree commit diff
path: root/src/game
diff options
context:
space:
mode:
authoroy <Tom_Adams@web.de>2010-08-09 14:14:15 +0200
committeroy <Tom_Adams@web.de>2010-08-09 14:14:15 +0200
commit3797eba179d40473e20f16d46dffc8d69e7e1b74 (patch)
treee2f55551275275862f6d196eff2d67decb01f34a /src/game
parentd471663913390c5243ab946ecd6ee8849af484e1 (diff)
downloadzcatch-3797eba179d40473e20f16d46dffc8d69e7e1b74.tar.gz
zcatch-3797eba179d40473e20f16d46dffc8d69e7e1b74.zip
added demo recording button by fujnky
Diffstat (limited to 'src/game')
-rw-r--r--src/game/client/component.h1
-rw-r--r--src/game/client/components/menus_ingame.cpp23
-rw-r--r--src/game/client/gameclient.cpp1
-rw-r--r--src/game/client/gameclient.h2
4 files changed, 26 insertions, 1 deletions
diff --git a/src/game/client/component.h b/src/game/client/component.h
index 410be623..6e4b3715 100644
--- a/src/game/client/component.h
+++ b/src/game/client/component.h
@@ -23,6 +23,7 @@ protected:
 	class CRenderTools *RenderTools() const { return m_pClient->RenderTools(); }
 	class IConsole *Console() const { return m_pClient->Console(); }
 	class IDemoPlayer *DemoPlayer() const { return m_pClient->DemoPlayer(); }
+	class IDemoRecorder *DemoRecorder() const { return m_pClient->DemoRecorder(); }
 	class IServerBrowser *ServerBrowser() const { return m_pClient->ServerBrowser(); }
 	class CLayers *Layers() const { return m_pClient->Layers(); }
 	class CCollision *Collision() const { return m_pClient->Collision(); }
diff --git a/src/game/client/components/menus_ingame.cpp b/src/game/client/components/menus_ingame.cpp
index b5543162..f1a4b0dd 100644
--- a/src/game/client/components/menus_ingame.cpp
+++ b/src/game/client/components/menus_ingame.cpp
@@ -1,7 +1,8 @@
+#include <time.h>
 
 #include <base/math.h>
 
-
+#include <engine/demo.h>
 #include <engine/serverbrowser.h>
 #include <engine/textrender.h>
 #include <engine/shared/config.h>
@@ -89,6 +90,26 @@ void CMenus::RenderGame(CUIRect MainView)
 			}
 		}
 	}
+
+	MainView.VSplitLeft(100.0f, &Button, &MainView);
+	MainView.VSplitLeft(150.0f, &Button, &MainView);
+
+	static int s_DemoButton = 0;
+	bool Recording = DemoRecorder()->IsRecording();
+	if(DoButton_Menu(&s_DemoButton, Localize(Recording ? "Stop record" : "Record demo"), 0, &Button))	// Localize("Stop record");Localize("Record demo");
+	{
+		if(!Recording)
+		{
+			char aFilename[128];
+			time_t Time;
+			time(&Time);
+			tm* TimeInfo = localtime(&Time);
+			strftime(aFilename, sizeof(aFilename), "demo-%Y-%m-%d_%H-%M-%S", TimeInfo);
+			Client()->DemoRecorder_Start(aFilename);
+		}
+		else
+			DemoRecorder()->Stop();
+	}
 	
 	/*
 	CUIRect bars;
diff --git a/src/game/client/gameclient.cpp b/src/game/client/gameclient.cpp
index 2b47af1f..319cc300 100644
--- a/src/game/client/gameclient.cpp
+++ b/src/game/client/gameclient.cpp
@@ -115,6 +115,7 @@ void CGameClient::OnConsoleInit()
 	m_pConsole = Kernel()->RequestInterface<IConsole>();
 	m_pStorage = Kernel()->RequestInterface<IStorage>();
 	m_pDemoPlayer = Kernel()->RequestInterface<IDemoPlayer>();
+	m_pDemoRecorder = Kernel()->RequestInterface<IDemoRecorder>();
 	m_pServerBrowser = Kernel()->RequestInterface<IServerBrowser>();
 	
 	// setup pointers
diff --git a/src/game/client/gameclient.h b/src/game/client/gameclient.h
index b91b4b50..28043794 100644
--- a/src/game/client/gameclient.h
+++ b/src/game/client/gameclient.h
@@ -37,6 +37,7 @@ class CGameClient : public IGameClient
 	class IConsole *m_pConsole;
 	class IStorage *m_pStorage;
 	class IDemoPlayer *m_pDemoPlayer;
+	class IDemoRecorder *m_pDemoRecorder;
 	class IServerBrowser *m_pServerBrowser;
 	
 	CLayers m_Layers;
@@ -68,6 +69,7 @@ public:
 	class IConsole *Console() { return m_pConsole; }
 	class ITextRender *TextRender() const { return m_pTextRender; }
 	class IDemoPlayer *DemoPlayer() const { return m_pDemoPlayer; }
+	class IDemoRecorder *DemoRecorder() const { return m_pDemoRecorder; }
 	class IServerBrowser *ServerBrowser() const { return m_pServerBrowser; }
 	class CRenderTools *RenderTools() { return &m_RenderTools; }
 	class CLayers *Layers() { return &m_Layers; };