Tastudio - handle system mismatch error when autoloading

This commit is contained in:
adelikat 2014-09-28 01:05:26 +00:00
parent e00801d6f3
commit d308a16f8d
2 changed files with 34 additions and 10 deletions

View File

@ -13,7 +13,7 @@ namespace BizHawk.Client.EmuHawk
{
partial class MainForm
{
public void StartNewMovie(IMovie movie, bool record)
public bool StartNewMovie(IMovie movie, bool record)
{
try
{
@ -22,7 +22,7 @@ namespace BizHawk.Client.EmuHawk
catch (MoviePlatformMismatchException ex)
{
MessageBox.Show(this, ex.Message, "Movie/Platform Mismatch", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
return false;
}
LoadRom(GlobalWin.MainForm.CurrentlyOpenRom);
@ -49,6 +49,8 @@ namespace BizHawk.Client.EmuHawk
GlobalWin.Tools.Restart<VirtualpadTool>();
GlobalWin.DisplayManager.NeedsToPaint = true;
return true;
}
public void SetMainformMovieInfo()

View File

@ -137,7 +137,7 @@ namespace BizHawk.Client.EmuHawk
Text = text;
}
public void LoadProject(string path)
public bool LoadProject(string path)
{
if (AskSaveChanges())
{
@ -163,13 +163,21 @@ namespace BizHawk.Client.EmuHawk
shouldRecord = true;
}
GlobalWin.MainForm.StartNewMovie(movie, record: shouldRecord);
var result = GlobalWin.MainForm.StartNewMovie(movie, record: shouldRecord);
if (!result)
{
return false;
}
WantsToControlStopMovie = true;
_currentTasMovie = Global.MovieSession.Movie as TasMovie;
Global.Config.RecentTas.Add(path);
Text = "TAStudio - " + _currentTasMovie.Name;
RefreshDialog();
return true;
}
return false;
}
public void RefreshDialog()
@ -528,7 +536,12 @@ namespace BizHawk.Client.EmuHawk
{
RecentSubMenu.DropDownItems.Clear();
RecentSubMenu.DropDownItems.AddRange(
Global.Config.RecentTas.RecentMenu(LoadProject));
Global.Config.RecentTas.RecentMenu(DummyLoadProject));
}
private void DummyLoadProject(string path)
{
LoadProject(path);
}
private void NewTasMenuItem_Click(object sender, EventArgs e)
@ -1032,16 +1045,17 @@ namespace BizHawk.Client.EmuHawk
// Start Scenario 3: No movie, but user wants to autload their last project
else if (Global.Config.AutoloadTAStudioProject && !string.IsNullOrEmpty(Global.Config.RecentTas.MostRecent))
{
LoadProject(Global.Config.RecentTas.MostRecent);
var result = LoadProject(Global.Config.RecentTas.MostRecent);
if (!result)
{
Scenario4();
}
}
// Start Scenario 4: No movie, default behavior of engaging tastudio with a new default project
else
{
NewTasMovie();
GlobalWin.MainForm.StartNewMovie(_currentTasMovie, record: true);
_currentTasMovie.CaptureCurrentState();
_currentTasMovie.SwitchToRecord();
Scenario4();
}
EngageTastudio();
@ -1051,6 +1065,14 @@ namespace BizHawk.Client.EmuHawk
RefreshDialog();
}
private void Scenario4()
{
NewTasMovie();
GlobalWin.MainForm.StartNewMovie(_currentTasMovie, record: true);
_currentTasMovie.CaptureCurrentState();
_currentTasMovie.SwitchToRecord();
}
private void Tastudio_Closing(object sender, FormClosingEventArgs e)
{
if (AskSaveChanges())