Restart Rom when Tastudio is engaged, resorted to ugly hacks that will be rethought when things are more stable

This commit is contained in:
adelikat 2013-12-14 06:58:09 +00:00
parent bc3208ec89
commit 35c3fcca16
3 changed files with 40 additions and 16 deletions

View File

@ -12,10 +12,10 @@ namespace BizHawk.Client.EmuHawk
{
partial class MainForm
{
public void StartNewMovie(IMovie movie, bool record)
public void StartNewMovie(IMovie movie, bool record, bool fromTastudio = false) //TasStudio flag is a hack for now
{
//If a movie is already loaded, save it before starting a new movie
if (Global.MovieSession.Movie.IsActive)
if (!fromTastudio && Global.MovieSession.Movie.IsActive)
{
Global.MovieSession.Movie.Save();
}
@ -37,7 +37,11 @@ namespace BizHawk.Client.EmuHawk
LoadRom(GlobalWin.MainForm.CurrentlyOpenRom, true, !record);
Global.Config.RecentMovies.Add(movie.Filename);
if (!fromTastudio)
{
Global.Config.RecentMovies.Add(movie.Filename);
}
if (Global.MovieSession.Movie.Header.StartsFromSavestate)
{
LoadStateFile(Global.MovieSession.Movie.Filename, Path.GetFileName(Global.MovieSession.Movie.Filename));
@ -55,7 +59,12 @@ namespace BizHawk.Client.EmuHawk
}
SetMainformMovieInfo();
GlobalWin.Tools.Restart<TAStudio>();
if (!fromTastudio)
{
GlobalWin.Tools.Restart<TAStudio>();
}
GlobalWin.Tools.Restart<VirtualPadForm>();
GlobalWin.DisplayManager.NeedsToPaint = true;
}
@ -133,7 +142,7 @@ namespace BizHawk.Client.EmuHawk
}
//On movie load, these need to be set based on the contents of the movie file
private void SetSyncDependentSettings()
public void SetSyncDependentSettings()
{
switch (Global.Emulator.SystemId)
{

View File

@ -3561,7 +3561,14 @@ namespace BizHawk.Client.EmuHawk
Global.Emulator = new NullEmulator(Global.CoreComm);
Global.ActiveController = Global.NullControls;
Global.AutoFireController = Global.AutofireNullControls;
Global.MovieSession.Movie.Stop();
// adelikat: TODO: Ugly hack! But I don't know a way around this yet.
if (!(Global.MovieSession.Movie is TasMovie))
{
Global.MovieSession.Movie.Stop();
}
RebootStatusBarIcon.Visible = false;
}

View File

@ -135,12 +135,9 @@ namespace BizHawk.Client.EmuHawk
}
}
GlobalWin.OSD.AddMessage("TAStudio engaged");
EngageTasStudio();
LoadConfigSettings();
_tas.ActivePlayers = new List<string> { "Player 1", "Player 2" };
_tas.ActivePlayers = new List<string> { "Player 1" };
SetUpColumns();
}
@ -148,9 +145,20 @@ namespace BizHawk.Client.EmuHawk
{
GlobalWin.OSD.AddMessage("TAStudio engaged");
Global.MovieSession.Movie = new TasMovie();
_tas = Global.MovieSession.Movie as TasMovie;
_tas.StartNewRecording();
_tas.OnChanged += OnMovieChanged;
try
{
GlobalWin.MainForm.StartNewMovie(_tas, true, true);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
private void StartNewSession()
@ -164,12 +172,6 @@ namespace BizHawk.Client.EmuHawk
}
}
private void OnMovieChanged(object sender, MovieRecord.InputEventArgs e)
{
//TODO: move logic needs to go here
TASView.ItemCount = _tas.InputLogLength;
}
private void SetUpColumns()
{
TASView.Columns.Clear();
@ -347,6 +349,12 @@ namespace BizHawk.Client.EmuHawk
#region TASView Events
private void OnMovieChanged(object sender, MovieRecord.InputEventArgs e)
{
//TODO: move logic needs to go here
TASView.ItemCount = _tas.InputLogLength;
}
private void TASView_MouseDown(object sender, MouseEventArgs e)
{
if (TASView.PointedCell.Row.HasValue && !String.IsNullOrEmpty(TASView.PointedCell.Column))