From dde1c1610579c8b11d64a803da50aa498161fea6 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Fri, 11 Sep 2015 03:44:25 +0100 Subject: [PATCH] Minimap screenshot: add console params and help to mostly match screenshot. --- src/console_cmds.cpp | 21 ++++++++++++++++++--- src/screenshot.cpp | 5 ++++- src/screenshot.h | 1 + 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp index cc8321ed0e..7f38455504 100644 --- a/src/console_cmds.cpp +++ b/src/console_cmds.cpp @@ -49,8 +49,6 @@ static bool _script_running; ///< Script is running (used to abort execution whe #define DEF_CONSOLE_CMD(function) static bool function(byte argc, char *argv[]) #define DEF_CONSOLE_HOOK(function) static ConsoleHookResult function(bool echo) -void SaveMinimap(); - /**************** * command hooks ****************/ @@ -1393,7 +1391,24 @@ DEF_CONSOLE_CMD(ConScreenShot) DEF_CONSOLE_CMD(ConMinimap) { - SaveMinimap(); + if (argc == 0) { + IConsoleHelp("Create a flat image of the game minimap. Usage: 'minimap [owner] [file name]'"); + IConsoleHelp("'owner' uses the tile owner to colour the minimap image, this is the only mode at present"); + return true; + } + + const char *name = NULL; + if (argc > 1) { + if (strcmp(argv[1], "owner") != 0) { + /* invalid mode */ + return false; + } + } + if (argc > 2) { + name = argv[2]; + } + + SaveMinimap(name); return true; } diff --git a/src/screenshot.cpp b/src/screenshot.cpp index 3def9b679a..62705bd23e 100644 --- a/src/screenshot.cpp +++ b/src/screenshot.cpp @@ -924,7 +924,7 @@ static void MinimapOwnerCallback(void *userdata, void *buf, uint y, uint pitch, /** * Saves the complete savemap in a PNG-file. */ -void SaveMinimap() +void SaveMinimap(const char *name) { /* setup owner table */ const Company *c; @@ -941,6 +941,9 @@ void SaveMinimap() _colour_gradient[c->colour][5] * 0x01010101; } + _screenshot_name[0] = '\0'; + if (name != NULL) strecpy(_screenshot_name, name, lastof(_screenshot_name)); + const ScreenshotFormat *sf = _screenshot_formats + _cur_screenshot_format; sf->proc(MakeScreenshotName("minimap", sf->extension), MinimapOwnerCallback, NULL, MapSizeX(), MapSizeY(), 32, _cur_palette.palette); } diff --git a/src/screenshot.h b/src/screenshot.h index ee03d8aff7..a17c5cac8c 100644 --- a/src/screenshot.h +++ b/src/screenshot.h @@ -29,6 +29,7 @@ enum ScreenshotType { void SetupScreenshotViewport(ScreenshotType t, struct ViewPort *vp); bool MakeHeightmapScreenshot(const char *filename); bool MakeScreenshot(ScreenshotType t, const char *name); +void SaveMinimap(const char *name); extern char _screenshot_format_name[8]; extern uint _num_screenshot_formats;