Sub items should not check types

This commit is contained in:
Matt Nadareski
2020-09-30 13:25:40 -07:00
parent d82a911cd9
commit 7fc49203f4
24 changed files with 302 additions and 138 deletions

View File

@@ -74,7 +74,7 @@ namespace SabreTools.Library.DatItems
Default = mappings[Field.DatItem_Default].AsYesNo();
// Field.DatItem_Conditions does not apply here
if (Conditions != null)
if (ConditionsSpecified)
{
foreach (Condition condition in Conditions)
{
@@ -136,7 +136,7 @@ namespace SabreTools.Library.DatItems
return match;
// If the conditions match
if (Conditions != null)
if (ConditionsSpecified)
{
foreach (Condition condition in Conditions)
{
@@ -198,7 +198,7 @@ namespace SabreTools.Library.DatItems
return false;
// Filter on individual conditions
if (Conditions != null)
if (ConditionsSpecified)
{
foreach (Condition condition in Conditions)
{
@@ -226,7 +226,7 @@ namespace SabreTools.Library.DatItems
if (fields.Contains(Field.DatItem_Default))
Default = null;
if (Conditions != null)
if (ConditionsSpecified)
{
foreach (Condition condition in Conditions)
{

View File

@@ -99,9 +99,24 @@ namespace SabreTools.Library.DatItems
/// <returns>True if the item passed the filter, false otherwise</returns>
public override bool PassesFilter(Filter filter)
{
// Check common fields first
if (!base.PassesFilter(filter))
return false;
return PassesFilter(filter, false);
}
/// <summary>
/// Check to see if a DatItem passes the filter
/// </summary>
/// <param name="filter">Filter to check against</param>
/// <param name="sub">True if this is a subitem, false otherwise</param>
/// <returns>True if the item passed the filter, false otherwise</returns>
public bool PassesFilter(Filter filter, bool sub)
{
// If we're a top-level item, check common fields
if (!sub)
{
// Check common fields first
if (!base.PassesFilter(filter))
return false;
}
// Filter on mask
if (!filter.PassStringFilter(filter.DatItem_Analog_Mask, Mask))

View File

@@ -179,10 +179,6 @@ namespace SabreTools.Library.DatItems
/// <returns>True if the item passed the filter, false otherwise</returns>
public bool PassesFilter(Filter filter, bool sub)
{
// Check common fields first
if (!base.PassesFilter(filter))
return false;
if (sub)
{
// Filter on tag
@@ -205,6 +201,10 @@ namespace SabreTools.Library.DatItems
}
else
{
// Check common fields first
if (!base.PassesFilter(filter))
return false;
// Filter on tag
if (!filter.PassStringFilter(filter.DatItem_Tag, Tag))
return false;

View File

@@ -100,7 +100,7 @@ namespace SabreTools.Library.DatItems
if (mappings.Keys.Contains(Field.DatItem_Mask))
Mask = mappings[Field.DatItem_Mask];
if (Conditions != null)
if (ConditionsSpecified)
{
foreach (Condition condition in Conditions)
{
@@ -108,7 +108,7 @@ namespace SabreTools.Library.DatItems
}
}
if (Locations != null)
if (LocationsSpecified)
{
foreach (Location location in Locations)
{
@@ -116,7 +116,7 @@ namespace SabreTools.Library.DatItems
}
}
if (Settings != null)
if (SettingsSpecified)
{
foreach (Setting setting in Settings)
{
@@ -183,7 +183,7 @@ namespace SabreTools.Library.DatItems
return match;
// If the conditions match
if (Conditions != null)
if (ConditionsSpecified)
{
foreach (Condition condition in Conditions)
{
@@ -192,7 +192,7 @@ namespace SabreTools.Library.DatItems
}
// If the locations match
if (Locations != null)
if (LocationsSpecified)
{
foreach (Location location in Locations)
{
@@ -201,7 +201,7 @@ namespace SabreTools.Library.DatItems
}
// If the settings match
if (Settings != null)
if (SettingsSpecified)
{
foreach (Setting setting in Settings)
{
@@ -267,7 +267,7 @@ namespace SabreTools.Library.DatItems
return false;
// Filter on individual conditions
if (Conditions != null)
if (ConditionsSpecified)
{
foreach (Condition condition in Conditions)
{
@@ -277,21 +277,21 @@ namespace SabreTools.Library.DatItems
}
// Filter on individual locations
if (Locations != null)
if (LocationsSpecified)
{
foreach (Location location in Locations)
{
if (!location.PassesFilter(filter))
if (!location.PassesFilter(filter, true))
return false;
}
}
// Filter on individual conditions
if (Settings != null)
if (SettingsSpecified)
{
foreach (Setting setting in Settings)
{
if (!setting.PassesFilter(filter))
if (!setting.PassesFilter(filter, true))
return false;
}
}
@@ -318,7 +318,7 @@ namespace SabreTools.Library.DatItems
if (fields.Contains(Field.DatItem_Mask))
Mask = null;
if (Conditions != null)
if (ConditionsSpecified)
{
foreach (Condition condition in Conditions)
{
@@ -326,7 +326,7 @@ namespace SabreTools.Library.DatItems
}
}
if (Locations != null)
if (LocationsSpecified)
{
foreach (Location location in Locations)
{
@@ -334,7 +334,7 @@ namespace SabreTools.Library.DatItems
}
}
if (Settings != null)
if (SettingsSpecified)
{
foreach (Setting setting in Settings)
{

View File

@@ -262,9 +262,24 @@ namespace SabreTools.Library.DatItems
/// <returns>True if the item passed the filter, false otherwise</returns>
public override bool PassesFilter(Filter filter)
{
// Check common fields first
if (!base.PassesFilter(filter))
return false;
return PassesFilter(filter, false);
}
/// <summary>
/// Check to see if a DatItem passes the filter
/// </summary>
/// <param name="filter">Filter to check against</param>
/// <param name="sub">True if this is a subitem, false otherwise</param>
/// <returns>True if the item passed the filter, false otherwise</returns>
public bool PassesFilter(Filter filter, bool sub)
{
// If we're a top-level item, check common fields
if (!sub)
{
// Check common fields first
if (!base.PassesFilter(filter))
return false;
}
// Filter on control type
if (filter.DatItem_Control_Type.MatchesPositive(ControlType.NULL, ControlType) == false)

View File

@@ -185,9 +185,24 @@ namespace SabreTools.Library.DatItems
/// <returns>True if the item passed the filter, false otherwise</returns>
public override bool PassesFilter(Filter filter)
{
// Check common fields first
if (!base.PassesFilter(filter))
return false;
return PassesFilter(filter, false);
}
/// <summary>
/// Check to see if a DatItem passes the filter
/// </summary>
/// <param name="filter">Filter to check against</param>
/// <param name="sub">True if this is a subitem, false otherwise</param>
/// <returns>True if the item passed the filter, false otherwise</returns>
public bool PassesFilter(Filter filter, bool sub)
{
// If we're a top-level item, check common fields
if (!sub)
{
// Check common fields first
if (!base.PassesFilter(filter))
return false;
}
// Filter on area name
if (!filter.PassStringFilter(filter.DatItem_AreaName, Name))

View File

@@ -109,7 +109,7 @@ namespace SabreTools.Library.DatItems
if (mappings.Keys.Contains(Field.DatItem_Interface))
Interface = mappings[Field.DatItem_Interface];
if (Instances != null)
if (InstancesSpecified)
{
foreach (Instance instance in Instances)
{
@@ -117,7 +117,7 @@ namespace SabreTools.Library.DatItems
}
}
if (Extensions != null)
if (ExtensionsSpecified)
{
foreach (Extension extension in Extensions)
{
@@ -186,7 +186,7 @@ namespace SabreTools.Library.DatItems
return match;
// If the instances match
if (Instances != null)
if (InstancesSpecified)
{
foreach (Instance instance in Instances)
{
@@ -195,7 +195,7 @@ namespace SabreTools.Library.DatItems
}
// If the extensions match
if (Extensions != null)
if (ExtensionsSpecified)
{
foreach (Extension extension in Extensions)
{
@@ -244,21 +244,21 @@ namespace SabreTools.Library.DatItems
return false;
// Filter on individual instances
if (Instances != null)
if (InstancesSpecified)
{
foreach (Instance instance in Instances)
{
if (!instance.PassesFilter(filter))
if (!instance.PassesFilter(filter, true))
return false;
}
}
// Filter on individual extensions
if (Extensions != null)
if (ExtensionsSpecified)
{
foreach (Extension extension in Extensions)
{
if (!extension.PassesFilter(filter))
if (!extension.PassesFilter(filter, true))
return false;
}
}
@@ -291,7 +291,7 @@ namespace SabreTools.Library.DatItems
if (fields.Contains(Field.DatItem_Interface))
Interface = null;
if (Instances != null)
if (InstancesSpecified)
{
foreach (Instance instance in Instances)
{
@@ -299,7 +299,7 @@ namespace SabreTools.Library.DatItems
}
}
if (Extensions != null)
if (ExtensionsSpecified)
{
foreach (Extension extension in Extensions)
{

View File

@@ -129,7 +129,7 @@ namespace SabreTools.Library.DatItems
if (mappings.Keys.Contains(Field.DatItem_Mask))
Mask = mappings[Field.DatItem_Mask];
if (Conditions != null)
if (ConditionsSpecified)
{
foreach (Condition condition in Conditions)
{
@@ -137,7 +137,7 @@ namespace SabreTools.Library.DatItems
}
}
if (Locations != null)
if (LocationsSpecified)
{
foreach (Location location in Locations)
{
@@ -145,7 +145,7 @@ namespace SabreTools.Library.DatItems
}
}
if (Values != null)
if (ValuesSpecified)
{
foreach (Setting value in Values)
{
@@ -226,11 +226,11 @@ namespace SabreTools.Library.DatItems
return match;
// If the part matches
if (Part != null)
if (PartSpecified)
match &= (Part == newOther.Part);
// If the conditions match
if (Conditions != null)
if (ConditionsSpecified)
{
foreach (Condition condition in Conditions)
{
@@ -239,7 +239,7 @@ namespace SabreTools.Library.DatItems
}
// If the locations match
if (Locations != null)
if (LocationsSpecified)
{
foreach (Location location in Locations)
{
@@ -248,7 +248,7 @@ namespace SabreTools.Library.DatItems
}
// If the values match
if (Values != null)
if (ValuesSpecified)
{
foreach (Setting value in Values)
{
@@ -316,7 +316,7 @@ namespace SabreTools.Library.DatItems
return false;
// Filter on individual conditions
if (Conditions != null)
if (ConditionsSpecified)
{
foreach (Condition condition in Conditions)
{
@@ -326,21 +326,21 @@ namespace SabreTools.Library.DatItems
}
// Filter on individual locations
if (Locations != null)
if (LocationsSpecified)
{
foreach (Location location in Locations)
{
if (!location.PassesFilter(filter))
if (!location.PassesFilter(filter, true))
return false;
}
}
// Filter on individual conditions
if (Values != null)
if (ValuesSpecified)
{
foreach (Setting value in Values)
{
if (!value.PassesFilter(filter))
if (!value.PassesFilter(filter, true))
return false;
}
}
@@ -352,7 +352,7 @@ namespace SabreTools.Library.DatItems
// Filter on Part
if (PartSpecified)
{
if (!Part.PassesFilter(filter))
if (!Part.PassesFilter(filter, true))
return false;
}
@@ -383,7 +383,7 @@ namespace SabreTools.Library.DatItems
if (fields.Contains(Field.DatItem_Mask))
Mask = null;
if (Conditions != null)
if (ConditionsSpecified)
{
foreach (Condition condition in Conditions)
{
@@ -391,7 +391,7 @@ namespace SabreTools.Library.DatItems
}
}
if (Locations != null)
if (LocationsSpecified)
{
foreach (Location location in Locations)
{
@@ -399,7 +399,7 @@ namespace SabreTools.Library.DatItems
}
}
if (Values != null)
if (ValuesSpecified)
{
foreach (Setting value in Values)
{
@@ -411,7 +411,7 @@ namespace SabreTools.Library.DatItems
#region SoftwareList
if (Part != null)
if (PartSpecified)
Part.RemoveFields(fields);
#endregion
@@ -477,7 +477,7 @@ namespace SabreTools.Library.DatItems
#region SoftwareList
if (Part != null && newItem.Part != null)
if (PartSpecified && newItem.PartSpecified)
Part.ReplaceFields(newItem.Part, fields);
#endregion

View File

@@ -493,14 +493,14 @@ namespace SabreTools.Library.DatItems
// Filter on DiskArea
if (DiskAreaSpecified)
{
if (!DiskArea.PassesFilter(filter))
if (!DiskArea.PassesFilter(filter, true))
return false;
}
// Filter on Part
if (PartSpecified)
{
if (!Part.PassesFilter(filter))
if (!Part.PassesFilter(filter, true))
return false;
}
@@ -553,10 +553,10 @@ namespace SabreTools.Library.DatItems
#region SoftwareList
if (DiskArea != null)
if (DiskAreaSpecified)
DiskArea.RemoveFields(fields);
if (Part != null)
if (PartSpecified)
Part.RemoveFields(fields);
#endregion
@@ -669,10 +669,10 @@ namespace SabreTools.Library.DatItems
#region SoftwareList
if (DiskArea != null && newItem.DiskArea != null)
if (DiskAreaSpecified && newItem.DiskAreaSpecified)
DiskArea.ReplaceFields(newItem.DiskArea, fields);
if (Part != null && newItem.Part != null)
if (PartSpecified && newItem.PartSpecified)
Part.ReplaceFields(newItem.Part, fields);
#endregion

View File

@@ -140,9 +140,24 @@ namespace SabreTools.Library.DatItems
/// <returns>True if the item passed the filter, false otherwise</returns>
public override bool PassesFilter(Filter filter)
{
// Check common fields first
if (!base.PassesFilter(filter))
return false;
return PassesFilter(filter, false);
}
/// <summary>
/// Check to see if a DatItem passes the filter
/// </summary>
/// <param name="filter">Filter to check against</param>
/// <param name="sub">True if this is a subitem, false otherwise</param>
/// <returns>True if the item passed the filter, false otherwise</returns>
public bool PassesFilter(Filter filter, bool sub)
{
// If we're a top-level item, check common fields
if (!sub)
{
// Check common fields first
if (!base.PassesFilter(filter))
return false;
}
// Filter on area name
if (!filter.PassStringFilter(filter.DatItem_AreaName, Name))

View File

@@ -138,9 +138,24 @@ namespace SabreTools.Library.DatItems
/// <returns>True if the item passed the filter, false otherwise</returns>
public override bool PassesFilter(Filter filter)
{
// Check common fields first
if (!base.PassesFilter(filter))
return false;
return PassesFilter(filter, false);
}
/// <summary>
/// Check to see if a DatItem passes the filter
/// </summary>
/// <param name="filter">Filter to check against</param>
/// <param name="sub">True if this is a subitem, false otherwise</param>
/// <returns>True if the item passed the filter, false otherwise</returns>
public bool PassesFilter(Filter filter, bool sub)
{
// If we're a top-level item, check common fields
if (!sub)
{
// Check common fields first
if (!base.PassesFilter(filter))
return false;
}
// Filter on item name
if (!filter.PassStringFilter(filter.DatItem_Extension_Name, Name))

View File

@@ -93,7 +93,7 @@ namespace SabreTools.Library.DatItems
if (mappings.Keys.Contains(Field.DatItem_Coins))
Coins = Sanitizer.CleanLong(mappings[Field.DatItem_Coins]);
if (Controls != null)
if (ControlsSpecified)
{
foreach (Control control in Controls)
{
@@ -159,7 +159,7 @@ namespace SabreTools.Library.DatItems
return match;
// If the controls match
if (Controls != null)
if (ControlsSpecified)
{
foreach (Control control in Controls)
{
@@ -202,11 +202,11 @@ namespace SabreTools.Library.DatItems
return false;
// Filter on individual controls
if (Controls != null)
if (ControlsSpecified)
{
foreach (Control control in Controls)
{
if (!control.PassesFilter(filter))
if (!control.PassesFilter(filter, true))
return false;
}
}
@@ -236,7 +236,7 @@ namespace SabreTools.Library.DatItems
if (fields.Contains(Field.DatItem_Coins))
Coins = null;
if (Controls != null)
if (ControlsSpecified)
{
foreach (Control control in Controls)
{

View File

@@ -149,9 +149,24 @@ namespace SabreTools.Library.DatItems
/// <returns>True if the item passed the filter, false otherwise</returns>
public override bool PassesFilter(Filter filter)
{
// Check common fields first
if (!base.PassesFilter(filter))
return false;
return PassesFilter(filter, false);
}
/// <summary>
/// Check to see if a DatItem passes the filter
/// </summary>
/// <param name="filter">Filter to check against</param>
/// <param name="sub">True if this is a subitem, false otherwise</param>
/// <returns>True if the item passed the filter, false otherwise</returns>
public bool PassesFilter(Filter filter, bool sub)
{
// If we're a top-level item, check common fields
if (!sub)
{
// Check common fields first
if (!base.PassesFilter(filter))
return false;
}
// Filter on item name
if (!filter.PassStringFilter(filter.DatItem_Instance_Name, Name))

View File

@@ -168,9 +168,24 @@ namespace SabreTools.Library.DatItems
/// <returns>True if the item passed the filter, false otherwise</returns>
public override bool PassesFilter(Filter filter)
{
// Check common fields first
if (!base.PassesFilter(filter))
return false;
return PassesFilter(filter, false);
}
/// <summary>
/// Check to see if a DatItem passes the filter
/// </summary>
/// <param name="filter">Filter to check against</param>
/// <param name="sub">True if this is a subitem, false otherwise</param>
/// <returns>True if the item passed the filter, false otherwise</returns>
public bool PassesFilter(Filter filter, bool sub)
{
// If we're a top-level item, check common fields
if (!sub)
{
// Check common fields first
if (!base.PassesFilter(filter))
return false;
}
// Filter on item name
if (!filter.PassStringFilter(filter.DatItem_Location_Name, Name))

View File

@@ -64,7 +64,7 @@ namespace SabreTools.Library.DatItems
Interface = mappings[Field.DatItem_Part_Interface];
// Handle Feature-specific fields
if (Features != null)
if (FeaturesSpecified)
{
foreach (PartFeature partFeature in Features)
{
@@ -127,7 +127,7 @@ namespace SabreTools.Library.DatItems
return match;
// If the features match
if (Features != null)
if (FeaturesSpecified)
{
foreach (PartFeature partFeature in Features)
{
@@ -176,9 +176,24 @@ namespace SabreTools.Library.DatItems
/// <returns>True if the item passed the filter, false otherwise</returns>
public override bool PassesFilter(Filter filter)
{
// Check common fields first
if (!base.PassesFilter(filter))
return false;
return PassesFilter(filter, false);
}
/// <summary>
/// Check to see if a DatItem passes the filter
/// </summary>
/// <param name="filter">Filter to check against</param>
/// <param name="sub">True if this is a subitem, false otherwise</param>
/// <returns>True if the item passed the filter, false otherwise</returns>
public bool PassesFilter(Filter filter, bool sub)
{
// If we're a top-level item, check common fields
if (!sub)
{
// Check common fields first
if (!base.PassesFilter(filter))
return false;
}
// Filter on part name
if (!filter.PassStringFilter(filter.DatItem_Part_Name, Name))
@@ -189,11 +204,11 @@ namespace SabreTools.Library.DatItems
return false;
// Filter on features
if (Features != null)
if (FeaturesSpecified)
{
foreach (PartFeature partFeature in Features)
{
if (!partFeature.PassesFilter(filter))
if (!partFeature.PassesFilter(filter, true))
return false;
}
}
@@ -217,7 +232,7 @@ namespace SabreTools.Library.DatItems
if (fields.Contains(Field.DatItem_Part_Interface))
Interface = null;
if (Features != null)
if (FeaturesSpecified)
{
foreach (PartFeature partFeature in Features)
{

View File

@@ -149,9 +149,24 @@ namespace SabreTools.Library.DatItems
/// <returns>True if the item passed the filter, false otherwise</returns>
public override bool PassesFilter(Filter filter)
{
// Check common fields first
if (!base.PassesFilter(filter))
return false;
return PassesFilter(filter, false);
}
/// <summary>
/// Check to see if a DatItem passes the filter
/// </summary>
/// <param name="filter">Filter to check against</param>
/// <param name="sub">True if this is a subitem, false otherwise</param>
/// <returns>True if the item passed the filter, false otherwise</returns>
public bool PassesFilter(Filter filter, bool sub)
{
// If we're a top-level item, check common fields
if (!sub)
{
// Check common fields first
if (!base.PassesFilter(filter))
return false;
}
// Filter on name
if (!filter.PassStringFilter(filter.DatItem_Part_Feature_Name, Name))

View File

@@ -49,7 +49,7 @@ namespace SabreTools.Library.DatItems
if (mappings.Keys.Contains(Field.DatItem_Tag))
Tag = mappings[Field.DatItem_Tag];
if (Analogs != null)
if (AnalogsSpecified)
{
foreach (Analog analog in Analogs)
{
@@ -109,7 +109,7 @@ namespace SabreTools.Library.DatItems
return match;
// If the analogs match
if (Analogs != null)
if (AnalogsSpecified)
{
foreach (Analog analog in Analogs)
{
@@ -140,11 +140,11 @@ namespace SabreTools.Library.DatItems
return false;
// Filter on individual analogs
if (Analogs != null)
if (AnalogsSpecified)
{
foreach (Analog analog in Analogs)
{
if (!analog.PassesFilter(filter))
if (!analog.PassesFilter(filter, true))
return false;
}
}
@@ -165,7 +165,7 @@ namespace SabreTools.Library.DatItems
if (fields.Contains(Field.DatItem_Tag))
Tag = null;
if (Analogs != null)
if (AnalogsSpecified)
{
foreach (Analog analog in Analogs)
{

View File

@@ -943,14 +943,14 @@ namespace SabreTools.Library.DatItems
// Filter on DataArea
if (DataAreaSpecified)
{
if (!DataArea.PassesFilter(filter))
if (!DataArea.PassesFilter(filter, true))
return false;
}
// Filter on Part
if (PartSpecified)
{
if (!Part.PassesFilter(filter))
if (!Part.PassesFilter(filter, true))
return false;
}
@@ -1067,10 +1067,10 @@ namespace SabreTools.Library.DatItems
if (fields.Contains(Field.DatItem_Value))
Value = null;
if (DataArea != null)
if (DataAreaSpecified)
DataArea.RemoveFields(fields);
if (Part != null)
if (PartSpecified)
Part.RemoveFields(fields);
#endregion
@@ -1291,10 +1291,10 @@ namespace SabreTools.Library.DatItems
if (fields.Contains(Field.DatItem_Value))
Value = newItem.Value;
if (DataArea != null && newItem.DataArea != null)
if (DataAreaSpecified && newItem.DataAreaSpecified)
DataArea.ReplaceFields(newItem.DataArea, fields);
if (Part != null && newItem.Part != null)
if (PartSpecified && newItem.PartSpecified)
Part.ReplaceFields(newItem.Part, fields);
#endregion

View File

@@ -83,7 +83,7 @@ namespace SabreTools.Library.DatItems
if (mappings.Keys.Contains(Field.DatItem_Setting_Default))
Default = mappings[Field.DatItem_Setting_Default].AsYesNo();
if (Conditions != null)
if (ConditionsSpecified)
{
foreach (Condition condition in Conditions)
{
@@ -148,7 +148,7 @@ namespace SabreTools.Library.DatItems
return match;
// If the conditions match
if (Conditions != null)
if (ConditionsSpecified)
{
foreach (Condition condition in Conditions)
{
@@ -197,9 +197,24 @@ namespace SabreTools.Library.DatItems
/// <returns>True if the item passed the filter, false otherwise</returns>
public override bool PassesFilter(Filter filter)
{
// Check common fields first
if (!base.PassesFilter(filter))
return false;
return PassesFilter(filter, false);
}
/// <summary>
/// Check to see if a DatItem passes the filter
/// </summary>
/// <param name="filter">Filter to check against</param>
/// <param name="sub">True if this is a subitem, false otherwise</param>
/// <returns>True if the item passed the filter, false otherwise</returns>
public bool PassesFilter(Filter filter, bool sub)
{
// If we're a top-level item, check common fields
if (!sub)
{
// Check common fields first
if (!base.PassesFilter(filter))
return false;
}
// Filter on item name
if (!filter.PassStringFilter(filter.DatItem_Setting_Name, Name))
@@ -214,7 +229,7 @@ namespace SabreTools.Library.DatItems
return false;
// Filter on individual conditions
if (Conditions != null)
if (ConditionsSpecified)
{
foreach (Condition condition in Conditions)
{
@@ -245,7 +260,7 @@ namespace SabreTools.Library.DatItems
if (fields.Contains(Field.DatItem_Setting_Default))
Default = null;
if (Conditions != null)
if (ConditionsSpecified)
{
foreach (Condition condition in Conditions)
{

View File

@@ -60,7 +60,7 @@ namespace SabreTools.Library.DatItems
if (mappings.Keys.Contains(Field.DatItem_Name))
Name = mappings[Field.DatItem_Name];
if (SlotOptions != null)
if (SlotOptionsSpecified)
{
foreach (SlotOption slotOption in SlotOptions)
{
@@ -121,7 +121,7 @@ namespace SabreTools.Library.DatItems
return match;
// If the slot options match
if (SlotOptions != null)
if (SlotOptionsSpecified)
{
foreach (SlotOption slotOption in SlotOptions)
{
@@ -179,11 +179,11 @@ namespace SabreTools.Library.DatItems
return false;
// Filter on individual slot options
if (SlotOptions != null)
if (SlotOptionsSpecified)
{
foreach (SlotOption slotOption in SlotOptions)
{
if (!slotOption.PassesFilter(filter))
if (!slotOption.PassesFilter(filter, true))
return false;
}
}
@@ -204,7 +204,7 @@ namespace SabreTools.Library.DatItems
if (fields.Contains(Field.DatItem_Name))
Name = null;
if (SlotOptions != null)
if (SlotOptionsSpecified)
{
foreach (SlotOption slotOption in SlotOptions)
{

View File

@@ -165,9 +165,24 @@ namespace SabreTools.Library.DatItems
/// <returns>True if the item passed the filter, false otherwise</returns>
public override bool PassesFilter(Filter filter)
{
// Check common fields first
if (!base.PassesFilter(filter))
return false;
return PassesFilter(filter, false);
}
/// <summary>
/// Check to see if a DatItem passes the filter
/// </summary>
/// <param name="filter">Filter to check against</param>
/// <param name="sub">True if this is a subitem, false otherwise</param>
/// <returns>True if the item passed the filter, false otherwise</returns>
public bool PassesFilter(Filter filter, bool sub)
{
// If we're a top-level item, check common fields
if (!sub)
{
// Check common fields first
if (!base.PassesFilter(filter))
return false;
}
// Filter on item name
if (!filter.PassStringFilter(filter.DatItem_SlotOption_Name, Name))