consolidate movie instantiation code more

This commit is contained in:
adelikat 2020-05-23 15:04:30 -05:00
parent 1e9dcd2e9b
commit a540a2fe85
5 changed files with 6 additions and 17 deletions

View File

@ -6,25 +6,17 @@ namespace BizHawk.Client.Common
{
public static class MovieService
{
public static IMovie Get(string path)
public static IMovie Get(string path, bool startsFromSavestate = false)
{
// TODO: change IMovies to take HawkFiles only and not path
if (Path.GetExtension(path)?.EndsWith("tasproj") ?? false)
{
return new TasMovie(path);
return new TasMovie(path, startsFromSavestate);
}
return new Bk2Movie(path);
}
/// <summary>
/// Creates a <see cref="ITasMovie"/> instance
/// </summary>
public static ITasMovie CreateTas(string filename, bool startsFromSavestate = false)
{
return new TasMovie(filename, startsFromSavestate);
}
public static string StandardMovieExtension => Bk2Movie.Extension;
public static string TasMovieExtension => TasMovie.Extension;

View File

@ -230,7 +230,7 @@ namespace BizHawk.Client.Common.MovieConversionExtensions
}
}
var tas = new TasMovie(newFilename) { SaveRam = saveRam };
var tas = new TasMovie(newFilename, false) { SaveRam = saveRam };
tas.TasStateManager.Clear();
tas.LagLog.Clear();
@ -246,7 +246,6 @@ namespace BizHawk.Client.Common.MovieConversionExtensions
}
tas.StartsFromSaveRam = true;
tas.StartsFromSavestate = false;
tas.SyncSettingsJson = old.SyncSettingsJson;
tas.Comments.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, bool startsFromSavestate = false) : base(path)
internal TasMovie(string path, bool startsFromSavestate) : base(path)
{
if (!Global.Emulator.HasSavestates())
{

View File

@ -105,7 +105,6 @@ namespace BizHawk.Client.EmuHawk
var core = _emulator.AsStatable();
movieToRecord.StartsFromSavestate = true;
movieToRecord.StartsFromSaveRam = false;
if (_config.SaveStateType == SaveStateTypeE.Binary)
{
@ -128,7 +127,6 @@ namespace BizHawk.Client.EmuHawk
else if (StartFromCombo.SelectedItem.ToString() == "SaveRam" && _emulator.HasSaveRam())
{
var core = _emulator.AsSaveRam();
movieToRecord.StartsFromSavestate = false;
movieToRecord.StartsFromSaveRam = true;
movieToRecord.SaveRam = core.CloneSaveRam();
}

View File

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