everything else
This commit is contained in:
parent
eee059607a
commit
233a337b91
|
@ -89,10 +89,12 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
|||
_watchList[index].Previous,
|
||||
_settings.IsDetailed() ? _watchList[index].ChangeCount : 0);
|
||||
|
||||
public int DoSearch()
|
||||
public int DoSearch(bool updatePrevious)
|
||||
{
|
||||
int before = _watchList.Length;
|
||||
|
||||
Update(updatePrevious);
|
||||
|
||||
using (Domain.EnterExit())
|
||||
{
|
||||
_watchList = _compareTo switch
|
||||
|
@ -169,12 +171,12 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
|||
/// </remarks>
|
||||
public int? DifferentBy { get; set; }
|
||||
|
||||
public void Update()
|
||||
public void Update(bool updatePrevious)
|
||||
{
|
||||
using var @lock = _settings.Domain.EnterExit();
|
||||
foreach (var watch in _watchList)
|
||||
{
|
||||
watch.Update(_settings.PreviousType, _settings.Domain, _settings.BigEndian);
|
||||
watch.Update(updatePrevious ? _settings.PreviousType : PreviousType.Original, _settings.Domain, _settings.BigEndian);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -182,20 +184,13 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
|||
|
||||
public void SetEndian(bool bigEndian) => _settings.BigEndian = bigEndian;
|
||||
|
||||
/// <exception cref="InvalidOperationException"><see cref="Mode"/> is <see cref="SearchMode.Fast"/> and <paramref name="type"/> is <see cref="PreviousType.LastFrame"/></exception>
|
||||
public void SetPreviousType(PreviousType type)
|
||||
{
|
||||
if (_settings.IsFastMode() && type == PreviousType.LastFrame)
|
||||
{
|
||||
throw new InvalidOperationException();
|
||||
}
|
||||
public void SetPreviousType(PreviousType type) => _settings.PreviousType = type;
|
||||
|
||||
_settings.PreviousType = type;
|
||||
}
|
||||
public void SetMode(SearchMode mode) => _settings.Mode = mode;
|
||||
|
||||
public void SetPreviousToCurrent()
|
||||
{
|
||||
Array.ForEach(_watchList, w => w.SetPreviousToCurrent(_settings.Domain, _settings.BigEndian));
|
||||
Array.ForEach(_watchList, static w => w.SetPreviousToCurrent());
|
||||
}
|
||||
|
||||
public void ClearChangeCounts()
|
||||
|
@ -450,7 +445,7 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
|||
|
||||
private IEnumerable<IMiniWatch> CompareChanges(IEnumerable<IMiniWatch> watchList)
|
||||
{
|
||||
if (CompareValue is not long compareValue) throw new InvalidCastException(); //TODO typo for IOE?
|
||||
if (CompareValue is not long compareValue) throw new InvalidOperationException();
|
||||
switch (Operator)
|
||||
{
|
||||
default:
|
||||
|
|
|
@ -270,8 +270,6 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
if (_searches.Count > 0)
|
||||
{
|
||||
_searches.Update();
|
||||
|
||||
if (_autoSearch)
|
||||
{
|
||||
if (InputPollableCore != null && Settings.AutoSearchTakeLagFramesIntoAccount && InputPollableCore.IsLagFrame)
|
||||
|
@ -280,21 +278,24 @@ namespace BizHawk.Client.EmuHawk
|
|||
}
|
||||
else
|
||||
{
|
||||
DoSearch();
|
||||
DoSearch(true);
|
||||
}
|
||||
}
|
||||
else if (_settings.IsDetailed())
|
||||
{
|
||||
_searches.Update(true);
|
||||
}
|
||||
|
||||
_forcePreviewClear = false;
|
||||
WatchListView.RowCount = _searches.Count;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: this seems to be missing some logic from FrameUpdate that probably should exist here
|
||||
private void MinimalUpdate()
|
||||
{
|
||||
if (_searches.Count > 0)
|
||||
{
|
||||
_searches.Update();
|
||||
|
||||
if (_autoSearch)
|
||||
{
|
||||
DoSearch();
|
||||
|
@ -521,14 +522,14 @@ namespace BizHawk.Client.EmuHawk
|
|||
}
|
||||
}
|
||||
|
||||
public void DoSearch()
|
||||
public void DoSearch(bool updatePrevious = false)
|
||||
{
|
||||
_searches.CompareValue = CompareToValue;
|
||||
_searches.DifferentBy = DifferentByValue;
|
||||
_searches.Operator = Operator;
|
||||
_searches.CompareTo = Compare;
|
||||
|
||||
var removed = _searches.DoSearch();
|
||||
var removed = _searches.DoSearch(updatePrevious);
|
||||
UpdateList();
|
||||
SetRemovedMessage(removed);
|
||||
ToggleSearchDependentToolBarItems();
|
||||
|
@ -587,7 +588,6 @@ namespace BizHawk.Client.EmuHawk
|
|||
&& _settings.IsDetailed())
|
||||
{
|
||||
_settings.Mode = SearchMode.Fast;
|
||||
SetReboot(true);
|
||||
MessageLabel.Text = "Large domain, switching to fast mode";
|
||||
}
|
||||
}
|
||||
|
@ -753,6 +753,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
private void SetToDetailedMode()
|
||||
{
|
||||
_settings.Mode = SearchMode.Detailed;
|
||||
_searches.SetMode(SearchMode.Detailed);
|
||||
NumberOfChangesRadio.Enabled = true;
|
||||
NumberOfChangesBox.Enabled = true;
|
||||
DifferenceRadio.Enabled = true;
|
||||
|
@ -763,7 +764,6 @@ namespace BizHawk.Client.EmuHawk
|
|||
ChangesMenuItem.Checked = true;
|
||||
|
||||
ColumnToggleCallback();
|
||||
SetReboot(true);
|
||||
}
|
||||
|
||||
private ToolStripMenuItem ChangesMenuItem
|
||||
|
@ -782,6 +782,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
private void SetToFastMode()
|
||||
{
|
||||
_settings.Mode = SearchMode.Fast;
|
||||
_searches.SetMode(SearchMode.Fast);
|
||||
|
||||
if (_settings.PreviousType == PreviousType.LastFrame || _settings.PreviousType == PreviousType.LastChange)
|
||||
{
|
||||
|
@ -802,7 +803,6 @@ namespace BizHawk.Client.EmuHawk
|
|||
ChangesMenuItem.Checked = false;
|
||||
|
||||
ColumnToggleCallback();
|
||||
SetReboot(true);
|
||||
}
|
||||
|
||||
private void RemoveAddresses()
|
||||
|
|
Loading…
Reference in New Issue