[openjk] 16/32: MP: Add ui_screenshotType cvar for developer mode screenshots

Simon McVittie smcv at debian.org
Sun Mar 12 18:03:03 UTC 2017


This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to branch debian/master
in repository openjk.

commit 5a3f8d969d6c24706639fc9290f69ac5283ba006
Author: Ensiform <ensiform at gmail.com>
Date:   Sat Mar 11 12:22:43 2017 -0600

    MP: Add ui_screenshotType cvar for developer mode screenshots
    
    This allows you to set jpg|tga|png for what format of screenshots you wish to take when developer mode is enabled and pressing F12 in the UI.
---
 codemp/ui/ui_cvar.c   | 53 +++++++++++++++++++++++++++++++++++++++++++++++----
 codemp/ui/ui_shared.c | 17 ++++++++++++++++-
 codemp/ui/ui_shared.h |  7 +++++++
 codemp/ui/ui_xcvar.h  |  1 +
 4 files changed, 73 insertions(+), 5 deletions(-)

diff --git a/codemp/ui/ui_cvar.c b/codemp/ui/ui_cvar.c
index 1fae9af..3108594 100644
--- a/codemp/ui/ui_cvar.c
+++ b/codemp/ui/ui_cvar.c
@@ -27,11 +27,56 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
 // Cvar callbacks
 //
 
-/*
-static void CVU_Derpity( void ) {
-	// ...
+static int UI_GetScreenshotFormatForString( const char *str ) {
+	if ( !Q_stricmp(str, "jpg") || !Q_stricmp(str, "jpeg") )
+		return SSF_JPEG;
+	else if ( !Q_stricmp(str, "tga") )
+		return SSF_TGA;
+	else if ( !Q_stricmp(str, "png") )
+		return SSF_PNG;
+	else
+		return -1;
+}
+
+static const char *UI_GetScreenshotFormatString( int format )
+{
+	switch ( format )
+	{
+	default:
+	case SSF_JPEG:
+		return "jpg";
+	case SSF_TGA:
+		return "tga";
+	case SSF_PNG:
+		return "png";
+	}
+}
+
+static void UI_UpdateScreenshot( void )
+{
+	// check some things
+	if ( ui_screenshotType.string[0] && isalpha( ui_screenshotType.string[0] ) )
+	{
+		int ssf = UI_GetScreenshotFormatForString( ui_screenshotType.string );
+		if ( ssf == -1 )
+		{
+			trap->Print( "UI Screenshot Format Type '%s' unrecognised, defaulting to JPEG\n", ui_screenshotType.string );
+			uiInfo.uiDC.screenshotFormat = SSF_JPEG;
+		}
+		else
+			uiInfo.uiDC.screenshotFormat = ssf;
+	}
+	else if ( ui_screenshotType.integer < SSF_JPEG || ui_screenshotType.integer > SSF_PNG )
+	{
+		trap->Print( "ui_screenshotType %i is out of range, defaulting to 0 (JPEG)\n", ui_screenshotType.integer );
+		uiInfo.uiDC.screenshotFormat = SSF_JPEG;
+	}
+	else
+		uiInfo.uiDC.screenshotFormat = atoi( ui_screenshotType.string );
+
+	trap->Cvar_Set( "ui_screenshotType", UI_GetScreenshotFormatString( uiInfo.uiDC.screenshotFormat ) );
+	trap->Cvar_Update( &ui_screenshotType );
 }
-*/
 
 
 //
diff --git a/codemp/ui/ui_shared.c b/codemp/ui/ui_shared.c
index 0acc689..34a8b7d 100644
--- a/codemp/ui/ui_shared.c
+++ b/codemp/ui/ui_shared.c
@@ -4284,7 +4284,22 @@ void Menu_HandleKey(menuDef_t *menu, int key, qboolean down) {
 
 		case A_F12:
 			if (DC->getCVarValue("developer")) {
-				DC->executeText(EXEC_APPEND, "screenshot\n");
+				switch ( DC->screenshotFormat ) {
+					case SSF_JPEG:
+						DC->executeText(EXEC_APPEND, "screenshot\n");
+						break;
+					case SSF_TGA:
+						DC->executeText(EXEC_APPEND, "screenshot_tga\n");
+						break;
+					case SSF_PNG:
+						DC->executeText(EXEC_APPEND, "screenshot_png\n");
+						break;
+					default:
+						if (DC->Print) {
+							DC->Print(S_COLOR_YELLOW "Menu_HandleKey[F12]: Unknown screenshot format assigned! This should not happen.\n");
+						}
+						break;
+				}
 			}
 			break;
 		case A_KP_8:
diff --git a/codemp/ui/ui_shared.h b/codemp/ui/ui_shared.h
index dcaac98..51e4a03 100644
--- a/codemp/ui/ui_shared.h
+++ b/codemp/ui/ui_shared.h
@@ -109,6 +109,12 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
 #define SLIDER_THUMB_HEIGHT 20.0
 #define	NUM_CROSSHAIRS			9
 
+enum {
+	SSF_JPEG = 0,
+	SSF_TGA,
+	SSF_PNG
+};
+
 typedef struct scriptDef_s {
   const char *command;
   const char *args[MAX_SCRIPT_ARGS];
@@ -483,6 +489,7 @@ typedef struct displayContextDef_s {
 	qhandle_t		gradientImage;
 	qhandle_t		cursor;
 	float			FPS;
+	int				screenshotFormat;
 
 	struct {
 		float			(*Font_StrLenPixels)				( const char *text, const int iFontIndex, const float scale );
diff --git a/codemp/ui/ui_xcvar.h b/codemp/ui/ui_xcvar.h
index 6f4758d..dbc4841 100644
--- a/codemp/ui/ui_xcvar.h
+++ b/codemp/ui/ui_xcvar.h
@@ -129,6 +129,7 @@ XCVAR_DEF( ui_scoreTimeBonus,				"0",					NULL,				CVAR_ARCHIVE|CVAR_INTERNAL )
 XCVAR_DEF( ui_selectedModelIndex,			"16",					NULL,				CVAR_ARCHIVE|CVAR_INTERNAL )
 XCVAR_DEF( ui_serverFilterType,				"0",					NULL,				CVAR_ARCHIVE|CVAR_INTERNAL )
 XCVAR_DEF( ui_serverStatusTimeOut,			"7000",					NULL,				CVAR_ARCHIVE|CVAR_INTERNAL )
+XCVAR_DEF( ui_screenshotType,				"jpg",					UI_UpdateScreenshot,	CVAR_ARCHIVE )
 XCVAR_DEF( ui_singlePlayerActive,			"0",					NULL,				CVAR_INTERNAL )
 XCVAR_DEF( ui_team_fraglimit,				"0",					NULL,				CVAR_ARCHIVE|CVAR_INTERNAL )
 XCVAR_DEF( ui_team_friendly,				"1",					NULL,				CVAR_ARCHIVE|CVAR_INTERNAL )

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/openjk.git



More information about the Pkg-games-commits mailing list