Pass TasMovie into StateManagerDecay and have it get the last edited frame instead of from IStateManager

This commit is contained in:
adelikat 2019-06-15 14:35:31 -05:00
parent 3c27a332bb
commit 8f116a8428
3 changed files with 8 additions and 7 deletions

View File

@ -50,7 +50,6 @@ namespace BizHawk.Client.Common
bool RemoveState(int frame);
int LastEditedFrame { get; }
bool StateIsMarker(int frame);
int StateCount { get; }

View File

@ -44,7 +44,9 @@ namespace BizHawk.Client.Common
{
internal class StateManagerDecay
{
private readonly IStateManager _tsm; // access tsm methods to make life easier
private readonly TasMovie _movie;
private readonly IStateManager _tsm;
private List<int> _zeros; // amount of least significant zeros in bitwise view (also max pattern step)
private int _bits; // size of _zeros is 2 raised to the power of _bits
private int _mask; // for remainder calculation using bitwise instead of division
@ -53,8 +55,9 @@ namespace BizHawk.Client.Common
private int _step; // initial memory state gap
private bool _align; // extra care about fine alignment. TODO: do we want it?
public StateManagerDecay(IStateManager tsm)
public StateManagerDecay(TasMovie movie, IStateManager tsm)
{
_movie = movie;
_tsm = tsm;
_align = false;
}
@ -79,7 +82,7 @@ namespace BizHawk.Client.Common
{
continue;
}
else if (currentFrame + 1 == _tsm.LastEditedFrame)
else if (currentFrame + 1 == _movie.LastEditedFrame)
{
continue;
}
@ -124,7 +127,7 @@ namespace BizHawk.Client.Common
{
continue;
}
else if ((currentFrame % _step > 0) && (currentFrame + 1 != _tsm.LastEditedFrame))
else if ((currentFrame % _step > 0) && (currentFrame + 1 != _movie.LastEditedFrame))
{
// ignore the pattern if the state doesn't belong already, drop it blindly and skip everything
if (_tsm.RemoveState(currentFrame))

View File

@ -62,7 +62,7 @@ namespace BizHawk.Client.Common
SetState(0, _movie.BinarySavestate);
}
_decay = new StateManagerDecay(this);
_decay = new StateManagerDecay(_movie, this);
}
public void Dispose()
@ -511,7 +511,6 @@ namespace BizHawk.Client.Common
}
public int StateCount => _states.Count;
public int LastEditedFrame => _movie.LastEditedFrame;
public bool Any()
{