From c330541c35e97c66df31d1616a69927cf65bf318 Mon Sep 17 00:00:00 2001 From: feos Date: Sun, 12 Jan 2020 21:33:26 +0300 Subject: [PATCH] Revert "cleanup ArgParser" This reverts commit 84593b2d48575a2fa0dde5b80def0cd4c2b65c3f. magical fix to magically broken avi dumping --- BizHawk.Client.EmuHawk/ArgParser.cs | 135 ++++++++++------------ BizHawk.Client.EmuHawk/MainForm.Events.cs | 2 +- BizHawk.Client.EmuHawk/MainForm.cs | 76 ++++++------ 3 files changed, 102 insertions(+), 111 deletions(-) diff --git a/BizHawk.Client.EmuHawk/ArgParser.cs b/BizHawk.Client.EmuHawk/ArgParser.cs index 79963869b8..02dab02522 100644 --- a/BizHawk.Client.EmuHawk/ArgParser.cs +++ b/BizHawk.Client.EmuHawk/ArgParser.cs @@ -5,35 +5,35 @@ namespace BizHawk.Client.EmuHawk { - // parses command line arguments and adds the values to a class attribute - // default values are null for strings and false for boolean - // the last value will overwrite previously set values - // unrecognized parameters are simply ignored or in the worst case assumed to be a ROM name [cmdRom] public class ArgParser + //parses command line arguments and adds the values to a class attribute + //default values are null for strings and false for boolean + //the last value will overwrite previously set values + //unrecognized parameters are simply ignored or in the worst case assumed to be a ROM name [cmdRom] { - public string CmdRom { get; set; } - public string CmdLoadSlot { get; set; } - public string CmdLoadState { get; set; } - public string CmdConfigFile { get; set; } - public string CmdMovie { get; set; } - public string CmdDumpType { get; set; } - public string CmdDumpName { get; set; } - public HashSet CurrAviWriterFrameList { get; set; } = new HashSet(); - public int AutoDumpLength { get; set; } - public bool AutoCloseOnDump { get; set; } - + public string cmdRom = null; + public string cmdLoadSlot = null; + public string cmdLoadState = null; + public string cmdConfigPath = null; + public string cmdConfigFile = null; + public string cmdMovie = null; + public string cmdDumpType = null; + public string cmdDumpName = null; + public HashSet _currAviWriterFrameList; + public int _autoDumpLength; + public bool _autoCloseOnDump = false; // chrome is never shown, even in windowed mode - public bool Chromeless { get; set; } - public bool StartFullscreen { get; set; } - public string LuaScript { get; set; } - public bool LuaConsole { get; set; } - public bool PrintVersion { get; set; } - public int SocketPort { get; set; } - public string SocketIp { get; set; } - public string MmfFilename { get; set; } - public string UrlGet { get; set; } - public string UrlPost { get; set; } - public bool? AudioSync { get; set; } + public bool _chromeless = false; + public bool startFullscreen = false; + public string luaScript = null; + public bool luaConsole = false; + public bool printVersion = false; + public int socket_port = 0; + public string socket_ip = null; + public string mmf_filename = null; + public string URL_get = null; + public string URL_post = null; + public bool? audiosync = null; /// --socket_ip passed without specifying --socket_port or vice-versa public void ParseArguments(string[] args) @@ -52,139 +52,131 @@ public void ParseArguments(string[] args) var arg = args[i].ToLower(); if (arg.StartsWith("--load-slot=")) { - CmdLoadSlot = arg.Substring(arg.IndexOf('=') + 1); + cmdLoadSlot = arg.Substring(arg.IndexOf('=') + 1); } if (arg.StartsWith("--load-state=")) { - CmdLoadState = args[i].Substring(args[i].IndexOf('=') + 1); + cmdLoadState = args[i].Substring(args[i].IndexOf('=') + 1); } if (arg.StartsWith("--config=")) { - CmdConfigFile = args[i].Substring(args[i].IndexOf('=') + 1); + cmdConfigFile = args[i].Substring(args[i].IndexOf('=') + 1); } else if (arg.StartsWith("--movie=")) { - CmdMovie = args[i].Substring(args[i].IndexOf('=') + 1); + cmdMovie = args[i].Substring(args[i].IndexOf('=') + 1); } else if (arg.StartsWith("--dump-type=")) { - CmdDumpType = arg.Substring(arg.IndexOf('=') + 1); + cmdDumpType = arg.Substring(arg.IndexOf('=') + 1); } else if (arg.StartsWith("--dump-frames=")) { string list = arg.Substring(arg.IndexOf('=') + 1); string[] items = list.Split(','); - CurrAviWriterFrameList = new HashSet(); + _currAviWriterFrameList = new HashSet(); foreach (string item in items) { - CurrAviWriterFrameList.Add(int.Parse(item)); + _currAviWriterFrameList.Add(int.Parse(item)); } // automatically set dump length to maximum frame - AutoDumpLength = CurrAviWriterFrameList.OrderBy(x => x).Last(); + _autoDumpLength = _currAviWriterFrameList.OrderBy(x => x).Last(); } else if (arg.StartsWith("--version")) { - PrintVersion = true; + printVersion = true; } else if (arg.StartsWith("--dump-name=")) { - CmdDumpName = args[i].Substring(args[i].IndexOf('=') + 1); + cmdDumpName = args[i].Substring(args[i].IndexOf('=') + 1); } else if (arg.StartsWith("--dump-length=")) { - if (int.TryParse(arg.Substring(arg.IndexOf('=') + 1), out int autoDumpLength)) - { - AutoDumpLength = autoDumpLength; - } + int.TryParse(arg.Substring(arg.IndexOf('=') + 1), out _autoDumpLength); } else if (arg.StartsWith("--dump-close")) { - AutoCloseOnDump = true; + _autoCloseOnDump = true; } else if (arg.StartsWith("--chromeless")) { - Chromeless = true; + _chromeless = true; } else if (arg.StartsWith("--fullscreen")) { - StartFullscreen = true; + startFullscreen = true; } else if (arg.StartsWith("--lua=")) { - LuaScript = args[i].Substring(args[i].IndexOf('=') + 1); - LuaConsole = true; + luaScript = args[i].Substring(args[i].IndexOf('=') + 1); + luaConsole = true; } else if (arg.StartsWith("--luaconsole")) { - LuaConsole = true; + luaConsole = true; } else if (arg.StartsWith("--socket_port=")) { - if (int.TryParse(arg.Substring(arg.IndexOf('=') + 1), out int socketPort)) - { - SocketPort = socketPort; - } + int.TryParse(arg.Substring(arg.IndexOf('=') + 1), out socket_port); } else if (arg.StartsWith("--socket_ip=")) { - SocketIp = arg.Substring(arg.IndexOf('=') + 1); + socket_ip = arg.Substring(arg.IndexOf('=') + 1); } else if (arg.StartsWith("--mmf=")) { - MmfFilename = args[i].Substring(args[i].IndexOf('=') + 1); + mmf_filename = args[i].Substring(args[i].IndexOf('=') + 1); } else if (arg.StartsWith("--url_get=")) { - UrlGet = args[i].Substring(args[i].IndexOf('=') + 1); + URL_get = args[i].Substring(args[i].IndexOf('=') + 1); } else if (arg.StartsWith("--url_post=")) { - UrlPost = args[i].Substring(args[i].IndexOf('=') + 1); + URL_post = args[i].Substring(args[i].IndexOf('=') + 1); } else if (arg.StartsWith("--audiosync=")) { - AudioSync = arg.Substring(arg.IndexOf('=') + 1) == "true"; + audiosync = arg.Substring(arg.IndexOf('=') + 1) == "true"; } else { - CmdRom = args[i]; + cmdRom = args[i]; } } - // initialize HTTP communication - if (UrlGet != null || UrlPost != null) + //initialize HTTP communication + if (URL_get != null || URL_post != null) { GlobalWin.httpCommunication = new Communication.HttpCommunication(); - if (UrlGet != null) + if (URL_get != null) { - GlobalWin.httpCommunication.GetUrl = UrlGet; + GlobalWin.httpCommunication.GetUrl = URL_get; } - if (UrlPost != null) + if (URL_post != null) { - GlobalWin.httpCommunication.PostUrl = UrlPost; + GlobalWin.httpCommunication.PostUrl = URL_post; } } // initialize socket server - if (SocketIp != null && SocketPort > 0) + if (socket_ip != null && socket_port > 0) { GlobalWin.socketServer = new Communication.SocketServer(); - GlobalWin.socketServer.SetIp(SocketIp, SocketPort); + GlobalWin.socketServer.SetIp(socket_ip, socket_port); } - else if (SocketIp == null ^ SocketPort == 0) + else if (socket_ip == null ^ socket_port == 0) { throw new ArgParserException("Socket server needs both --socket_ip and --socket_port. Socket server was not started"); } - // initialize mapped memory files - if (MmfFilename != null) + //initialize mapped memory files + if (mmf_filename != null) { - GlobalWin.memoryMappedFiles = new Communication.MemoryMappedFiles - { - Filename = MmfFilename - }; + GlobalWin.memoryMappedFiles = new Communication.MemoryMappedFiles(); + GlobalWin.memoryMappedFiles.Filename = mmf_filename; } } @@ -193,7 +185,6 @@ public static string GetCmdConfigFile(string[] args) return args.FirstOrDefault(arg => arg.StartsWith("--config=", StringComparison.InvariantCultureIgnoreCase))?.Substring(9); } } - public class ArgParserException : Exception { public ArgParserException(string message) : base(message) diff --git a/BizHawk.Client.EmuHawk/MainForm.Events.cs b/BizHawk.Client.EmuHawk/MainForm.Events.cs index 331188650f..a56761222f 100644 --- a/BizHawk.Client.EmuHawk/MainForm.Events.cs +++ b/BizHawk.Client.EmuHawk/MainForm.Events.cs @@ -2966,7 +2966,7 @@ private void MainFormContextMenu_Opening(object sender, System.ComponentModel.Ca bool showMenuVisible = _inFullscreen || !MainMenuStrip.Visible; // need to always be able to restore this as an emergency measure - if (_argParser.Chromeless) + if (_argParser._chromeless) { showMenuVisible = true; // I decided this was always possible in chrome-less mode, we'll see what they think } diff --git a/BizHawk.Client.EmuHawk/MainForm.cs b/BizHawk.Client.EmuHawk/MainForm.cs index 2fabf730c5..49c0b91cf3 100644 --- a/BizHawk.Client.EmuHawk/MainForm.cs +++ b/BizHawk.Client.EmuHawk/MainForm.cs @@ -370,14 +370,14 @@ void SetImages() Location = new Point(Config.MainWndx, Config.MainWndy); } - if (_argParser.CmdRom != null) + if (_argParser.cmdRom != null) { // Commandline should always override auto-load - var ioa = OpenAdvancedSerializer.ParseWithLegacy(_argParser.CmdRom); - LoadRom(_argParser.CmdRom, new LoadRomArgs { OpenAdvanced = ioa }); + var ioa = OpenAdvancedSerializer.ParseWithLegacy(_argParser.cmdRom); + LoadRom(_argParser.cmdRom, new LoadRomArgs { OpenAdvanced = ioa }); if (Game == null) { - MessageBox.Show($"Failed to load {_argParser.CmdRom} specified on commandline"); + MessageBox.Show($"Failed to load {_argParser.cmdRom} specified on commandline"); } } else if (Config.RecentRoms.AutoLoad && !Config.RecentRoms.Empty) @@ -385,12 +385,12 @@ void SetImages() LoadRomFromRecent(Config.RecentRoms.MostRecent); } - if (_argParser.AudioSync.HasValue) + if (_argParser.audiosync.HasValue) { - Config.VideoWriterAudioSync = _argParser.AudioSync.Value; + Config.VideoWriterAudioSync = _argParser.audiosync.Value; } - if (_argParser.CmdMovie != null) + if (_argParser.cmdMovie != null) { _suppressSyncSettingsWarning = true; // We don't want to be nagged if we are attempting to automate if (Game == null) @@ -401,24 +401,24 @@ void SetImages() // If user picked a game, then do the commandline logic if (!Game.IsNullInstance()) { - var movie = MovieService.Get(_argParser.CmdMovie); + var movie = MovieService.Get(_argParser.cmdMovie); MovieSession.ReadOnly = true; // if user is dumping and didn't supply dump length, make it as long as the loaded movie - if (_argParser.AutoDumpLength == 0) + if (_argParser._autoDumpLength == 0) { - _argParser.AutoDumpLength = movie.InputLogLength; + _argParser._autoDumpLength = movie.InputLogLength; } // Copy pasta from drag & drop - if (MovieImport.IsValidMovieExtension(Path.GetExtension(_argParser.CmdMovie))) + if (MovieImport.IsValidMovieExtension(Path.GetExtension(_argParser.cmdMovie))) { - ProcessMovieImport(_argParser.CmdMovie, true); + ProcessMovieImport(_argParser.cmdMovie, true); } else { StartNewMovie(movie, false); - Config.RecentMovies.Add(_argParser.CmdMovie); + Config.RecentMovies.Add(_argParser.cmdMovie); } _suppressSyncSettingsWarning = false; @@ -445,20 +445,20 @@ void SetImages() } } - if (_argParser.StartFullscreen || Config.StartFullscreen) + if (_argParser.startFullscreen || Config.StartFullscreen) { _needsFullscreenOnLoad = true; } if (!Game.IsNullInstance()) { - if (_argParser.CmdLoadState != null) + if (_argParser.cmdLoadState != null) { - LoadState(_argParser.CmdLoadState, Path.GetFileName(_argParser.CmdLoadState)); + LoadState(_argParser.cmdLoadState, Path.GetFileName(_argParser.cmdLoadState)); } - else if (_argParser.CmdLoadSlot != null) + else if (_argParser.cmdLoadSlot != null) { - LoadQuickSave($"QuickSave{_argParser.CmdLoadSlot}"); + LoadQuickSave($"QuickSave{_argParser.cmdLoadSlot}"); } else if (Config.AutoLoadLastSaveSlot) { @@ -467,15 +467,15 @@ void SetImages() } //start Lua Console if requested in the command line arguments - if (_argParser.LuaConsole) + if (_argParser.luaConsole) { Tools.Load(); } //load Lua Script if requested in the command line arguments - if (_argParser.LuaScript != null) + if (_argParser.luaScript != null) { - if (OSTailoredCode.IsUnixHost) Console.WriteLine($"The Lua environment can currently only be created on Windows, {_argParser.LuaScript} will not be loaded."); - else Tools.LuaConsole.LoadLuaFile(_argParser.LuaScript); + if (OSTailoredCode.IsUnixHost) Console.WriteLine($"The Lua environment can currently only be created on Windows, {_argParser.luaScript} will not be loaded."); + else Tools.LuaConsole.LoadLuaFile(_argParser.luaScript); } SetStatusBar(); @@ -486,10 +486,10 @@ void SetImages() } // start dumping, if appropriate - if (_argParser.CmdDumpType != null && _argParser.CmdDumpName != null) + if (_argParser.cmdDumpType != null && _argParser.cmdDumpName != null) { if (OSTailoredCode.IsUnixHost) Console.WriteLine("A/V dump requires Win32 API calls, ignored"); - else RecordAv(_argParser.CmdDumpType, _argParser.CmdDumpName); + else RecordAv(_argParser.cmdDumpType, _argParser.cmdDumpName); } SetMainformMovieInfo(); @@ -517,7 +517,7 @@ public int ProgramRunLoop() } // Simply exit the program if the version is asked for - if (_argParser.PrintVersion) + if (_argParser.printVersion) { // Print the version Console.WriteLine(VersionInfo.GetEmuVersion()); @@ -1113,15 +1113,15 @@ private void SynchChrome() { // TODO - maybe apply a hack tracked during fullscreen here to override it FormBorderStyle = FormBorderStyle.None; - MainMenuStrip.Visible = Config.DispChrome_MenuFullscreen && !_argParser.Chromeless; - MainStatusBar.Visible = Config.DispChrome_StatusBarFullscreen && !_argParser.Chromeless; + MainMenuStrip.Visible = Config.DispChrome_MenuFullscreen && !_argParser._chromeless; + MainStatusBar.Visible = Config.DispChrome_StatusBarFullscreen && !_argParser._chromeless; } else { - MainStatusBar.Visible = Config.DispChrome_StatusBarWindowed && !_argParser.Chromeless; - MainMenuStrip.Visible = Config.DispChrome_MenuWindowed && !_argParser.Chromeless; - MaximizeBox = MinimizeBox = Config.DispChrome_CaptionWindowed && !_argParser.Chromeless; - if (Config.DispChrome_FrameWindowed == 0 || _argParser.Chromeless) + MainStatusBar.Visible = Config.DispChrome_StatusBarWindowed && !_argParser._chromeless; + MainMenuStrip.Visible = Config.DispChrome_MenuWindowed && !_argParser._chromeless; + MaximizeBox = MinimizeBox = Config.DispChrome_CaptionWindowed && !_argParser._chromeless; + if (Config.DispChrome_FrameWindowed == 0 || _argParser._chromeless) { FormBorderStyle = FormBorderStyle.None; } @@ -1552,7 +1552,7 @@ public void SetWindowText() } } - if (!Config.DispChrome_CaptionWindowed || _argParser.Chromeless) + if (!Config.DispChrome_CaptionWindowed || _argParser._chromeless) { str = ""; } @@ -3413,9 +3413,9 @@ private void AvFrameAdvance() try { // is this the best time to handle this? or deeper inside? - if (_argParser.CurrAviWriterFrameList != null) + if (_argParser._currAviWriterFrameList != null) { - if (!_argParser.CurrAviWriterFrameList.Contains(Emulator.Frame)) + if (!_argParser._currAviWriterFrameList.Contains(Emulator.Frame)) { goto HANDLE_AUTODUMP; } @@ -3498,13 +3498,13 @@ private void AvFrameAdvance() } HANDLE_AUTODUMP: - if (_argParser.AutoDumpLength > 0) + if (_argParser._autoDumpLength > 0) { - _argParser.AutoDumpLength--; - if (_argParser.AutoDumpLength == 0) // finish + _argParser._autoDumpLength--; + if (_argParser._autoDumpLength == 0) // finish { StopAv(); - if (_argParser.AutoCloseOnDump) + if (_argParser._autoCloseOnDump) { _exitRequestPending = true; }