diff --git a/BizHawk.Client.EmuHawk/movie/MovieDetails.cs b/BizHawk.Client.EmuHawk/movie/MovieDetails.cs index eb374e51c8..de1892a421 100644 --- a/BizHawk.Client.EmuHawk/movie/MovieDetails.cs +++ b/BizHawk.Client.EmuHawk/movie/MovieDetails.cs @@ -7,15 +7,8 @@ namespace BizHawk.Client.EmuHawk /// public class MovieDetails { - public string Keys { get; set; } - public string Values { get; set; } - public Color BackgroundColor { get; set; } - - public MovieDetails() - { - Keys = ""; - Values = ""; - BackgroundColor = Color.White; - } + public string Keys { get; set; } = ""; + public string Values { get; set; } = ""; + public Color BackgroundColor { get; set; } = Color.White; } } diff --git a/BizHawk.Client.EmuHawk/movie/PlayMovie.cs b/BizHawk.Client.EmuHawk/movie/PlayMovie.cs index 2b5d95e8d0..409736b004 100644 --- a/BizHawk.Client.EmuHawk/movie/PlayMovie.cs +++ b/BizHawk.Client.EmuHawk/movie/PlayMovie.cs @@ -15,7 +15,7 @@ namespace BizHawk.Client.EmuHawk { public partial class PlayMovie : Form { - private readonly PlatformFrameRates PlatformFrameRates = new PlatformFrameRates(); + private readonly PlatformFrameRates _platformFrameRates = new PlatformFrameRates(); private List _movieList = new List(); private bool _sortReverse; @@ -51,7 +51,7 @@ namespace BizHawk.Client.EmuHawk e.Item = new ListViewItem(entry.Filename); e.Item.SubItems.Add(entry.SystemID); e.Item.SubItems.Add(entry.GameName); - e.Item.SubItems.Add(PlatformFrameRates.MovieTime(entry).ToString(@"hh\:mm\:ss\.fff")); + e.Item.SubItems.Add(_platformFrameRates.MovieTime(entry).ToString(@"hh\:mm\:ss\.fff")); } private void Run() @@ -65,38 +65,36 @@ namespace BizHawk.Client.EmuHawk private int? AddMovieToList(string filename, bool force) { - using (var file = new HawkFile(filename)) + using var file = new HawkFile(filename); + if (!file.Exists) { - if (!file.Exists) - { - return null; - } - - var movie = PreLoadMovieFile(file, force); - if (movie == null) - { - return null; - } - - int? index; - lock (_movieList) - { - // need to check IsDuplicateOf within the lock - index = IsDuplicateOf(filename); - if (index.HasValue) - { - return index; - } - - _movieList.Add(movie); - index = _movieList.Count - 1; - } - - _sortReverse = false; - _sortedCol = ""; - - return index; + return null; } + + var movie = PreLoadMovieFile(file, force); + if (movie == null) + { + return null; + } + + int? index; + lock (_movieList) + { + // need to check IsDuplicateOf within the lock + index = IsDuplicateOf(filename); + if (index.HasValue) + { + return index; + } + + _movieList.Add(movie); + index = _movieList.Count - 1; + } + + _sortReverse = false; + _sortedCol = ""; + + return index; } private int? IsDuplicateOf(string filename) @@ -177,7 +175,7 @@ namespace BizHawk.Client.EmuHawk { foreach (var ext in MovieService.MovieExtensions) { - if (Path.GetExtension(_movieList[indices[i]].Filename).ToUpper() == $".{ext}") + if (Path.GetExtension(_movieList[indices[i]].Filename)?.ToUpper() == $".{ext}") { tas.Add(i); } @@ -233,7 +231,7 @@ namespace BizHawk.Client.EmuHawk var dpTodo = new Queue(); var fpTodo = new List(); dpTodo.Enqueue(directory); - Dictionary ordinals = new Dictionary(); + var ordinals = new Dictionary(); while (dpTodo.Count > 0) { @@ -242,9 +240,9 @@ namespace BizHawk.Client.EmuHawk // enqueue subdirectories if appropriate if (Global.Config.PlayMovie_IncludeSubdir) { - foreach (var subdir in Directory.GetDirectories(dp)) + foreach (var subDir in Directory.GetDirectories(dp)) { - dpTodo.Enqueue(subdir); + dpTodo.Enqueue(subDir); } } @@ -290,7 +288,7 @@ namespace BizHawk.Client.EmuHawk { var filePaths = (string[])e.Data.GetData(DataFormats.FileDrop); - foreach (var path in filePaths.Where(path => MovieService.MovieExtensions.Contains(Path.GetExtension(path).Replace(".", "")))) + foreach (var path in filePaths.Where(path => MovieService.MovieExtensions.Contains(Path.GetExtension(path)?.Replace(".", "")))) { AddMovieToList(path, force: true); } @@ -312,9 +310,10 @@ namespace BizHawk.Client.EmuHawk .Append(_movieList[index].Filename).Append('\t') .Append(_movieList[index].SystemID).Append('\t') .Append(_movieList[index].GameName).Append('\t') - .Append(PlatformFrameRates.MovieTime(_movieList[index]).ToString(@"hh\:mm\:ss\.fff")) + .Append(_platformFrameRates.MovieTime(_movieList[index]).ToString(@"hh\:mm\:ss\.fff")) .AppendLine(); } + Clipboard.SetDataObject(copyStr.ToString()); } } @@ -394,8 +393,6 @@ namespace BizHawk.Client.EmuHawk var item = new ListViewItem(kvp.Key); item.SubItems.Add(kvp.Value); - bool add = true; - switch (kvp.Key) { case HeaderKeys.SHA1: @@ -417,7 +414,7 @@ namespace BizHawk.Client.EmuHawk // the problem is that for GameGear and SG100, those mismatch, resulting in false positive here // I have a patch to make GG and SG appear as platforms in movie header (issue #1246) // but even with it, for all the old movies, this false positive would have to be worked around anyway - // TODO: actually check header flags like "IsGGMode" and "IsSegaCDMode" (those are never parsed by bizhawk) + // TODO: actually check header flags like "IsGGMode" and "IsSegaCDMode" (those are never parsed by BizHawk) if (kvp.Value != Global.Emulator.SystemId) { item.BackColor = Color.Pink; @@ -425,17 +422,16 @@ namespace BizHawk.Client.EmuHawk break; } - if(add) - DetailsView.Items.Add(item); + DetailsView.Items.Add(item); } - var FpsItem = new ListViewItem("Fps"); - FpsItem.SubItems.Add($"{Fps(_movieList[firstIndex]):0.#######}"); - DetailsView.Items.Add(FpsItem); + var fpsItem = new ListViewItem("Fps"); + fpsItem.SubItems.Add($"{Fps(_movieList[firstIndex]):0.#######}"); + DetailsView.Items.Add(fpsItem); - var FramesItem = new ListViewItem("Frames"); - FramesItem.SubItems.Add(_movieList[firstIndex].FrameCount.ToString()); - DetailsView.Items.Add(FramesItem); + var framesItem = new ListViewItem("Frames"); + framesItem.SubItems.Add(_movieList[firstIndex].FrameCount.ToString()); + DetailsView.Items.Add(framesItem); CommentsBtn.Enabled = _movieList[firstIndex].Comments.Any(); SubtitlesBtn.Enabled = _movieList[firstIndex].Subtitles.Any(); } @@ -443,8 +439,8 @@ namespace BizHawk.Client.EmuHawk public double Fps(IMovie movie) { var system = movie.HeaderEntries[HeaderKeys.PLATFORM]; - var pal = movie.HeaderEntries.ContainsKey(HeaderKeys.PAL) && - movie.HeaderEntries[HeaderKeys.PAL] == "1"; + var pal = movie.HeaderEntries.ContainsKey(HeaderKeys.PAL) + && movie.HeaderEntries[HeaderKeys.PAL] == "1"; return new PlatformFrameRates()[system, pal]; @@ -611,14 +607,9 @@ namespace BizHawk.Client.EmuHawk if (StopOnFrameCheckbox.Checked && (StopOnFrameTextBox.ToRawInt().HasValue || LastFrameCheckbox.Checked)) { - if (LastFrameCheckbox.Checked) - { - GlobalWin.MainForm.PauseOnFrame = Global.MovieSession.Movie.InputLogLength; - } - else - { - GlobalWin.MainForm.PauseOnFrame = StopOnFrameTextBox.ToRawInt(); - } + GlobalWin.MainForm.PauseOnFrame = LastFrameCheckbox.Checked + ? Global.MovieSession.Movie.InputLogLength + : StopOnFrameTextBox.ToRawInt(); } Close(); @@ -631,7 +622,7 @@ namespace BizHawk.Client.EmuHawk #endregion - private bool _programmaticallyChangingStopFrameCheckbox = false; + private bool _programmaticallyChangingStopFrameCheckbox; private void StopOnFrameCheckbox_CheckedChanged(object sender, EventArgs e) { if (!_programmaticallyChangingStopFrameCheckbox) @@ -649,7 +640,7 @@ namespace BizHawk.Client.EmuHawk private void LastFrameCheckbox_CheckedChanged(object sender, EventArgs e) { - if (LastFrameCheckbox.Checked == true) + if (LastFrameCheckbox.Checked) { _programmaticallyChangingStopFrameCheckbox = true; StopOnFrameCheckbox.Checked = true; diff --git a/BizHawk.Client.EmuHawk/movie/RecordMovie.cs b/BizHawk.Client.EmuHawk/movie/RecordMovie.cs index 7512fdbbb0..9489607ffb 100644 --- a/BizHawk.Client.EmuHawk/movie/RecordMovie.cs +++ b/BizHawk.Client.EmuHawk/movie/RecordMovie.cs @@ -3,7 +3,6 @@ using System.IO; using System.Windows.Forms; using System.Linq; -using BizHawk.Common.ReflectionExtensions; using BizHawk.Emulation.Common; using BizHawk.Emulation.Common.IEmulatorExtensions; using BizHawk.Client.Common; @@ -16,15 +15,15 @@ namespace BizHawk.Client.EmuHawk // TODO - Allow relative paths in record textbox public partial class RecordMovie : Form { - private IEmulator Emulator; + private readonly IEmulator _emulator; public RecordMovie(IEmulator core) { InitializeComponent(); - Emulator = core; + _emulator = core; - if (!Emulator.HasSavestates()) + if (!_emulator.HasSavestates()) { StartFromCombo.Items.Remove( StartFromCombo.Items @@ -33,7 +32,7 @@ namespace BizHawk.Client.EmuHawk .ToLower() == "now")); } - if (!Emulator.HasSaveRam()) + if (!_emulator.HasSaveRam()) { StartFromCombo.Items.Remove( StartFromCombo.Items @@ -92,9 +91,9 @@ namespace BizHawk.Client.EmuHawk Directory.CreateDirectory(fileInfo.DirectoryName); } - if (StartFromCombo.SelectedItem.ToString() == "Now" && Emulator.HasSavestates()) + if (StartFromCombo.SelectedItem.ToString() == "Now" && _emulator.HasSavestates()) { - var core = Emulator.AsStatable(); + var core = _emulator.AsStatable(); movieToRecord.StartsFromSavestate = true; movieToRecord.StartsFromSaveRam = false; @@ -105,27 +104,21 @@ namespace BizHawk.Client.EmuHawk } else { - using (var sw = new StringWriter()) - { - core.SaveStateText(sw); - movieToRecord.TextSavestate = sw.ToString(); - } + using var sw = new StringWriter(); + core.SaveStateText(sw); + movieToRecord.TextSavestate = sw.ToString(); } // TODO: do we want to support optionally not saving this? - if (true) + movieToRecord.SavestateFramebuffer = new int[0]; + if (_emulator.HasVideoProvider()) { - // hack: some IMovies eat the framebuffer, so don't bother with them - movieToRecord.SavestateFramebuffer = new int[0]; - if (movieToRecord.SavestateFramebuffer != null && Emulator.HasVideoProvider()) - { - movieToRecord.SavestateFramebuffer = (int[])Emulator.AsVideoProvider().GetVideoBuffer().Clone(); - } + movieToRecord.SavestateFramebuffer = (int[])_emulator.AsVideoProvider().GetVideoBuffer().Clone(); } } - else if (StartFromCombo.SelectedItem.ToString() == "SaveRam" && Emulator.HasSaveRam()) + else if (StartFromCombo.SelectedItem.ToString() == "SaveRam" && _emulator.HasSaveRam()) { - var core = Emulator.AsSaveRam(); + var core = _emulator.AsSaveRam(); movieToRecord.StartsFromSavestate = false; movieToRecord.StartsFromSaveRam = true; movieToRecord.SaveRam = core.CloneSaveRam(); @@ -155,7 +148,7 @@ namespace BizHawk.Client.EmuHawk } private void BrowseBtn_Click(object sender, EventArgs e) - { + { string movieFolderPath = PathManager.MakeAbsolutePath(Global.Config.PathEntries.MoviesPathFragment, null); // Create movie folder if it doesn't already exist @@ -168,9 +161,8 @@ namespace BizHawk.Client.EmuHawk } catch (Exception movieDirException) { - if (movieDirException is IOException || - movieDirException is UnauthorizedAccessException || - movieDirException is PathTooLongException) + if (movieDirException is IOException + || movieDirException is UnauthorizedAccessException) { //TO DO : Pass error to user? } diff --git a/BizHawk.Client.EmuHawk/movie/SubtitleMaker.cs b/BizHawk.Client.EmuHawk/movie/SubtitleMaker.cs index 3cbb2c2e77..86111383ba 100644 --- a/BizHawk.Client.EmuHawk/movie/SubtitleMaker.cs +++ b/BizHawk.Client.EmuHawk/movie/SubtitleMaker.cs @@ -8,7 +8,7 @@ namespace BizHawk.Client.EmuHawk { public partial class SubtitleMaker : Form { - public Subtitle Sub = new Subtitle(); + public Subtitle Sub { get; set; } = new Subtitle(); public SubtitleMaker() {