for fixes to bk2 and tasmovie creation, fix a conversion bug that did StartsFromSavestate TasMovie logic for movies that start from saveram

This commit is contained in:
adelikat 2020-05-23 14:08:36 -05:00
parent 22bab8361a
commit 1e9dcd2e9b
5 changed files with 16 additions and 11 deletions

View File

@ -18,11 +18,11 @@ namespace BizHawk.Client.Common
}
/// <summary>
/// Creates a <see cref="ITasSession"/> instance
/// Creates a <see cref="ITasMovie"/> instance
/// </summary>
public static ITasMovie CreateTas(bool startsFromSavestate = false)
public static ITasMovie CreateTas(string filename, bool startsFromSavestate = false)
{
return new TasMovie(startsFromSavestate: startsFromSavestate);
return new TasMovie(filename, startsFromSavestate);
}
public static string StandardMovieExtension => Bk2Movie.Extension;

View File

@ -8,9 +8,14 @@ namespace BizHawk.Client.Common
{
private Bk2Controller _adapter;
internal Bk2Movie(string filename = null)
internal Bk2Movie(string filename)
{
Filename = filename ?? string.Empty;
if (string.IsNullOrWhiteSpace(filename))
{
throw new ArgumentNullException($"{nameof(filename)} can not be null.");
}
Filename = filename;
Header[HeaderKeys.MovieVersion] = "BizHawk v2.0.0";
}

View File

@ -230,7 +230,7 @@ namespace BizHawk.Client.Common.MovieConversionExtensions
}
}
var tas = new TasMovie(newFilename, true) { SaveRam = saveRam };
var tas = new TasMovie(newFilename) { SaveRam = saveRam };
tas.TasStateManager.Clear();
tas.LagLog.Clear();

View File

@ -13,7 +13,7 @@ namespace BizHawk.Client.Common
public new const string Extension = "tasproj";
/// <exception cref="InvalidOperationException">loaded core does not implement <see cref="IStatable"/></exception>
internal TasMovie(string path = null, bool startsFromSavestate = false) : base(path)
internal TasMovie(string path, bool startsFromSavestate = false) : base(path)
{
if (!Global.Emulator.HasSavestates())
{

View File

@ -623,8 +623,7 @@ namespace BizHawk.Client.EmuHawk
return false;
}
var newMovie = MovieService.CreateTas(startsFromSavestate: startsFromSavestate);
newMovie.Filename = file.FullName;
var newMovie = MovieService.CreateTas(file.FullName, startsFromSavestate);
newMovie.BindMarkersToInput = Settings.BindMarkersToInput;
newMovie.TasStateManager.InvalidateCallback = GreenzoneInvalidated;
@ -678,9 +677,10 @@ namespace BizHawk.Client.EmuHawk
return;
}
var tasMovie = MovieService.CreateTas();
var filename = DefaultTasProjName(); // TODO don't do this, take over any mainform actions that can crash without a filename
var tasMovie = MovieService.CreateTas(filename);
tasMovie.BindMarkersToInput = Settings.BindMarkersToInput;
tasMovie.Filename = DefaultTasProjName(); // TODO don't do this, take over any mainform actions that can crash without a filename
tasMovie.TasStateManager.InvalidateCallback = GreenzoneInvalidated;
tasMovie.PropertyChanged += TasMovie_OnPropertyChanged;