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;
|
return s;
|
||||||
|
|
|
@ -300,11 +300,15 @@ namespace BizHawk.Client.EmuHawk
|
||||||
private void StartAtNearestFrameAndEmulate(int frame)
|
private void StartAtNearestFrameAndEmulate(int frame)
|
||||||
{
|
{
|
||||||
CurrentTasMovie.SwitchToPlay();
|
CurrentTasMovie.SwitchToPlay();
|
||||||
var closestState = CurrentTasMovie.TasStateManager.GetStateClosestToFrame(frame);
|
KeyValuePair<int, byte[]> closestState = CurrentTasMovie.TasStateManager.GetStateClosestToFrame(frame);
|
||||||
if (closestState != null)
|
if (closestState.Value != null)
|
||||||
{
|
{
|
||||||
LoadState(closestState.ToArray());
|
LoadState(closestState.Value.ToArray());
|
||||||
|
|
||||||
|
if (closestState.Key == 0 && CurrentTasMovie.StartsFromSavestate)
|
||||||
|
{
|
||||||
|
Global.Emulator.ResetCounters();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GlobalWin.MainForm.PauseOnFrame = frame;
|
GlobalWin.MainForm.PauseOnFrame = frame;
|
||||||
|
|
Loading…
Reference in New Issue