diff --git a/BizHawk.Client.Common/movie/tasproj/TasMovie.cs b/BizHawk.Client.Common/movie/tasproj/TasMovie.cs index 882ed670af..dd03b56f31 100644 --- a/BizHawk.Client.Common/movie/tasproj/TasMovie.cs +++ b/BizHawk.Client.Common/movie/tasproj/TasMovie.cs @@ -177,5 +177,13 @@ namespace BizHawk.Client.Common { get { return StateManager.Settings; } } + + public int LastEmulatedFrame + { + get + { + return StateManager.Last.Key; + } + } } } diff --git a/BizHawk.Client.Common/movie/tasproj/TasStateManager.cs b/BizHawk.Client.Common/movie/tasproj/TasStateManager.cs index 83528e5106..fd5b1ad229 100644 --- a/BizHawk.Client.Common/movie/tasproj/TasStateManager.cs +++ b/BizHawk.Client.Common/movie/tasproj/TasStateManager.cs @@ -13,7 +13,7 @@ namespace BizHawk.Client.Common /// public class TasStateManager { - private readonly Dictionary States = new Dictionary(); + private readonly SortedDictionary States = new SortedDictionary(); public TasStateManager() { @@ -146,6 +146,11 @@ namespace BizHawk.Client.Common } } + public KeyValuePair Last + { + get { return States.Last(); } + } + public class ManagerSettings { public ManagerSettings() diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.IToolForm.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.IToolForm.cs index 5588fb4201..a6358f4f95 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.IToolForm.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.IToolForm.cs @@ -9,8 +9,6 @@ namespace BizHawk.Client.EmuHawk public void UpdateValues() { - SetUpColumns(); - if (!IsHandleCreated || IsDisposed) { return; diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs index e14e93e859..031486a39e 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs @@ -100,6 +100,7 @@ namespace BizHawk.Client.EmuHawk if (Global.MovieSession.MovieControllerAdapter.Type.BoolButtons.Contains(buttonName)) { _tas.ToggleBoolState(TasView.PointedCell.Row.Value, TasView.PointedCell.Column); + GoToLastEmulatedFrameIfNecessary(TasView.PointedCell.Row.Value); TasView.Refresh(); _startBoolDrawColumn = TasView.PointedCell.Column; diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs index 6beb8f0e31..b96ce8fabf 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs @@ -113,7 +113,7 @@ namespace BizHawk.Client.EmuHawk } // Start Scenario 3: No movie, but user wants to autload their last project - else if (Global.Config.AutoloadTAStudioProject) + else if (Global.Config.AutoloadTAStudioProject && !string.IsNullOrEmpty(Global.Config.RecentTas.MostRecent)) { LoadProject(Global.Config.RecentTas.MostRecent); } @@ -210,6 +210,15 @@ namespace BizHawk.Client.EmuHawk TasView.ItemCount = _tas.InputLogLength; } + // TODO: a better name + private void GoToLastEmulatedFrameIfNecessary(int frame) + { + if (frame <= _tas.LastEmulatedFrame) + { + GoToFrame(_tas.LastEmulatedFrame); + } + } + private void SetUpColumns() { TasView.Columns.Clear(); @@ -365,6 +374,7 @@ namespace BizHawk.Client.EmuHawk { _tas.Save(); MessageStatusLabel.Text = Path.GetFileName(_tas.Filename) + " saved."; + Global.Config.RecentTas.Add(_tas.Filename); } } @@ -478,6 +488,7 @@ namespace BizHawk.Client.EmuHawk _tas.RemoveFrames(list); + SetSplicer(); TasView.DeselectAll(); RefreshDialog();