about summary refs log tree commit diff
path: root/src/game
diff options
context:
space:
mode:
Diffstat (limited to 'src/game')
-rw-r--r--src/game/client/components/menus.cpp14
-rw-r--r--src/game/client/components/menus.h1
-rw-r--r--src/game/client/components/menus_demo.cpp19
3 files changed, 27 insertions, 7 deletions
diff --git a/src/game/client/components/menus.cpp b/src/game/client/components/menus.cpp
index 42f68978..f1250914 100644
--- a/src/game/client/components/menus.cpp
+++ b/src/game/client/components/menus.cpp
@@ -91,6 +91,7 @@ CMenus::CMenus()
 	
 	m_EscapePressed = false;
 	m_EnterPressed = false;
+	m_DeletePressed = false;
 	m_NumInputEvents = 0;
 	
 	m_LastInput = time_get();
@@ -1029,9 +1030,14 @@ bool CMenus::OnInput(IInput::CEvent e)
 		
 	if(IsActive())
 	{
-		// special for popups
-		if(e.m_Flags&IInput::FLAG_PRESS && e.m_Key == KEY_RETURN)
-			m_EnterPressed = true;
+		if(e.m_Flags&IInput::FLAG_PRESS)
+		{
+			// special for popups
+			if(e.m_Key == KEY_RETURN)
+				m_EnterPressed = true;
+			else if(e.m_Key == KEY_DELETE)
+				m_DeletePressed = true;
+		}
 		
 		if(m_NumInputEvents < MAX_INPUTEVENTS)
 			m_aInputEvents[m_NumInputEvents++] = e;
@@ -1116,6 +1122,7 @@ void CMenus::OnRender()
 	{
 		m_EscapePressed = false;
 		m_EnterPressed = false;
+		m_DeletePressed = false;
 		m_NumInputEvents = 0;
 		return;
 	}
@@ -1183,6 +1190,7 @@ void CMenus::OnRender()
 
 	m_EscapePressed = false;
 	m_EnterPressed = false;
+	m_DeletePressed = false;
 	m_NumInputEvents = 0;
 }
 
diff --git a/src/game/client/components/menus.h b/src/game/client/components/menus.h
index de711a1e..ec2ff264 100644
--- a/src/game/client/components/menus.h
+++ b/src/game/client/components/menus.h
@@ -146,6 +146,7 @@ class CMenus : public CComponent
 	//
 	bool m_EscapePressed;
 	bool m_EnterPressed;
+	bool m_DeletePressed;
 	
 	// for call vote
 	int m_CallvoteSelectedOption;
diff --git a/src/game/client/components/menus_demo.cpp b/src/game/client/components/menus_demo.cpp
index ae4873c1..5321b087 100644
--- a/src/game/client/components/menus_demo.cpp
+++ b/src/game/client/components/menus_demo.cpp
@@ -4,6 +4,7 @@
 #include <engine/demo.h>
 #include <engine/keys.h>
 #include <engine/graphics.h>
+#include <engine/storage.h>
 
 #include <game/client/render.h>
 #include <game/client/gameclient.h>
@@ -472,10 +473,11 @@ void CMenus::RenderDemoList(CUIRect MainView)
 	bool Activated = false;
 	s_SelectedItem = UiDoListboxEnd(&s_ScrollValue, &Activated);
 	
-	CUIRect RefreshRect, PlayRect;
-	ButtonBar.VSplitRight(250.0f, &ButtonBar, &RefreshRect);
-	RefreshRect.VSplitRight(130.0f, &RefreshRect, &PlayRect);
-	PlayRect.VSplitRight(120.0f, 0x0, &PlayRect);
+	CUIRect RefreshRect, PlayRect, DeleteRect;
+	ButtonBar.VSplitRight(130.0f, &ButtonBar, &PlayRect);
+	ButtonBar.VSplitLeft(130.0f, &RefreshRect, &ButtonBar);
+	ButtonBar.VSplitLeft(10.0f, &DeleteRect, &ButtonBar);
+	ButtonBar.VSplitLeft(120.0f, &DeleteRect, &ButtonBar);
 	
 	bool IsDir = false;
 	if(s_SelectedItem >= 0 && s_SelectedItem < m_lDemos.size())
@@ -524,6 +526,15 @@ void CMenus::RenderDemoList(CUIRect MainView)
 		}
 	}
 	
+	static int s_DeleteButton = 0;
+	if(DoButton_Menu(&s_DeleteButton, Localize("Delete"), 0, &DeleteRect) || m_DeletePressed)
+	{
+		if(s_SelectedItem >= 0 && s_SelectedItem < m_lDemos.size() && !IsDir)
+		{
+			Storage()->RemoveFile(m_lDemos[s_SelectedItem].m_aFilename);
+			DemolistPopulate();
+		}
+	}
 }
 
 void CMenus::DemoSetParentDirectory()