Ram Search - fix float searches
This commit is contained in:
parent
b2feb39c11
commit
ddd3512552
|
@ -542,16 +542,42 @@ namespace BizHawk.Client.Common
|
||||||
case ComparisonOperator.NotEqual:
|
case ComparisonOperator.NotEqual:
|
||||||
return watchList.Where(x => GetValue(x.Address) != x.Previous);
|
return watchList.Where(x => GetValue(x.Address) != x.Previous);
|
||||||
case ComparisonOperator.GreaterThan:
|
case ComparisonOperator.GreaterThan:
|
||||||
|
if (_settings.Type == Watch.DisplayType.Float)
|
||||||
|
{
|
||||||
|
return watchList.Where(x => ToFloat(GetValue(x.Address)) > ToFloat(x.Previous));
|
||||||
|
}
|
||||||
|
|
||||||
return watchList.Where(x => GetValue(x.Address) > x.Previous);
|
return watchList.Where(x => GetValue(x.Address) > x.Previous);
|
||||||
case ComparisonOperator.GreaterThanEqual:
|
case ComparisonOperator.GreaterThanEqual:
|
||||||
|
if (_settings.Type == Watch.DisplayType.Float)
|
||||||
|
{
|
||||||
|
return watchList.Where(x => ToFloat(GetValue(x.Address)) >= ToFloat(x.Previous));
|
||||||
|
}
|
||||||
|
|
||||||
return watchList.Where(x => GetValue(x.Address) >= x.Previous);
|
return watchList.Where(x => GetValue(x.Address) >= x.Previous);
|
||||||
case ComparisonOperator.LessThan:
|
case ComparisonOperator.LessThan:
|
||||||
|
if (_settings.Type == Watch.DisplayType.Float)
|
||||||
|
{
|
||||||
|
return watchList.Where(x => ToFloat(GetValue(x.Address)) < ToFloat(x.Previous));
|
||||||
|
}
|
||||||
|
|
||||||
return watchList.Where(x => GetValue(x.Address) < x.Previous);
|
return watchList.Where(x => GetValue(x.Address) < x.Previous);
|
||||||
case ComparisonOperator.LessThanEqual:
|
case ComparisonOperator.LessThanEqual:
|
||||||
|
if (_settings.Type == Watch.DisplayType.Float)
|
||||||
|
{
|
||||||
|
return watchList.Where(x => ToFloat(GetValue(x.Address)) <= ToFloat(x.Previous));
|
||||||
|
}
|
||||||
|
|
||||||
return watchList.Where(x => GetValue(x.Address) <= x.Previous);
|
return watchList.Where(x => GetValue(x.Address) <= x.Previous);
|
||||||
case ComparisonOperator.DifferentBy:
|
case ComparisonOperator.DifferentBy:
|
||||||
if (_differentBy.HasValue)
|
if (_differentBy.HasValue)
|
||||||
{
|
{
|
||||||
|
if (_settings.Type == Watch.DisplayType.Float)
|
||||||
|
{
|
||||||
|
return watchList.Where(x => (ToFloat(GetValue(x.Address)) + _differentBy.Value == ToFloat(x.Previous))
|
||||||
|
|| (ToFloat(GetValue(x.Address)) - _differentBy.Value == ToFloat(x.Previous)));
|
||||||
|
}
|
||||||
|
|
||||||
return watchList.Where(x => (GetValue(x.Address) + _differentBy.Value == x.Previous) || (GetValue(x.Address) - _differentBy.Value == x.Previous));
|
return watchList.Where(x => (GetValue(x.Address) + _differentBy.Value == x.Previous) || (GetValue(x.Address) - _differentBy.Value == x.Previous));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -569,20 +595,57 @@ namespace BizHawk.Client.Common
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
case ComparisonOperator.Equal:
|
case ComparisonOperator.Equal:
|
||||||
|
if (_settings.Type == Watch.DisplayType.Float)
|
||||||
|
{
|
||||||
|
return watchList.Where(x => ToFloat(GetValue(x.Address)) == _compareValue.Value);
|
||||||
|
}
|
||||||
|
|
||||||
return watchList.Where(x => GetValue(x.Address) == _compareValue.Value);
|
return watchList.Where(x => GetValue(x.Address) == _compareValue.Value);
|
||||||
case ComparisonOperator.NotEqual:
|
case ComparisonOperator.NotEqual:
|
||||||
|
if (_settings.Type == Watch.DisplayType.Float)
|
||||||
|
{
|
||||||
|
return watchList.Where(x => ToFloat(GetValue(x.Address)) != _compareValue.Value);
|
||||||
|
}
|
||||||
|
|
||||||
return watchList.Where(x => GetValue(x.Address) != _compareValue.Value);
|
return watchList.Where(x => GetValue(x.Address) != _compareValue.Value);
|
||||||
|
|
||||||
case ComparisonOperator.GreaterThan:
|
case ComparisonOperator.GreaterThan:
|
||||||
|
if (_settings.Type == Watch.DisplayType.Float)
|
||||||
|
{
|
||||||
|
return watchList.Where(x => ToFloat(GetValue(x.Address)) > ToFloat(_compareValue.Value));
|
||||||
|
}
|
||||||
|
|
||||||
return watchList.Where(x => GetValue(x.Address) > _compareValue.Value);
|
return watchList.Where(x => GetValue(x.Address) > _compareValue.Value);
|
||||||
case ComparisonOperator.GreaterThanEqual:
|
case ComparisonOperator.GreaterThanEqual:
|
||||||
|
if (_settings.Type == Watch.DisplayType.Float)
|
||||||
|
{
|
||||||
|
return watchList.Where(x => ToFloat(GetValue(x.Address)) >= ToFloat(_compareValue.Value));
|
||||||
|
}
|
||||||
|
|
||||||
return watchList.Where(x => GetValue(x.Address) >= _compareValue.Value);
|
return watchList.Where(x => GetValue(x.Address) >= _compareValue.Value);
|
||||||
case ComparisonOperator.LessThan:
|
case ComparisonOperator.LessThan:
|
||||||
|
if (_settings.Type == Watch.DisplayType.Float)
|
||||||
|
{
|
||||||
|
return watchList.Where(x => ToFloat(GetValue(x.Address)) < ToFloat(_compareValue.Value));
|
||||||
|
}
|
||||||
|
|
||||||
return watchList.Where(x => GetValue(x.Address) < _compareValue.Value);
|
return watchList.Where(x => GetValue(x.Address) < _compareValue.Value);
|
||||||
case ComparisonOperator.LessThanEqual:
|
case ComparisonOperator.LessThanEqual:
|
||||||
|
if (_settings.Type == Watch.DisplayType.Float)
|
||||||
|
{
|
||||||
|
return watchList.Where(x => ToFloat(GetValue(x.Address)) <= ToFloat(_compareValue.Value));
|
||||||
|
}
|
||||||
|
|
||||||
return watchList.Where(x => GetValue(x.Address) <= _compareValue.Value);
|
return watchList.Where(x => GetValue(x.Address) <= _compareValue.Value);
|
||||||
case ComparisonOperator.DifferentBy:
|
case ComparisonOperator.DifferentBy:
|
||||||
if (_differentBy.HasValue)
|
if (_differentBy.HasValue)
|
||||||
{
|
{
|
||||||
|
if (_settings.Type == Watch.DisplayType.Float)
|
||||||
|
{
|
||||||
|
return watchList.Where(x => (ToFloat(GetValue(x.Address)) + _differentBy.Value == _compareValue.Value) ||
|
||||||
|
(ToFloat(GetValue(x.Address)) - _differentBy.Value == _compareValue.Value));
|
||||||
|
}
|
||||||
|
|
||||||
return watchList.Where(x => (GetValue(x.Address) + _differentBy.Value == _compareValue.Value) || (GetValue(x.Address) - _differentBy.Value == _compareValue.Value));
|
return watchList.Where(x => (GetValue(x.Address) + _differentBy.Value == _compareValue.Value) || (GetValue(x.Address) - _differentBy.Value == _compareValue.Value));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -698,20 +761,56 @@ namespace BizHawk.Client.Common
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
case ComparisonOperator.Equal:
|
case ComparisonOperator.Equal:
|
||||||
|
if (_settings.Type == Watch.DisplayType.Float)
|
||||||
|
{
|
||||||
|
return watchList.Where(x => (ToFloat(GetValue(x.Address)) - ToFloat(x.Previous)) == _compareValue.Value);
|
||||||
|
}
|
||||||
|
|
||||||
return watchList.Where(x => (GetValue(x.Address) - x.Previous) == _compareValue.Value);
|
return watchList.Where(x => (GetValue(x.Address) - x.Previous) == _compareValue.Value);
|
||||||
case ComparisonOperator.NotEqual:
|
case ComparisonOperator.NotEqual:
|
||||||
|
if (_settings.Type == Watch.DisplayType.Float)
|
||||||
|
{
|
||||||
|
return watchList.Where(x => (ToFloat(GetValue(x.Address)) - x.Previous) != _compareValue.Value);
|
||||||
|
}
|
||||||
|
|
||||||
return watchList.Where(x => (GetValue(x.Address) - x.Previous) != _compareValue.Value);
|
return watchList.Where(x => (GetValue(x.Address) - x.Previous) != _compareValue.Value);
|
||||||
case ComparisonOperator.GreaterThan:
|
case ComparisonOperator.GreaterThan:
|
||||||
|
if (_settings.Type == Watch.DisplayType.Float)
|
||||||
|
{
|
||||||
|
return watchList.Where(x => (ToFloat(GetValue(x.Address)) - x.Previous) > _compareValue.Value);
|
||||||
|
}
|
||||||
|
|
||||||
return watchList.Where(x => (GetValue(x.Address) - x.Previous) > _compareValue.Value);
|
return watchList.Where(x => (GetValue(x.Address) - x.Previous) > _compareValue.Value);
|
||||||
case ComparisonOperator.GreaterThanEqual:
|
case ComparisonOperator.GreaterThanEqual:
|
||||||
|
if (_settings.Type == Watch.DisplayType.Float)
|
||||||
|
{
|
||||||
|
return watchList.Where(x => (ToFloat(GetValue(x.Address)) - x.Previous) >= _compareValue.Value);
|
||||||
|
}
|
||||||
|
|
||||||
return watchList.Where(x => (GetValue(x.Address) - x.Previous) >= _compareValue.Value);
|
return watchList.Where(x => (GetValue(x.Address) - x.Previous) >= _compareValue.Value);
|
||||||
case ComparisonOperator.LessThan:
|
case ComparisonOperator.LessThan:
|
||||||
|
if (_settings.Type == Watch.DisplayType.Float)
|
||||||
|
{
|
||||||
|
return watchList.Where(x => (ToFloat(GetValue(x.Address)) - x.Previous) < _compareValue.Value);
|
||||||
|
}
|
||||||
|
|
||||||
return watchList.Where(x => (GetValue(x.Address) - x.Previous) < _compareValue.Value);
|
return watchList.Where(x => (GetValue(x.Address) - x.Previous) < _compareValue.Value);
|
||||||
case ComparisonOperator.LessThanEqual:
|
case ComparisonOperator.LessThanEqual:
|
||||||
|
if (_settings.Type == Watch.DisplayType.Float)
|
||||||
|
{
|
||||||
|
return watchList.Where(x => (ToFloat(GetValue(x.Address)) - x.Previous) <= _compareValue.Value);
|
||||||
|
}
|
||||||
|
|
||||||
return watchList.Where(x => (GetValue(x.Address) - x.Previous) <= _compareValue.Value);
|
return watchList.Where(x => (GetValue(x.Address) - x.Previous) <= _compareValue.Value);
|
||||||
case ComparisonOperator.DifferentBy:
|
case ComparisonOperator.DifferentBy:
|
||||||
if (_differentBy.HasValue)
|
if (_differentBy.HasValue)
|
||||||
{
|
{
|
||||||
|
if (_settings.Type == Watch.DisplayType.Float)
|
||||||
|
{
|
||||||
|
return watchList.Where(x => (ToFloat(GetValue(x.Address)) - x.Previous + _differentBy.Value == _compareValue) ||
|
||||||
|
(ToFloat(GetValue(x.Address)) - x.Previous - _differentBy.Value == x.Previous));
|
||||||
|
}
|
||||||
|
|
||||||
return watchList.Where(x => (GetValue(x.Address) - x.Previous + _differentBy.Value == _compareValue) || (GetValue(x.Address) - x.Previous - _differentBy.Value == x.Previous));
|
return watchList.Where(x => (GetValue(x.Address) - x.Previous + _differentBy.Value == _compareValue) || (GetValue(x.Address) - x.Previous - _differentBy.Value == x.Previous));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -730,6 +829,12 @@ namespace BizHawk.Client.Common
|
||||||
|
|
||||||
#region Private parts
|
#region Private parts
|
||||||
|
|
||||||
|
private float ToFloat(long val)
|
||||||
|
{
|
||||||
|
var bytes = BitConverter.GetBytes((int)val);
|
||||||
|
return BitConverter.ToSingle(bytes, 0);
|
||||||
|
}
|
||||||
|
|
||||||
private long GetValue(int addr)
|
private long GetValue(int addr)
|
||||||
{
|
{
|
||||||
switch (_settings.Size)
|
switch (_settings.Size)
|
||||||
|
|
Loading…
Reference in New Issue