Tastudio - refactor TasStateManager GetStateClosestToFrame() to return a KeyValuePair (frame number and savestate data) so the calling code has a clue which savestate was returned, reset counters if a savestate-anchored movie's "anchor" was loaded
This commit is contained in:
parent
fa9971022b
commit
59494767f5
|
@ -240,13 +240,13 @@ namespace BizHawk.Client.Common
|
|||
}
|
||||
}
|
||||
|
||||
public byte[] GetStateClosestToFrame(int frame)
|
||||
public KeyValuePair<int, byte[]> GetStateClosestToFrame(int frame)
|
||||
{
|
||||
var s = States.LastOrDefault(state => state.Key < frame).Value;
|
||||
var s = States.LastOrDefault(state => state.Key < frame);
|
||||
|
||||
if (s == null && _movie.StartsFromSavestate)
|
||||
if (s.Value == null && _movie.StartsFromSavestate)
|
||||
{
|
||||
return _movie.BinarySavestate;
|
||||
return new KeyValuePair<int, byte[]>(0, _movie.BinarySavestate);
|
||||
}
|
||||
|
||||
return s;
|
||||
|
|
|
@ -300,11 +300,15 @@ namespace BizHawk.Client.EmuHawk
|
|||
private void StartAtNearestFrameAndEmulate(int frame)
|
||||
{
|
||||
CurrentTasMovie.SwitchToPlay();
|
||||
var closestState = CurrentTasMovie.TasStateManager.GetStateClosestToFrame(frame);
|
||||
if (closestState != null)
|
||||
KeyValuePair<int, byte[]> closestState = CurrentTasMovie.TasStateManager.GetStateClosestToFrame(frame);
|
||||
if (closestState.Value != null)
|
||||
{
|
||||
LoadState(closestState.ToArray());
|
||||
|
||||
LoadState(closestState.Value.ToArray());
|
||||
|
||||
if (closestState.Key == 0 && CurrentTasMovie.StartsFromSavestate)
|
||||
{
|
||||
Global.Emulator.ResetCounters();
|
||||
}
|
||||
}
|
||||
|
||||
GlobalWin.MainForm.PauseOnFrame = frame;
|
||||
|
|
Loading…
Reference in New Issue