Clean up some redundant code.

This commit is contained in:
SuuperW 2020-08-03 12:52:57 -05:00
parent 12ef0fe35b
commit e3e2a81728
3 changed files with 19 additions and 44 deletions

View File

@ -100,7 +100,9 @@ namespace BizHawk.Client.Common
// States can't be easily moved over, because they contain the frame number. // States can't be easily moved over, because they contain the frame number.
// TODO? I'm not sure how this would be done. // TODO? I'm not sure how this would be done.
// Also TODO: Properly manage disposal of the old movie/TasStateManager instead of clearing it here.
old.TasStateManager.Clear(); old.TasStateManager.Clear();
old.ClearChanges(); // avoid issue with asking to save the cleared state log
// Lag Log // Lag Log
tas.LagLog.FromLagLog(old.LagLog); tas.LagLog.FromLagLog(old.LagLog);
@ -138,6 +140,7 @@ namespace BizHawk.Client.Common
tas.TasStateManager.Settings = old.TasStateManager.Settings; tas.TasStateManager.Settings = old.TasStateManager.Settings;
tas.Save(); tas.Save();
tas.ClearChanges();
return tas; return tas;
} }
@ -179,6 +182,7 @@ namespace BizHawk.Client.Common
tas.TasStateManager.Settings = old.TasStateManager.Settings; tas.TasStateManager.Settings = old.TasStateManager.Settings;
tas.Save(); tas.Save();
tas.ClearChanges();
return tas; return tas;
} }

View File

@ -43,7 +43,7 @@ namespace BizHawk.Client.EmuHawk
Emulator.Frame, StatableEmulator.CloneSavestate()); Emulator.Frame, StatableEmulator.CloneSavestate());
MainForm.PauseEmulator(); MainForm.PauseEmulator();
LoadFile(new FileInfo(newProject.Filename), true); LoadFile(new FileInfo(newProject.Filename));
} }
} }
@ -63,7 +63,7 @@ namespace BizHawk.Client.EmuHawk
var newProject = CurrentTasMovie.ConvertToSaveRamAnchoredMovie( var newProject = CurrentTasMovie.ConvertToSaveRamAnchoredMovie(
SaveRamEmulator.CloneSaveRam()); SaveRamEmulator.CloneSaveRam());
MainForm.PauseEmulator(); MainForm.PauseEmulator();
LoadFile(new FileInfo(newProject.Filename), true); LoadFile(new FileInfo(newProject.Filename));
} }
else else
{ {

View File

@ -218,7 +218,7 @@ namespace BizHawk.Client.EmuHawk
// Start Scenario 2: A tasproj is already active // Start Scenario 2: A tasproj is already active
else if (MovieSession.Movie.IsActive() && MovieSession.Movie is ITasMovie) else if (MovieSession.Movie.IsActive() && MovieSession.Movie is ITasMovie)
{ {
bool result = LoadFile(new FileInfo(CurrentTasMovie.Filename), gotoFrame: Emulator.Frame); bool result = LoadFile(new FileInfo(CurrentTasMovie.Filename), Emulator.Frame);
if (!result) if (!result)
{ {
TasView.AllColumns.Clear(); TasView.AllColumns.Clear();
@ -529,7 +529,7 @@ namespace BizHawk.Client.EmuHawk
MainForm.SetMainformMovieInfo(); MainForm.SetMainformMovieInfo();
} }
private bool LoadFile(FileInfo file, bool startsFromSavestate = false, int gotoFrame = 0) private bool LoadFile(FileInfo file, int gotoFrame = 0)
{ {
if (!file.Exists) if (!file.Exists)
{ {
@ -537,31 +537,24 @@ namespace BizHawk.Client.EmuHawk
return false; return false;
} }
return LoadMovie((ITasMovie)MovieSession.Get(file.FullName), gotoFrame);
}
private bool LoadMovie(ITasMovie newMovie, int gotoFrame)
{
if (newMovie == null) return false;
_engaged = false; _engaged = false;
var newMovie = (ITasMovie)MovieSession.Get(file.FullName);
newMovie.BindMarkersToInput = Settings.BindMarkersToInput; newMovie.BindMarkersToInput = Settings.BindMarkersToInput;
newMovie.TasStateManager.InvalidateCallback = GreenzoneInvalidated; newMovie.TasStateManager.InvalidateCallback = GreenzoneInvalidated;
if (!HandleMovieLoadStuff(newMovie)) if (!HandleMovieLoadStuff(newMovie))
{
return false; return false;
}
_engaged = true; _engaged = true;
Settings.RecentTas.Add(newMovie.Filename); // only add if it did load Settings.RecentTas.Add(newMovie.Filename); // only add if it did load
if (startsFromSavestate)
{
GoToFrame(0);
}
else if (gotoFrame > 0)
{
GoToFrame(gotoFrame); GoToFrame(gotoFrame);
}
else
{
GoToFrame(CurrentTasMovie.TasSession.CurrentFrame);
}
// If we are loading an existing non-default movie, we will already have columns generated // If we are loading an existing non-default movie, we will already have columns generated
// Only set up columns if needed // Only set up columns if needed
@ -588,17 +581,10 @@ namespace BizHawk.Client.EmuHawk
private void StartNewTasMovie() private void StartNewTasMovie()
{ {
if (!AskSaveChanges()) if (!AskSaveChanges())
{
return; return;
}
var filename = DefaultTasProjName(); // TODO don't do this, take over any mainform actions that can crash without a filename string filename = DefaultTasProjName(); // TODO don't do this, take over any mainform actions that can crash without a filename
var tasMovie = (ITasMovie)MovieSession.Get(filename); ITasMovie tasMovie = (ITasMovie)MovieSession.Get(filename);
tasMovie.BindMarkersToInput = Settings.BindMarkersToInput;
tasMovie.TasStateManager.InvalidateCallback = GreenzoneInvalidated;
tasMovie.PropertyChanged += TasMovie_OnPropertyChanged;
tasMovie.PopulateWithDefaultHeaderValues( tasMovie.PopulateWithDefaultHeaderValues(
Emulator, Emulator,
@ -606,21 +592,7 @@ namespace BizHawk.Client.EmuHawk
GlobalWin.FirmwareManager, GlobalWin.FirmwareManager,
Config.DefaultAuthor); Config.DefaultAuthor);
SetTasMovieCallbacks(tasMovie); LoadMovie(tasMovie, 0);
tasMovie.ClearChanges(); // Don't ask to save changes here.
tasMovie.Save();
if (HandleMovieLoadStuff(tasMovie))
{
CurrentTasMovie.TasStateManager.Capture(); // Capture frame 0 always.
}
// clear all selections
TasView.DeselectAll();
BookMarkControl.Restart();
MarkerControl.Restart();
SetUpColumns();
RefreshDialog();
TasView.Refresh();
} }
private bool HandleMovieLoadStuff(ITasMovie movie) private bool HandleMovieLoadStuff(ITasMovie movie)
@ -685,7 +657,6 @@ namespace BizHawk.Client.EmuHawk
TasView.AllColumns.Clear(); TasView.AllColumns.Clear();
WantsToControlReboot = false; WantsToControlReboot = false;
StartNewTasMovie(); StartNewTasMovie();
_engaged = true;
} }
} }