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 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 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(); Global.MovieSession.Movie.Save();
} }
@ -37,7 +37,11 @@ namespace BizHawk.Client.EmuHawk
LoadRom(GlobalWin.MainForm.CurrentlyOpenRom, true, !record); 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) if (Global.MovieSession.Movie.Header.StartsFromSavestate)
{ {
LoadStateFile(Global.MovieSession.Movie.Filename, Path.GetFileName(Global.MovieSession.Movie.Filename)); LoadStateFile(Global.MovieSession.Movie.Filename, Path.GetFileName(Global.MovieSession.Movie.Filename));
@ -55,7 +59,12 @@ namespace BizHawk.Client.EmuHawk
} }
SetMainformMovieInfo(); SetMainformMovieInfo();
GlobalWin.Tools.Restart<TAStudio>();
if (!fromTastudio)
{
GlobalWin.Tools.Restart<TAStudio>();
}
GlobalWin.Tools.Restart<VirtualPadForm>(); GlobalWin.Tools.Restart<VirtualPadForm>();
GlobalWin.DisplayManager.NeedsToPaint = true; 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 //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) switch (Global.Emulator.SystemId)
{ {

View File

@ -3561,7 +3561,14 @@ namespace BizHawk.Client.EmuHawk
Global.Emulator = new NullEmulator(Global.CoreComm); Global.Emulator = new NullEmulator(Global.CoreComm);
Global.ActiveController = Global.NullControls; Global.ActiveController = Global.NullControls;
Global.AutoFireController = Global.AutofireNullControls; 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; RebootStatusBarIcon.Visible = false;
} }

View File

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