simplify the construction of TasMovie but not requiring a startsFromSaveState param that doesn't actually set the movie's StartsFromSavestate bool, it just defined the text of the first marker

This commit is contained in:
adelikat 2020-06-04 19:20:05 -05:00
parent 92bbf768af
commit e11509421d
4 changed files with 20 additions and 8 deletions

View File

@ -6,12 +6,12 @@ namespace BizHawk.Client.Common
{
public static class MovieService
{
public static IMovie Get(string path, bool startsFromSavestate = false)
public static IMovie Get(string path)
{
// TODO: change IMovies to take HawkFiles only and not path
if (Path.GetExtension(path)?.EndsWith("tasproj") ?? false)
{
return new TasMovie(path, startsFromSavestate);
return new TasMovie(path);
}
return new Bk2Movie(path);

View File

@ -48,7 +48,7 @@ namespace BizHawk.Client.Common
}
}
public bool StartsFromSavestate
public virtual bool StartsFromSavestate
{
get => Header.ContainsKey(HeaderKeys.StartsFromSavestate) && bool.Parse(Header[HeaderKeys.StartsFromSavestate]);
set

View File

@ -19,7 +19,7 @@ namespace BizHawk.Client.Common.MovieConversionExtensions
{
string newFilename = GetNewFileName(old.Filename);
var tas = (ITasMovie)MovieService.Get(newFilename, old.StartsFromSavestate);
var tas = (ITasMovie)MovieService.Get(newFilename);
for (var i = 0; i < old.InputLogLength; i++)
{
@ -49,6 +49,7 @@ namespace BizHawk.Client.Common.MovieConversionExtensions
tas.Subtitles.Add(sub);
}
tas.StartsFromSavestate = old.StartsFromSavestate;
tas.TextSavestate = old.TextSavestate;
tas.BinarySavestate = old.BinarySavestate;
tas.SaveRam = old.SaveRam;
@ -97,7 +98,7 @@ namespace BizHawk.Client.Common.MovieConversionExtensions
{
string newFilename = GetNewFileName(old.Filename);
var tas = (ITasMovie)MovieService.Get(newFilename, true);
var tas = (ITasMovie)MovieService.Get(newFilename);
tas.BinarySavestate = savestate;
tas.LagLog.Clear();
@ -154,7 +155,7 @@ namespace BizHawk.Client.Common.MovieConversionExtensions
{
string newFilename = GetNewFileName(old.Filename);
var tas = (ITasMovie) MovieService.Get(newFilename, false);
var tas = (ITasMovie) MovieService.Get(newFilename);
tas.SaveRam = saveRam;
tas.TasStateManager.Clear();
tas.LagLog.Clear();

View File

@ -13,7 +13,7 @@ namespace BizHawk.Client.Common
private IInputPollable _inputPollable;
/// <exception cref="InvalidOperationException">loaded core does not implement <see cref="IStatable"/></exception>
internal TasMovie(string path, bool startsFromSavestate) : base(path)
internal TasMovie(string path) : base(path)
{
Branches = new TasBranchCollection(this);
ChangeLog = new TasMovieChangeLog(this);
@ -21,7 +21,7 @@ namespace BizHawk.Client.Common
Header[HeaderKeys.MovieVersion] = "BizHawk v2.0 Tasproj v1.0";
Markers = new TasMovieMarkerList(this);
Markers.CollectionChanged += Markers_CollectionChanged;
Markers.Add(0, startsFromSavestate ? "Savestate" : "Power on");
Markers.Add(0, "Power on");
}
public override void Attach(IMovieSession session, IEmulator emulator)
@ -38,9 +38,20 @@ namespace BizHawk.Client.Common
_inputPollable = emulator.AsInputPollable();
TasStateManager.Attach(emulator);
base.Attach(session, emulator);
}
public override bool StartsFromSavestate
{
get => base.StartsFromSavestate;
set
{
Markers.Add(0, value ? "Savestate" : "Power on");
base.StartsFromSavestate = value;
}
}
public IStringLog VerificationLog { get; } = StringLogUtil.MakeStringLog(); // For movies that do not begin with power-on, this is the input required to get into the initial state
public ITasBranchCollection Branches { get; }
public ITasSession TasSession { get; private set; } = new TasSession();