From c36522d377d3ab94d9106745269e1d06634bad8a Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Fri, 17 Dec 2021 03:16:08 +0100 Subject: [PATCH] #133 add option to save screenshots in a different directory --- inc/dd.h | 1 + src/config.c | 4 ++++ src/screenshot.c | 4 +++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/inc/dd.h b/inc/dd.h index 6c2983a..bb36710 100644 --- a/inc/dd.h +++ b/inc/dd.h @@ -62,6 +62,7 @@ typedef struct CNCDDRAW DEVMODE mode; struct IDirectDrawSurfaceImpl* primary; char title[128]; + char screenshot_dir[MAX_PATH]; CRITICAL_SECTION cs; /* real export from system32\ddraw.dll */ diff --git a/src/config.c b/src/config.c index 53f1c4c..8fdaca6 100644 --- a/src/config.c +++ b/src/config.c @@ -45,6 +45,7 @@ void cfg_load() g_ddraw->d3d9linear = cfg_get_bool("d3d9linear", TRUE); g_ddraw->gdilinear = cfg_get_bool("gdilinear", FALSE); g_ddraw->resolutions = cfg_get_int("resolutions", RESLIST_NORMAL); + cfg_get_string("screenshotdir", ".\\Screenshots\\", g_ddraw->screenshot_dir, sizeof(g_ddraw->screenshot_dir)); if (g_ddraw->locktopleft) g_ddraw->adjmouse = FALSE; @@ -291,6 +292,9 @@ static void cfg_create_ini() "; cnc-ddraw config program language, possible values: auto, english, chinese, german, spanish, russian, hungarian, french\n" "configlang=auto\n" "\n" + "; Where should screenshots be saved\n" + "screenshotdir=.\\Screenshots\\\n" + "\n" "\n" "\n" "; ### Compatibility settings ###\n" diff --git a/src/screenshot.c b/src/screenshot.c index 02e3d22..caf4164 100644 --- a/src/screenshot.c +++ b/src/screenshot.c @@ -132,8 +132,10 @@ BOOL ss_take_screenshot(IDirectDrawSurfaceImpl* src) } } + CreateDirectoryA(g_ddraw->screenshot_dir, NULL); + strftime(str_time, sizeof(str_time), "%Y-%m-%d-%H_%M_%S", localtime(&t)); - _snprintf(filename, sizeof(filename), "%s-%s.png", title, str_time); + _snprintf(filename, sizeof(filename), "%s%s-%s.png", g_ddraw->screenshot_dir, title, str_time); if (src->bpp == 8 && src->palette) {