move settings class out of RamSearchEngine
This commit is contained in:
parent
3a0df3f543
commit
a151bd7424
|
@ -14,13 +14,13 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
||||||
private Compare _compareTo = Compare.Previous;
|
private Compare _compareTo = Compare.Previous;
|
||||||
|
|
||||||
private List<IMiniWatch> _watchList = new List<IMiniWatch>();
|
private List<IMiniWatch> _watchList = new List<IMiniWatch>();
|
||||||
private readonly Settings _settings;
|
private readonly SearchEngineSettings _settings;
|
||||||
private readonly UndoHistory<IMiniWatch> _history = new UndoHistory<IMiniWatch>(true);
|
private readonly UndoHistory<IMiniWatch> _history = new UndoHistory<IMiniWatch>(true);
|
||||||
private bool _isSorted = true; // Tracks whether or not the list is sorted by address, if it is, binary search can be used for finding watches
|
private bool _isSorted = true; // Tracks whether or not the list is sorted by address, if it is, binary search can be used for finding watches
|
||||||
|
|
||||||
public RamSearchEngine(Settings settings, IMemoryDomains memoryDomains)
|
public RamSearchEngine(SearchEngineSettings settings, IMemoryDomains memoryDomains)
|
||||||
{
|
{
|
||||||
_settings = new Settings(memoryDomains)
|
_settings = new SearchEngineSettings(memoryDomains)
|
||||||
{
|
{
|
||||||
Mode = settings.Mode,
|
Mode = settings.Mode,
|
||||||
Domain = settings.Domain,
|
Domain = settings.Domain,
|
||||||
|
@ -32,7 +32,7 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public RamSearchEngine(Settings settings, IMemoryDomains memoryDomains, Compare compareTo, long? compareValue, int? differentBy)
|
public RamSearchEngine(SearchEngineSettings settings, IMemoryDomains memoryDomains, Compare compareTo, long? compareValue, int? differentBy)
|
||||||
: this(settings, memoryDomains)
|
: this(settings, memoryDomains)
|
||||||
{
|
{
|
||||||
_compareTo = compareTo;
|
_compareTo = compareTo;
|
||||||
|
@ -62,7 +62,7 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
case WatchSize.Byte:
|
case WatchSize.Byte:
|
||||||
if (_settings.Mode == Settings.SearchMode.Detailed)
|
if (_settings.Mode == SearchEngineSettings.SearchMode.Detailed)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < domain.Size; i++)
|
for (int i = 0; i < domain.Size; i++)
|
||||||
{
|
{
|
||||||
|
@ -79,7 +79,7 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case WatchSize.Word:
|
case WatchSize.Word:
|
||||||
if (_settings.Mode == Settings.SearchMode.Detailed)
|
if (_settings.Mode == SearchEngineSettings.SearchMode.Detailed)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < domain.Size - 1; i += _settings.CheckMisAligned ? 1 : 2)
|
for (int i = 0; i < domain.Size - 1; i += _settings.CheckMisAligned ? 1 : 2)
|
||||||
{
|
{
|
||||||
|
@ -96,7 +96,7 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case WatchSize.DWord:
|
case WatchSize.DWord:
|
||||||
if (_settings.Mode == Settings.SearchMode.Detailed)
|
if (_settings.Mode == SearchEngineSettings.SearchMode.Detailed)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < domain.Size - 3; i += _settings.CheckMisAligned ? 1 : 4)
|
for (int i = 0; i < domain.Size - 3; i += _settings.CheckMisAligned ? 1 : 4)
|
||||||
{
|
{
|
||||||
|
@ -122,7 +122,7 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (_settings.Mode == Settings.SearchMode.Detailed)
|
if (_settings.Mode == SearchEngineSettings.SearchMode.Detailed)
|
||||||
{
|
{
|
||||||
return Watch.GenerateWatch(
|
return Watch.GenerateWatch(
|
||||||
_settings.Domain,
|
_settings.Domain,
|
||||||
|
@ -194,7 +194,7 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
||||||
|
|
||||||
public int Count => _watchList.Count;
|
public int Count => _watchList.Count;
|
||||||
|
|
||||||
public Settings.SearchMode Mode => _settings.Mode;
|
public SearchEngineSettings.SearchMode Mode => _settings.Mode;
|
||||||
|
|
||||||
public MemoryDomain Domain => _settings.Domain;
|
public MemoryDomain Domain => _settings.Domain;
|
||||||
|
|
||||||
|
@ -225,7 +225,7 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
||||||
|
|
||||||
public void Update()
|
public void Update()
|
||||||
{
|
{
|
||||||
if (_settings.Mode == Settings.SearchMode.Detailed)
|
if (_settings.Mode == SearchEngineSettings.SearchMode.Detailed)
|
||||||
{
|
{
|
||||||
foreach (IMiniWatchDetails watch in _watchList)
|
foreach (IMiniWatchDetails watch in _watchList)
|
||||||
{
|
{
|
||||||
|
@ -247,7 +247,7 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
||||||
/// <exception cref="InvalidOperationException"><see cref="Mode"/> is <see cref="Settings.SearchMode.Fast"/> and <paramref name="type"/> is <see cref="PreviousType.LastFrame"/></exception>
|
/// <exception cref="InvalidOperationException"><see cref="Mode"/> is <see cref="Settings.SearchMode.Fast"/> and <paramref name="type"/> is <see cref="PreviousType.LastFrame"/></exception>
|
||||||
public void SetPreviousType(PreviousType type)
|
public void SetPreviousType(PreviousType type)
|
||||||
{
|
{
|
||||||
if (_settings.Mode == Settings.SearchMode.Fast)
|
if (_settings.Mode == SearchEngineSettings.SearchMode.Fast)
|
||||||
{
|
{
|
||||||
if (type == PreviousType.LastFrame)
|
if (type == PreviousType.LastFrame)
|
||||||
{
|
{
|
||||||
|
@ -265,7 +265,7 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
||||||
|
|
||||||
public void ClearChangeCounts()
|
public void ClearChangeCounts()
|
||||||
{
|
{
|
||||||
if (_settings.Mode == Settings.SearchMode.Detailed)
|
if (_settings.Mode == SearchEngineSettings.SearchMode.Detailed)
|
||||||
{
|
{
|
||||||
foreach (var watch in _watchList.Cast<IMiniWatchDetails>())
|
foreach (var watch in _watchList.Cast<IMiniWatchDetails>())
|
||||||
{
|
{
|
||||||
|
@ -311,7 +311,7 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
case WatchSize.Byte:
|
case WatchSize.Byte:
|
||||||
if (_settings.Mode == Settings.SearchMode.Detailed)
|
if (_settings.Mode == SearchEngineSettings.SearchMode.Detailed)
|
||||||
{
|
{
|
||||||
foreach (var addr in addresses)
|
foreach (var addr in addresses)
|
||||||
{
|
{
|
||||||
|
@ -328,7 +328,7 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case WatchSize.Word:
|
case WatchSize.Word:
|
||||||
if (_settings.Mode == Settings.SearchMode.Detailed)
|
if (_settings.Mode == SearchEngineSettings.SearchMode.Detailed)
|
||||||
{
|
{
|
||||||
foreach (var addr in addresses)
|
foreach (var addr in addresses)
|
||||||
{
|
{
|
||||||
|
@ -345,7 +345,7 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case WatchSize.DWord:
|
case WatchSize.DWord:
|
||||||
if (_settings.Mode == Settings.SearchMode.Detailed)
|
if (_settings.Mode == SearchEngineSettings.SearchMode.Detailed)
|
||||||
{
|
{
|
||||||
foreach (var addr in addresses)
|
foreach (var addr in addresses)
|
||||||
{
|
{
|
||||||
|
@ -394,7 +394,7 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case WatchList.CHANGES:
|
case WatchList.CHANGES:
|
||||||
if (_settings.Mode == Settings.SearchMode.Detailed)
|
if (_settings.Mode == SearchEngineSettings.SearchMode.Detailed)
|
||||||
{
|
{
|
||||||
if (reverse)
|
if (reverse)
|
||||||
{
|
{
|
||||||
|
@ -611,7 +611,7 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
||||||
|
|
||||||
private IEnumerable<IMiniWatch> CompareChanges(IEnumerable<IMiniWatch> watchList)
|
private IEnumerable<IMiniWatch> CompareChanges(IEnumerable<IMiniWatch> watchList)
|
||||||
{
|
{
|
||||||
if (_settings.Mode == Settings.SearchMode.Detailed && CompareValue.HasValue)
|
if (_settings.Mode == SearchEngineSettings.SearchMode.Detailed && CompareValue.HasValue)
|
||||||
{
|
{
|
||||||
var compareValue = CompareValue.Value;
|
var compareValue = CompareValue.Value;
|
||||||
switch (Operator)
|
switch (Operator)
|
||||||
|
@ -760,45 +760,12 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
||||||
{
|
{
|
||||||
return _settings.Mode switch
|
return _settings.Mode switch
|
||||||
{
|
{
|
||||||
Settings.SearchMode.Detailed => true,
|
SearchEngineSettings.SearchMode.Detailed => true,
|
||||||
Settings.SearchMode.Fast => (compareType != Compare.Changes),
|
SearchEngineSettings.SearchMode.Fast => (compareType != Compare.Changes),
|
||||||
_ => true
|
_ => true
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public class Settings
|
|
||||||
{
|
|
||||||
public Settings(IMemoryDomains memoryDomains)
|
|
||||||
{
|
|
||||||
BigEndian = memoryDomains.MainMemory.EndianType == MemoryDomain.Endian.Big;
|
|
||||||
Size = (WatchSize)memoryDomains.MainMemory.WordSize;
|
|
||||||
Type = DisplayType.Unsigned;
|
|
||||||
Mode = memoryDomains.MainMemory.Size > 1024 * 1024
|
|
||||||
? SearchMode.Fast
|
|
||||||
: SearchMode.Detailed;
|
|
||||||
|
|
||||||
Domain = memoryDomains.MainMemory;
|
|
||||||
CheckMisAligned = false;
|
|
||||||
PreviousType = PreviousType.LastSearch;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*Require restart*/
|
|
||||||
public enum SearchMode
|
|
||||||
{
|
|
||||||
Fast, Detailed
|
|
||||||
}
|
|
||||||
|
|
||||||
public SearchMode Mode { get; set; }
|
|
||||||
public MemoryDomain Domain { get; set; }
|
|
||||||
public WatchSize Size { get; set; }
|
|
||||||
public bool CheckMisAligned { get; set; }
|
|
||||||
|
|
||||||
/*Can be changed mid-search*/
|
|
||||||
public DisplayType Type { get; set; }
|
|
||||||
public bool BigEndian { get; set; }
|
|
||||||
public PreviousType PreviousType { get; set; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
using BizHawk.Emulation.Common;
|
||||||
|
|
||||||
|
namespace BizHawk.Client.Common.RamSearchEngine
|
||||||
|
{
|
||||||
|
public class SearchEngineSettings
|
||||||
|
{
|
||||||
|
public SearchEngineSettings(IMemoryDomains memoryDomains)
|
||||||
|
{
|
||||||
|
BigEndian = memoryDomains.MainMemory.EndianType == MemoryDomain.Endian.Big;
|
||||||
|
Size = (WatchSize)memoryDomains.MainMemory.WordSize;
|
||||||
|
Type = DisplayType.Unsigned;
|
||||||
|
Mode = memoryDomains.MainMemory.Size > 1024 * 1024
|
||||||
|
? SearchMode.Fast
|
||||||
|
: SearchMode.Detailed;
|
||||||
|
|
||||||
|
Domain = memoryDomains.MainMemory;
|
||||||
|
CheckMisAligned = false;
|
||||||
|
PreviousType = PreviousType.LastSearch;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*Require restart*/
|
||||||
|
public enum SearchMode
|
||||||
|
{
|
||||||
|
Fast, Detailed
|
||||||
|
}
|
||||||
|
|
||||||
|
public SearchMode Mode { get; set; }
|
||||||
|
public MemoryDomain Domain { get; set; }
|
||||||
|
public WatchSize Size { get; set; }
|
||||||
|
public bool CheckMisAligned { get; set; }
|
||||||
|
|
||||||
|
/*Can be changed mid-search*/
|
||||||
|
public DisplayType Type { get; set; }
|
||||||
|
public bool BigEndian { get; set; }
|
||||||
|
public PreviousType PreviousType { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -29,7 +29,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
private string _currentFileName = "";
|
private string _currentFileName = "";
|
||||||
|
|
||||||
private RamSearchEngine _searches;
|
private RamSearchEngine _searches;
|
||||||
private RamSearchEngine.Settings _settings;
|
private SearchEngineSettings _settings;
|
||||||
|
|
||||||
private int _defaultWidth;
|
private int _defaultWidth;
|
||||||
private int _defaultHeight;
|
private int _defaultHeight;
|
||||||
|
@ -122,7 +122,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
RamSearchMenu.Items.Add(WatchListView.ToColumnsMenu(ColumnToggleCallback));
|
RamSearchMenu.Items.Add(WatchListView.ToColumnsMenu(ColumnToggleCallback));
|
||||||
|
|
||||||
_settings = new RamSearchEngine.Settings(MemoryDomains);
|
_settings = new SearchEngineSettings(MemoryDomains);
|
||||||
_searches = new RamSearchEngine(_settings, MemoryDomains);
|
_searches = new RamSearchEngine(_settings, MemoryDomains);
|
||||||
|
|
||||||
ErrorIconButton.Visible = false;
|
ErrorIconButton.Visible = false;
|
||||||
|
@ -150,7 +150,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
_dropdownDontfire = false;
|
_dropdownDontfire = false;
|
||||||
|
|
||||||
if (_settings.Mode == RamSearchEngine.Settings.SearchMode.Fast)
|
if (_settings.Mode == SearchEngineSettings.SearchMode.Fast)
|
||||||
{
|
{
|
||||||
SetToFastMode();
|
SetToFastMode();
|
||||||
}
|
}
|
||||||
|
@ -312,7 +312,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
public void Restart()
|
public void Restart()
|
||||||
{
|
{
|
||||||
_settings = new RamSearchEngine.Settings(MemoryDomains);
|
_settings = new SearchEngineSettings(MemoryDomains);
|
||||||
_searches = new RamSearchEngine(_settings, MemoryDomains);
|
_searches = new RamSearchEngine(_settings, MemoryDomains);
|
||||||
MessageLabel.Text = "Search restarted";
|
MessageLabel.Text = "Search restarted";
|
||||||
DoDomainSizeCheck();
|
DoDomainSizeCheck();
|
||||||
|
@ -606,9 +606,9 @@ namespace BizHawk.Client.EmuHawk
|
||||||
private void DoDomainSizeCheck()
|
private void DoDomainSizeCheck()
|
||||||
{
|
{
|
||||||
if (_settings.Domain.Size >= MaxDetailedSize
|
if (_settings.Domain.Size >= MaxDetailedSize
|
||||||
&& _settings.Mode == RamSearchEngine.Settings.SearchMode.Detailed)
|
&& _settings.Mode == SearchEngineSettings.SearchMode.Detailed)
|
||||||
{
|
{
|
||||||
_settings.Mode = RamSearchEngine.Settings.SearchMode.Fast;
|
_settings.Mode = SearchEngineSettings.SearchMode.Fast;
|
||||||
SetReboot(true);
|
SetReboot(true);
|
||||||
MessageLabel.Text = "Large domain, switching to fast mode";
|
MessageLabel.Text = "Large domain, switching to fast mode";
|
||||||
}
|
}
|
||||||
|
@ -768,7 +768,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
private void SetToDetailedMode()
|
private void SetToDetailedMode()
|
||||||
{
|
{
|
||||||
_settings.Mode = RamSearchEngine.Settings.SearchMode.Detailed;
|
_settings.Mode = SearchEngineSettings.SearchMode.Detailed;
|
||||||
NumberOfChangesRadio.Enabled = true;
|
NumberOfChangesRadio.Enabled = true;
|
||||||
NumberOfChangesBox.Enabled = true;
|
NumberOfChangesBox.Enabled = true;
|
||||||
DifferenceRadio.Enabled = true;
|
DifferenceRadio.Enabled = true;
|
||||||
|
@ -797,7 +797,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
private void SetToFastMode()
|
private void SetToFastMode()
|
||||||
{
|
{
|
||||||
_settings.Mode = RamSearchEngine.Settings.SearchMode.Fast;
|
_settings.Mode = SearchEngineSettings.SearchMode.Fast;
|
||||||
|
|
||||||
if (_settings.PreviousType == PreviousType.LastFrame || _settings.PreviousType == PreviousType.LastChange)
|
if (_settings.PreviousType == PreviousType.LastFrame || _settings.PreviousType == PreviousType.LastChange)
|
||||||
{
|
{
|
||||||
|
@ -1074,8 +1074,8 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
private void ModeSubMenu_DropDownOpened(object sender, EventArgs e)
|
private void ModeSubMenu_DropDownOpened(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
DetailedMenuItem.Checked = _settings.Mode == RamSearchEngine.Settings.SearchMode.Detailed;
|
DetailedMenuItem.Checked = _settings.Mode == SearchEngineSettings.SearchMode.Detailed;
|
||||||
FastMenuItem.Checked = _settings.Mode == RamSearchEngine.Settings.SearchMode.Fast;
|
FastMenuItem.Checked = _settings.Mode == SearchEngineSettings.SearchMode.Fast;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void MemoryDomainsSubMenu_DropDownOpened(object sender, EventArgs e)
|
private void MemoryDomainsSubMenu_DropDownOpened(object sender, EventArgs e)
|
||||||
|
@ -1152,8 +1152,8 @@ namespace BizHawk.Client.EmuHawk
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
PreviousFrameMenuItem.Enabled = _settings.Mode != RamSearchEngine.Settings.SearchMode.Fast;
|
PreviousFrameMenuItem.Enabled = _settings.Mode != SearchEngineSettings.SearchMode.Fast;
|
||||||
Previous_LastChangeMenuItem.Enabled = _settings.Mode != RamSearchEngine.Settings.SearchMode.Fast;
|
Previous_LastChangeMenuItem.Enabled = _settings.Mode != SearchEngineSettings.SearchMode.Fast;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DetailedMenuItem_Click(object sender, EventArgs e)
|
private void DetailedMenuItem_Click(object sender, EventArgs e)
|
||||||
|
@ -1219,7 +1219,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
private void SearchSubMenu_DropDownOpened(object sender, EventArgs e)
|
private void SearchSubMenu_DropDownOpened(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
ClearChangeCountsMenuItem.Enabled = _settings.Mode == RamSearchEngine.Settings.SearchMode.Detailed;
|
ClearChangeCountsMenuItem.Enabled = _settings.Mode == SearchEngineSettings.SearchMode.Detailed;
|
||||||
|
|
||||||
RemoveMenuItem.Enabled =
|
RemoveMenuItem.Enabled =
|
||||||
AddToRamWatchMenuItem.Enabled =
|
AddToRamWatchMenuItem.Enabled =
|
||||||
|
@ -1410,8 +1410,8 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
RamSearchMenu.Items.Add(WatchListView.ToColumnsMenu(ColumnToggleCallback));
|
RamSearchMenu.Items.Add(WatchListView.ToColumnsMenu(ColumnToggleCallback));
|
||||||
|
|
||||||
_settings = new RamSearchEngine.Settings(MemoryDomains);
|
_settings = new SearchEngineSettings(MemoryDomains);
|
||||||
if (_settings.Mode == RamSearchEngine.Settings.SearchMode.Fast)
|
if (_settings.Mode == SearchEngineSettings.SearchMode.Fast)
|
||||||
{
|
{
|
||||||
SetToFastMode();
|
SetToFastMode();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue