diff --git a/BizHawk.Client.EmuHawk/MainForm.cs b/BizHawk.Client.EmuHawk/MainForm.cs index ce9faadf53..396c167abe 100644 --- a/BizHawk.Client.EmuHawk/MainForm.cs +++ b/BizHawk.Client.EmuHawk/MainForm.cs @@ -870,9 +870,27 @@ namespace BizHawk.Client.EmuHawk public void TakeScreenshot() { - TakeScreenshot( - String.Format(PathManager.ScreenshotPrefix(Global.Game) + ".{0:yyyy-MM-dd HH.mm.ss}.png", DateTime.Now) - ); + string fmt = "{0}.{1:yyyy-MM-dd HH.mm.ss}{2}.png"; + string prefix = PathManager.ScreenshotPrefix(Global.Game); + var ts = DateTime.Now; + + string fname_bare = string.Format(fmt, prefix, ts, ""); + string fname = string.Format(fmt, prefix, ts, " (0)"); + + //if this file already exists, + //1. move the original file to a numbered one (to keep a good filesystem sort ordering) + if (File.Exists(fname_bare)) + File.Move(fname_bare, fname); + else fname = fname_bare; + //2. create next one sequentially named + int seq = 0; + while (File.Exists(fname)) + { + var sequence = string.Format(" ({0})", seq++); + fname = string.Format(fmt, prefix, ts, sequence); + } + + TakeScreenshot(fname); } public void TakeScreenshot(string path)