about summary refs log tree commit diff
path: root/src/game
diff options
context:
space:
mode:
authorFujnky <larsfunke1996@gmail.com>2010-07-27 22:25:36 +0200
committeroy <Tom_Adams@web.de>2010-08-13 03:17:13 +0200
commit4d8c4ffadb9c788eb83d244dc509e56251d09030 (patch)
treeef0a850eee3f9d924dfbc88d191265d2dfb43019 /src/game
parentd01fb2eb7818c121ab892f29b929f55d66e4e7ce (diff)
downloadzcatch-4d8c4ffadb9c788eb83d244dc509e56251d09030.tar.gz
zcatch-4d8c4ffadb9c788eb83d244dc509e56251d09030.zip
Improved the replay control buttons in the demo player a lot.
* Now there is a combined play/pause button + a reset button
* Replaced the ugly strings with nice graphics
Diffstat (limited to 'src/game')
-rw-r--r--src/game/client/components/menus.h1
-rw-r--r--src/game/client/components/menus_demo.cpp46
2 files changed, 32 insertions, 15 deletions
diff --git a/src/game/client/components/menus.h b/src/game/client/components/menus.h
index 3ad737e5..53f81954 100644
--- a/src/game/client/components/menus.h
+++ b/src/game/client/components/menus.h
@@ -33,6 +33,7 @@ class CMenus : public CComponent
 
 
 	int DoButton_DemoPlayer(const void *pID, const char *pText, int Checked, const CUIRect *pRect);
+	int DoButton_DemoPlayer_Sprite(const void *pID, int spriteId, int Checked, const CUIRect *pRect);
 	int DoButton_Menu(const void *pID, const char *pText, int Checked, const CUIRect *pRect);
 	int DoButton_MenuTab(const void *pID, const char *pText, int Checked, const CUIRect *pRect, int Corners);
 	int DoButton_SettingsTab(const void *pID, const char *pText, int Checked, const CUIRect *pRect);
diff --git a/src/game/client/components/menus_demo.cpp b/src/game/client/components/menus_demo.cpp
index 231cd83a..18d9ddee 100644
--- a/src/game/client/components/menus_demo.cpp
+++ b/src/game/client/components/menus_demo.cpp
@@ -1,9 +1,9 @@
 
 #include <base/math.h>
 
-
 #include <engine/demo.h>
 #include <engine/keys.h>
+#include <engine/graphics.h>
 
 #include <game/client/render.h>
 #include <game/client/gameclient.h>
@@ -11,6 +11,8 @@
 
 #include <game/client/ui.h>
 
+#include <game/generated/client_data.h>
+
 #include "menus.h"
 
 int CMenus::DoButton_DemoPlayer(const void *pID, const char *pText, int Checked, const CUIRect *pRect)
@@ -20,6 +22,19 @@ int CMenus::DoButton_DemoPlayer(const void *pID, const char *pText, int Checked,
 	return UI()->DoButtonLogic(pID, pText, Checked, pRect);
 }
 
+int CMenus::DoButton_DemoPlayer_Sprite(const void *pID, int spriteId, int Checked, const CUIRect *pRect)
+{
+	RenderTools()->DrawUIRect(pRect, vec4(1,1,1, Checked ? 0.10f : 0.5f)*ButtonColorMul(pID), CUI::CORNER_ALL, 5.0f);
+	Graphics()->TextureSet(g_pData->m_aImages[IMAGE_DEMOBUTTONS].m_Id);
+	Graphics()->QuadsBegin();
+	RenderTools()->SelectSprite(spriteId);
+	IGraphics::CQuadItem QuadItem(pRect->x, pRect->y, pRect->w, pRect->h);
+	Graphics()->QuadsDrawTL(&QuadItem, 1);
+	Graphics()->QuadsEnd();
+	
+	return UI()->DoButtonLogic(pID, "", Checked, pRect);
+}
+
 void CMenus::RenderDemoPlayer(CUIRect MainView)
 {
 	const IDemoPlayer::CInfo *pInfo = DemoPlayer()->BaseInfo();
@@ -111,33 +126,34 @@ void CMenus::RenderDemoPlayer(CUIRect MainView)
 	{
 		// do buttons
 		CUIRect Button;
-
-		// pause button
+		
+		// combined play and pause button
 		ButtonBar.VSplitLeft(ButtonbarHeight, &Button, &ButtonBar);
-		static int s_PauseButton = 0;
-		if(DoButton_DemoPlayer(&s_PauseButton, "| |", pInfo->m_Paused, &Button))
+		static int s_PlayPauseButton = 0;
+		if(!pInfo->m_Paused)
 		{
-			if(pInfo->m_Paused)
-				DemoPlayer()->Unpause();
-			else
+			if(DoButton_DemoPlayer_Sprite(&s_PlayPauseButton, SPRITE_DEMOBUTTON_PAUSE, pInfo->m_Paused, &Button))
 				DemoPlayer()->Pause();
 		}
+		else
+		{
+			if(DoButton_DemoPlayer_Sprite(&s_PlayPauseButton, SPRITE_DEMOBUTTON_PLAY, !pInfo->m_Paused, &Button))
+			DemoPlayer()->Unpause();
+		}
 		
-		// play button
 		ButtonBar.VSplitLeft(Margins, 0, &ButtonBar);
 		ButtonBar.VSplitLeft(ButtonbarHeight, &Button, &ButtonBar);
-		static int s_PlayButton = 0;
-		if(DoButton_DemoPlayer(&s_PlayButton, ">", !pInfo->m_Paused, &Button))
+		static int s_ResetButton = 0;
+		if(DoButton_DemoPlayer_Sprite(&s_ResetButton, SPRITE_DEMOBUTTON_RESET, false, &Button))
 		{
-			DemoPlayer()->Unpause();
-			DemoPlayer()->SetSpeed(1.0f);
+			DemoPlayer()->SetPos(0);
 		}
 
 		// slowdown
 		ButtonBar.VSplitLeft(Margins, 0, &ButtonBar);
 		ButtonBar.VSplitLeft(ButtonbarHeight, &Button, &ButtonBar);
 		static int s_SlowDownButton = 0;
-		if(DoButton_DemoPlayer(&s_SlowDownButton, "<<", 0, &Button))
+		if(DoButton_DemoPlayer_Sprite(&s_SlowDownButton, SPRITE_DEMOBUTTON_SLOWER, 0, &Button))
 		{
 			if(pInfo->m_Speed > 4.0f) DemoPlayer()->SetSpeed(4.0f);
 			else if(pInfo->m_Speed > 2.0f) DemoPlayer()->SetSpeed(2.0f);
@@ -150,7 +166,7 @@ void CMenus::RenderDemoPlayer(CUIRect MainView)
 		ButtonBar.VSplitLeft(Margins, 0, &ButtonBar);
 		ButtonBar.VSplitLeft(ButtonbarHeight, &Button, &ButtonBar);
 		static int s_FastForwardButton = 0;
-		if(DoButton_DemoPlayer(&s_FastForwardButton, ">>", 0, &Button))
+		if(DoButton_DemoPlayer_Sprite(&s_FastForwardButton, SPRITE_DEMOBUTTON_FASTER, 0, &Button))
 		{
 			if(pInfo->m_Speed < 0.5f) DemoPlayer()->SetSpeed(0.5f);
 			else if(pInfo->m_Speed < 1.0f) DemoPlayer()->SetSpeed(1.0f);