[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