everything else

This commit is contained in:
YoshiRulz 2024-08-16 23:49:46 +10:00
parent eee059607a
commit 233a337b91
No known key found for this signature in database
GPG Key ID: C4DE31C245353FB7
2 changed files with 19 additions and 24 deletions

View File

@ -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:

View File

@ -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()