Rewinder - take in an immutable version of rewindConfig
This commit is contained in:
parent
4cf30f4592
commit
82c6efd274
|
@ -2,7 +2,24 @@
|
|||
|
||||
namespace BizHawk.Client.Common
|
||||
{
|
||||
public class RewindConfig
|
||||
public interface IRewindSettings
|
||||
{
|
||||
public bool UseDelta { get; }
|
||||
public bool EnabledSmall { get; }
|
||||
public bool EnabledMedium { get; }
|
||||
public bool EnabledLarge { get; }
|
||||
public int FrequencySmall { get; }
|
||||
public int FrequencyMedium { get; }
|
||||
public int FrequencyLarge { get; }
|
||||
public int MediumStateSize { get; }
|
||||
public int LargeStateSize { get; }
|
||||
public int BufferSize { get; }
|
||||
public bool OnDisk { get; }
|
||||
public bool IsThreaded { get; }
|
||||
public int SpeedMultiplier { get; }
|
||||
}
|
||||
|
||||
public class RewindConfig : IRewindSettings
|
||||
{
|
||||
public bool UseDelta { get; set; } = true;
|
||||
public bool EnabledSmall { get; set; } = true;
|
||||
|
|
|
@ -35,7 +35,7 @@ namespace BizHawk.Client.Common
|
|||
|
||||
public int RewindFrequency { get; private set; }
|
||||
|
||||
public void Initialize(IStatable statableCore, RewindConfig rewindConfig)
|
||||
public void Initialize(IStatable statableCore, IRewindSettings settings)
|
||||
{
|
||||
Uninitialize();
|
||||
|
||||
|
@ -43,29 +43,29 @@ namespace BizHawk.Client.Common
|
|||
|
||||
int stateSize = _statableCore.CloneSavestate().Length;
|
||||
|
||||
if (stateSize >= rewindConfig.LargeStateSize)
|
||||
if (stateSize >= settings.LargeStateSize)
|
||||
{
|
||||
RewindEnabled = rewindConfig.EnabledLarge;
|
||||
RewindFrequency = rewindConfig.FrequencyLarge;
|
||||
RewindEnabled = settings.EnabledLarge;
|
||||
RewindFrequency = settings.FrequencyLarge;
|
||||
}
|
||||
else if (stateSize >= rewindConfig.MediumStateSize)
|
||||
else if (stateSize >= settings.MediumStateSize)
|
||||
{
|
||||
RewindEnabled = rewindConfig.EnabledMedium;
|
||||
RewindFrequency = rewindConfig.FrequencyMedium;
|
||||
RewindEnabled = settings.EnabledMedium;
|
||||
RewindFrequency = settings.FrequencyMedium;
|
||||
}
|
||||
else
|
||||
{
|
||||
RewindEnabled = rewindConfig.EnabledSmall;
|
||||
RewindFrequency = rewindConfig.FrequencySmall;
|
||||
RewindEnabled = settings.EnabledSmall;
|
||||
RewindFrequency = settings.FrequencySmall;
|
||||
}
|
||||
|
||||
_rewindDeltaEnable = rewindConfig.UseDelta;
|
||||
_rewindDeltaEnable = settings.UseDelta;
|
||||
|
||||
if (RewindActive)
|
||||
{
|
||||
var capacity = rewindConfig.BufferSize * 1024L * 1024L;
|
||||
_rewindBuffer = new StreamBlobDatabase(rewindConfig.OnDisk, capacity, BufferManage);
|
||||
_rewindThread = new RewindThreader(CaptureInternal, RewindInternal, rewindConfig.IsThreaded);
|
||||
var capacity = settings.BufferSize * 1024L * 1024L;
|
||||
_rewindBuffer = new StreamBlobDatabase(settings.OnDisk, capacity, BufferManage);
|
||||
_rewindThread = new RewindThreader(CaptureInternal, RewindInternal, settings.IsThreaded);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue