From 78fc836372c8628be489ac3f89ce43fda4a6f730 Mon Sep 17 00:00:00 2001 From: lsalzman Date: Wed, 24 Apr 2013 13:32:47 +0300 Subject: [PATCH] use saner format for screenshot names by default --- src/engine/texture.cpp | 21 +++++++++++++++++++-- src/fpsgame/fps.cpp | 5 +++++ src/shared/igame.h | 1 + 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/engine/texture.cpp b/src/engine/texture.cpp index 2e615e2..8d73fdb 100644 --- a/src/engine/texture.cpp +++ b/src/engine/texture.cpp @@ -2960,8 +2960,25 @@ void screenshot(char *filename) } else { - defformatstring(name)("screenshot_%d", totalmillis); - concatstring(buf, name); + string sstime; + time_t t = time(NULL); + size_t len = strftime(sstime, sizeof(sstime), "%Y-%m-%d_%H.%M.%S", localtime(&t)); + sstime[min(len, sizeof(sstime)-1)] = '\0'; + concatstring(buf, sstime); + + const char *map = game::getclientmap(), *ssinfo = game::getscreenshotinfo(); + if(map && map[0]) + { + concatstring(buf, "_"); + concatstring(buf, map); + } + if(ssinfo && ssinfo[0]) + { + concatstring(buf, "_"); + concatstring(buf, ssinfo); + } + + for(char *s = buf; *s; s++) if(iscubespace(*s)) *s = '-'; } if(format < 0) { diff --git a/src/fpsgame/fps.cpp b/src/fpsgame/fps.cpp index 1d09123..ed3e492 100644 --- a/src/fpsgame/fps.cpp +++ b/src/fpsgame/fps.cpp @@ -562,6 +562,11 @@ namespace game return showmodeinfo && m_valid(gamemode) ? gamemodes[gamemode - STARTGAMEMODE].info : NULL; } + const char *getscreenshotinfo() + { + return server::modename(gamemode, NULL); + } + void physicstrigger(physent *d, bool local, int floorlevel, int waterlevel, int material) { if (waterlevel>0) { if(material!=MAT_LAVA) playsound(S_SPLASH1, d==player1 ? NULL : &d->o); } diff --git a/src/shared/igame.h b/src/shared/igame.h index 101d250..e07fee1 100644 --- a/src/shared/igame.h +++ b/src/shared/igame.h @@ -58,6 +58,7 @@ namespace game extern void dynentcollide(physent *d, physent *o, const vec &dir); extern const char *getclientmap(); extern const char *getmapinfo(); + extern const char *getscreenshotinfo(); extern void resetgamestate(); extern void suicide(physent *d); extern void newmap(int size);