diff --git a/Filtration.Common/Converters/BooleanInverterConverter.cs b/Filtration.Common/Converters/BooleanInverterConverter.cs
index 31ea68e..2471679 100644
--- a/Filtration.Common/Converters/BooleanInverterConverter.cs
+++ b/Filtration.Common/Converters/BooleanInverterConverter.cs
@@ -4,7 +4,7 @@ using System.Windows.Data;
namespace Filtration.Common.Converters
{
- internal class BoolInverterConverter : IValueConverter
+ public class BooleanInverterConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter,
CultureInfo culture)
diff --git a/Filtration.Common/Styles/SharedResourcesDictionary.xaml b/Filtration.Common/Styles/SharedResourcesDictionary.xaml
index f748b13..1af033f 100644
--- a/Filtration.Common/Styles/SharedResourcesDictionary.xaml
+++ b/Filtration.Common/Styles/SharedResourcesDictionary.xaml
@@ -38,7 +38,7 @@
-
+
diff --git a/Filtration.ObjectModel/BlockItemBaseTypes/ActionBlockItem.cs b/Filtration.ObjectModel/BlockItemBaseTypes/ActionBlockItem.cs
index e4d600c..d920d50 100644
--- a/Filtration.ObjectModel/BlockItemBaseTypes/ActionBlockItem.cs
+++ b/Filtration.ObjectModel/BlockItemBaseTypes/ActionBlockItem.cs
@@ -7,7 +7,6 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
public sealed class ActionBlockItem : BlockItemBase
{
private BlockAction _action;
- private bool _isDirty;
public ActionBlockItem(BlockAction action)
{
@@ -24,7 +23,7 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
OnPropertyChanged();
OnPropertyChanged(nameof(SummaryText));
OnPropertyChanged(nameof(SummaryBackgroundColor));
- OnPropertyChanged(nameof(SummaryText));
+ OnPropertyChanged(nameof(SummaryTextColor));
}
}
@@ -43,17 +42,7 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
public override Color SummaryTextColor => Action == BlockAction.Show ? Colors.Black : Colors.White;
public override int SortOrder => 0;
-
- public override bool IsDirty
- {
- get { return _isDirty; }
- protected set
- {
- _isDirty = value;
- OnPropertyChanged();
- }
- }
-
+
public void ToggleAction()
{
Action = Action == BlockAction.Show ? BlockAction.Hide : BlockAction.Show;
diff --git a/Filtration.ObjectModel/BlockItemBaseTypes/BlockItembase.cs b/Filtration.ObjectModel/BlockItemBaseTypes/BlockItembase.cs
index 9e31481..b6ce2d9 100644
--- a/Filtration.ObjectModel/BlockItemBaseTypes/BlockItembase.cs
+++ b/Filtration.ObjectModel/BlockItemBaseTypes/BlockItembase.cs
@@ -7,6 +7,8 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
{
public abstract class BlockItemBase : IItemFilterBlockItem
{
+ private bool _isDirty;
+
public abstract string PrefixText { get; }
public abstract string OutputText { get; }
public abstract int MaximumAllowed { get; }
@@ -15,7 +17,16 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
public abstract Color SummaryBackgroundColor { get; }
public abstract Color SummaryTextColor { get; }
public abstract int SortOrder { get; }
- public abstract bool IsDirty { get; protected set; }
+
+ public bool IsDirty
+ {
+ get { return _isDirty; }
+ protected set
+ {
+ _isDirty = value;
+ OnPropertyChanged();
+ }
+ }
public event PropertyChangedEventHandler PropertyChanged;
diff --git a/Filtration.ObjectModel/BlockItemBaseTypes/BooleanBlockItem.cs b/Filtration.ObjectModel/BlockItemBaseTypes/BooleanBlockItem.cs
new file mode 100644
index 0000000..780ea13
--- /dev/null
+++ b/Filtration.ObjectModel/BlockItemBaseTypes/BooleanBlockItem.cs
@@ -0,0 +1,38 @@
+namespace Filtration.ObjectModel.BlockItemBaseTypes
+{
+ public abstract class BooleanBlockItem : BlockItemBase
+ {
+ private bool _booleanValue;
+
+ protected BooleanBlockItem()
+ {
+
+ }
+
+ protected BooleanBlockItem(bool booleanValue)
+ {
+ BooleanValue = booleanValue;
+ }
+
+ public bool BooleanValue
+ {
+ get { return _booleanValue; }
+ set
+ {
+ _booleanValue = value;
+ IsDirty = true;
+ OnPropertyChanged();
+ OnPropertyChanged(nameof(SummaryText));
+ }
+ }
+
+ public override string OutputText => PrefixText + " " + BooleanValue;
+ public override string SummaryText => PrefixText + " = " + BooleanValue;
+ public override int MaximumAllowed => 1;
+
+ public void ToggleValue()
+ {
+ BooleanValue = !BooleanValue;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Filtration.ObjectModel/BlockItemBaseTypes/ColorBlockItem.cs b/Filtration.ObjectModel/BlockItemBaseTypes/ColorBlockItem.cs
index 6059d40..f955782 100644
--- a/Filtration.ObjectModel/BlockItemBaseTypes/ColorBlockItem.cs
+++ b/Filtration.ObjectModel/BlockItemBaseTypes/ColorBlockItem.cs
@@ -24,8 +24,6 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
public override string SummaryText => string.Empty;
- public override bool IsDirty { get; protected set; }
-
public ThemeComponent ThemeComponent
{
get { return _themeComponent; }
diff --git a/Filtration.ObjectModel/BlockItemBaseTypes/DualIntegerBlockItem.cs b/Filtration.ObjectModel/BlockItemBaseTypes/DualIntegerBlockItem.cs
index 81c0a8d..5313447 100644
--- a/Filtration.ObjectModel/BlockItemBaseTypes/DualIntegerBlockItem.cs
+++ b/Filtration.ObjectModel/BlockItemBaseTypes/DualIntegerBlockItem.cs
@@ -23,8 +23,6 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
public override Color SummaryBackgroundColor => Colors.Transparent;
public override Color SummaryTextColor => Colors.Transparent;
- public override bool IsDirty { get; protected set; }
-
public int Value
{
get { return _value; }
diff --git a/Filtration.ObjectModel/BlockItemBaseTypes/IntegerBlockItem.cs b/Filtration.ObjectModel/BlockItemBaseTypes/IntegerBlockItem.cs
index c16aabf..6beb767 100644
--- a/Filtration.ObjectModel/BlockItemBaseTypes/IntegerBlockItem.cs
+++ b/Filtration.ObjectModel/BlockItemBaseTypes/IntegerBlockItem.cs
@@ -24,8 +24,6 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
public abstract int Minimum { get; }
public abstract int Maximum { get; }
- public override bool IsDirty { get; protected set; }
-
public int Value
{
get { return _value; }
diff --git a/Filtration.ObjectModel/BlockItemBaseTypes/NumericFilterPredicateBlockItem.cs b/Filtration.ObjectModel/BlockItemBaseTypes/NumericFilterPredicateBlockItem.cs
index 2b88698..e5d38f5 100644
--- a/Filtration.ObjectModel/BlockItemBaseTypes/NumericFilterPredicateBlockItem.cs
+++ b/Filtration.ObjectModel/BlockItemBaseTypes/NumericFilterPredicateBlockItem.cs
@@ -25,9 +25,7 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
public abstract int Minimum { get; }
public abstract int Maximum { get; }
-
- public override bool IsDirty { get; protected set; }
-
+
public NumericFilterPredicate FilterPredicate
{
get { return _filterPredicate; }
diff --git a/Filtration.ObjectModel/BlockItemBaseTypes/StringListBlockItem.cs b/Filtration.ObjectModel/BlockItemBaseTypes/StringListBlockItem.cs
index dd33bbf..2bc001b 100644
--- a/Filtration.ObjectModel/BlockItemBaseTypes/StringListBlockItem.cs
+++ b/Filtration.ObjectModel/BlockItemBaseTypes/StringListBlockItem.cs
@@ -30,8 +30,6 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
public ObservableCollection Items { get; protected set; }
- public override bool IsDirty { get; protected set; }
-
private void OnItemsCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
IsDirty = true;
diff --git a/Filtration.ObjectModel/BlockItemTypes/BackgroundColorBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/BackgroundColorBlockItem.cs
index 992c617..1bcc0bf 100644
--- a/Filtration.ObjectModel/BlockItemTypes/BackgroundColorBlockItem.cs
+++ b/Filtration.ObjectModel/BlockItemTypes/BackgroundColorBlockItem.cs
@@ -16,6 +16,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string PrefixText => "SetBackgroundColor";
public override int MaximumAllowed => 1;
public override string DisplayHeading => "Background Color";
- public override int SortOrder => 13;
+ public override int SortOrder => 15;
}
}
diff --git a/Filtration.ObjectModel/BlockItemTypes/BorderColorBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/BorderColorBlockItem.cs
index 950a97f..4da4384 100644
--- a/Filtration.ObjectModel/BlockItemTypes/BorderColorBlockItem.cs
+++ b/Filtration.ObjectModel/BlockItemTypes/BorderColorBlockItem.cs
@@ -16,6 +16,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string PrefixText => "SetBorderColor";
public override int MaximumAllowed => 1;
public override string DisplayHeading => "Border Color";
- public override int SortOrder => 14;
+ public override int SortOrder => 16;
}
}
diff --git a/Filtration.ObjectModel/BlockItemTypes/CorruptedBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/CorruptedBlockItem.cs
new file mode 100644
index 0000000..02ba979
--- /dev/null
+++ b/Filtration.ObjectModel/BlockItemTypes/CorruptedBlockItem.cs
@@ -0,0 +1,23 @@
+using System.Windows.Media;
+using Filtration.ObjectModel.BlockItemBaseTypes;
+
+namespace Filtration.ObjectModel.BlockItemTypes
+{
+ public sealed class CorruptedBlockItem : BooleanBlockItem
+ {
+ public CorruptedBlockItem()
+ {
+ }
+
+ public CorruptedBlockItem(bool booleanValue) : base(booleanValue)
+ {
+ }
+
+ public override string PrefixText => "Corrupted";
+ public override string DisplayHeading => "Corrupted";
+ public override Color SummaryBackgroundColor => Colors.DarkRed;
+ public override Color SummaryTextColor => Colors.White;
+ public override int SortOrder => 5;
+
+ }
+}
\ No newline at end of file
diff --git a/Filtration.ObjectModel/BlockItemTypes/DropLevelBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/DropLevelBlockItem.cs
index 3374e7f..adf1ab2 100644
--- a/Filtration.ObjectModel/BlockItemTypes/DropLevelBlockItem.cs
+++ b/Filtration.ObjectModel/BlockItemTypes/DropLevelBlockItem.cs
@@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string SummaryText => "Drop Level " + FilterPredicate;
public override Color SummaryBackgroundColor => Colors.DodgerBlue;
public override Color SummaryTextColor => Colors.White;
- public override int SortOrder => 2;
+ public override int SortOrder => 9;
public override int Minimum => 0;
public override int Maximum => 100;
}
diff --git a/Filtration.ObjectModel/BlockItemTypes/FontSizeBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/FontSizeBlockItem.cs
index 7f509be..ffbf68a 100644
--- a/Filtration.ObjectModel/BlockItemTypes/FontSizeBlockItem.cs
+++ b/Filtration.ObjectModel/BlockItemTypes/FontSizeBlockItem.cs
@@ -16,7 +16,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string PrefixText => "SetFontSize";
public override int MaximumAllowed => 1;
public override string DisplayHeading => "Font Size";
- public override int SortOrder => 15;
+ public override int SortOrder => 17;
public override int Minimum => 11;
public override int Maximum => 45;
}
diff --git a/Filtration.ObjectModel/BlockItemTypes/HeightBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/HeightBlockItem.cs
index 9b7b3a7..ccc9727 100644
--- a/Filtration.ObjectModel/BlockItemTypes/HeightBlockItem.cs
+++ b/Filtration.ObjectModel/BlockItemTypes/HeightBlockItem.cs
@@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string SummaryText => "Height " + FilterPredicate;
public override Color SummaryBackgroundColor => Colors.LightBlue;
public override Color SummaryTextColor => Colors.Black;
- public override int SortOrder => 8;
+ public override int SortOrder => 7;
public override int Minimum => 0;
public override int Maximum => 6;
}
diff --git a/Filtration.ObjectModel/BlockItemTypes/IdentifiedBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/IdentifiedBlockItem.cs
new file mode 100644
index 0000000..48f10a2
--- /dev/null
+++ b/Filtration.ObjectModel/BlockItemTypes/IdentifiedBlockItem.cs
@@ -0,0 +1,23 @@
+using System.Windows.Media;
+using Filtration.ObjectModel.BlockItemBaseTypes;
+
+namespace Filtration.ObjectModel.BlockItemTypes
+{
+ public sealed class IdentifiedBlockItem : BooleanBlockItem
+ {
+ public IdentifiedBlockItem()
+ {
+ }
+
+ public IdentifiedBlockItem(bool booleanValue) : base(booleanValue)
+ {
+ }
+
+ public override string PrefixText => "Identified";
+ public override string DisplayHeading => "Identified";
+ public override Color SummaryBackgroundColor => Colors.DarkSlateGray;
+ public override Color SummaryTextColor => Colors.White;
+ public override int SortOrder => 4;
+
+ }
+}
\ No newline at end of file
diff --git a/Filtration.ObjectModel/BlockItemTypes/ItemLevelBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/ItemLevelBlockItem.cs
index de772bc..638d6d2 100644
--- a/Filtration.ObjectModel/BlockItemTypes/ItemLevelBlockItem.cs
+++ b/Filtration.ObjectModel/BlockItemTypes/ItemLevelBlockItem.cs
@@ -20,7 +20,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string SummaryText => "Item Level " + FilterPredicate;
public override Color SummaryBackgroundColor => Colors.DarkSlateGray;
public override Color SummaryTextColor => Colors.White;
- public override int SortOrder => 1;
+ public override int SortOrder => 13;
public override int Minimum => 0;
public override int Maximum => 100;
}
diff --git a/Filtration.ObjectModel/BlockItemTypes/LinkedSocketsBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/LinkedSocketsBlockItem.cs
index beaebd2..7763f0b 100644
--- a/Filtration.ObjectModel/BlockItemTypes/LinkedSocketsBlockItem.cs
+++ b/Filtration.ObjectModel/BlockItemTypes/LinkedSocketsBlockItem.cs
@@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string SummaryText => "Linked Sockets " + FilterPredicate;
public override Color SummaryBackgroundColor => Colors.Gold;
public override Color SummaryTextColor => Colors.Black;
- public override int SortOrder => 6;
+ public override int SortOrder => 0;
public override int Minimum => 0;
public override int Maximum => 6;
}
diff --git a/Filtration.ObjectModel/BlockItemTypes/RarityBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/RarityBlockItem.cs
index 284e5a6..7bd2af0 100644
--- a/Filtration.ObjectModel/BlockItemTypes/RarityBlockItem.cs
+++ b/Filtration.ObjectModel/BlockItemTypes/RarityBlockItem.cs
@@ -30,7 +30,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
((ItemRarity) FilterPredicate.PredicateOperand).GetAttributeDescription();
public override Color SummaryBackgroundColor => Colors.LightCoral;
public override Color SummaryTextColor => Colors.White;
- public override int SortOrder => 4;
+ public override int SortOrder => 12;
public override int Minimum => 0;
public override int Maximum => (int)ItemRarity.Unique;
}
diff --git a/Filtration.ObjectModel/BlockItemTypes/SocketGroupBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/SocketGroupBlockItem.cs
index 932d264..185ee99 100644
--- a/Filtration.ObjectModel/BlockItemTypes/SocketGroupBlockItem.cs
+++ b/Filtration.ObjectModel/BlockItemTypes/SocketGroupBlockItem.cs
@@ -39,7 +39,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override Color SummaryBackgroundColor => Colors.GhostWhite;
public override Color SummaryTextColor => Colors.Black;
- public override int SortOrder => 9;
+ public override int SortOrder => 6;
private SocketColor StringToSocketColor(char socketColorString)
{
diff --git a/Filtration.ObjectModel/BlockItemTypes/SocketsBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/SocketsBlockItem.cs
index e9bae54..0386be1 100644
--- a/Filtration.ObjectModel/BlockItemTypes/SocketsBlockItem.cs
+++ b/Filtration.ObjectModel/BlockItemTypes/SocketsBlockItem.cs
@@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string SummaryText => "Sockets " + FilterPredicate;
public override Color SummaryBackgroundColor => Colors.LightGray;
public override Color SummaryTextColor => Colors.Black;
- public override int SortOrder => 5;
+ public override int SortOrder => 2;
public override int Minimum => 0;
public override int Maximum => 6;
}
diff --git a/Filtration.ObjectModel/BlockItemTypes/SoundBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/SoundBlockItem.cs
index e117b37..a972a0a 100644
--- a/Filtration.ObjectModel/BlockItemTypes/SoundBlockItem.cs
+++ b/Filtration.ObjectModel/BlockItemTypes/SoundBlockItem.cs
@@ -17,6 +17,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string PrefixText => "PlayAlertSound";
public override int MaximumAllowed => 1;
public override string DisplayHeading => "Play Alert Sound";
- public override int SortOrder => 16;
+ public override int SortOrder => 18;
}
}
diff --git a/Filtration.ObjectModel/BlockItemTypes/TextColorBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/TextColorBlockItem.cs
index fe2ed6e..1cb6ba9 100644
--- a/Filtration.ObjectModel/BlockItemTypes/TextColorBlockItem.cs
+++ b/Filtration.ObjectModel/BlockItemTypes/TextColorBlockItem.cs
@@ -16,6 +16,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string PrefixText => "SetTextColor";
public override int MaximumAllowed => 1;
public override string DisplayHeading => "Text Color";
- public override int SortOrder => 12;
+ public override int SortOrder => 14;
}
}
diff --git a/Filtration.ObjectModel/BlockItemTypes/WidthBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/WidthBlockItem.cs
index 5211b0b..2fa7102 100644
--- a/Filtration.ObjectModel/BlockItemTypes/WidthBlockItem.cs
+++ b/Filtration.ObjectModel/BlockItemTypes/WidthBlockItem.cs
@@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string SummaryText => "Width " + FilterPredicate;
public override Color SummaryBackgroundColor => Colors.MediumPurple;
public override Color SummaryTextColor => Colors.White;
- public override int SortOrder => 7;
+ public override int SortOrder => 8;
public override int Minimum => 0;
public override int Maximum => 2;
}
diff --git a/Filtration.ObjectModel/Filtration.ObjectModel.csproj b/Filtration.ObjectModel/Filtration.ObjectModel.csproj
index 93d023e..476cae3 100644
--- a/Filtration.ObjectModel/Filtration.ObjectModel.csproj
+++ b/Filtration.ObjectModel/Filtration.ObjectModel.csproj
@@ -43,7 +43,8 @@
-
+
+
@@ -53,9 +54,11 @@
+
+
diff --git a/Filtration.Parser.Tests/Resources/Issue39TestFilter.txt b/Filtration.Parser.Tests/Resources/Issue39TestFilter.txt
new file mode 100644
index 0000000..950515a
--- /dev/null
+++ b/Filtration.Parser.Tests/Resources/Issue39TestFilter.txt
@@ -0,0 +1,13 @@
+Hide # $flask, lvl
+ ItemLevel > 68
+ Quality < 15
+ Class "Life Flask" "Mana Flask" "Hybrid Flask"
+ BaseType "Flask"
+ SetFontSize 20
+
+Show # $flask, lvl
+ ItemLevel >= 35
+ Class "Life Flask" "Mana Flask"
+ BaseType "Flask"
+ BaseType "Small" "Medium" "Large" "Greater" "Grand"
+ SetFontSize 20
\ No newline at end of file
diff --git a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs
index 16040ff..0ee32fb 100644
--- a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs
+++ b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs
@@ -233,6 +233,40 @@ namespace Filtration.Parser.Tests.Services
Assert.AreEqual(FilterPredicateOperator.Equal, blockItem.FilterPredicate.PredicateOperator);
}
+ [Test]
+ public void TranslateStringToItemFilterBlock_Corrupted_ReturnsCorrectObject()
+ {
+ // Arrange
+ var inputString = "Show" + Environment.NewLine +
+ " Corrupted True";
+
+ // Act
+ var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null);
+
+ // Assert
+
+ Assert.AreEqual(1, result.BlockItems.Count(b => b is CorruptedBlockItem));
+ var blockItem = result.BlockItems.OfType().First();
+ Assert.IsTrue(blockItem.BooleanValue);
+ }
+
+ [Test]
+ public void TranslateStringToItemFilterBlock_Identified_ReturnsCorrectObject()
+ {
+ // Arrange
+ var inputString = "Show" + Environment.NewLine +
+ " Identified True";
+
+ // Act
+ var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null);
+
+ // Assert
+
+ Assert.AreEqual(1, result.BlockItems.Count(b => b is IdentifiedBlockItem));
+ var blockItem = result.BlockItems.OfType().First();
+ Assert.IsTrue(blockItem.BooleanValue);
+ }
+
[Test]
public void TranslateStringToItemFilterBlock_Quality_ReturnsCorrectObject()
{
@@ -624,6 +658,8 @@ namespace Filtration.Parser.Tests.Services
" DropLevel < 70" + Environment.NewLine +
" Quality = 15" + Environment.NewLine +
" Rarity <= Unique" + Environment.NewLine +
+ " Identified True" + Environment.NewLine +
+ " Corrupted false" + Environment.NewLine +
@" Class ""My Item Class"" AnotherClass ""AndAnotherClass""" + Environment.NewLine +
@" BaseType MyBaseType ""Another BaseType""" + Environment.NewLine +
" JunkLine Let's ignore this one!" + Environment.NewLine +
@@ -646,6 +682,12 @@ namespace Filtration.Parser.Tests.Services
Assert.AreEqual(FilterPredicateOperator.GreaterThanOrEqual, itemLevelblockItem.FilterPredicate.PredicateOperator);
Assert.AreEqual(50, itemLevelblockItem.FilterPredicate.PredicateOperand);
+ var corruptedBlockItem = result.BlockItems.OfType().First();
+ Assert.IsFalse(corruptedBlockItem.BooleanValue);
+
+ var identifiedBlockItem = result.BlockItems.OfType().First();
+ Assert.IsTrue(identifiedBlockItem.BooleanValue);
+
var dropLevelblockItem = result.BlockItems.OfType().First();
Assert.AreEqual(FilterPredicateOperator.LessThan, dropLevelblockItem.FilterPredicate.PredicateOperator);
Assert.AreEqual(70, dropLevelblockItem.FilterPredicate.PredicateOperand);
@@ -1027,6 +1069,70 @@ namespace Filtration.Parser.Tests.Services
Assert.AreEqual(expectedResult, result);
}
+ [Test]
+ public void TranslateItemFilterBlockToString_IdentifiedTrue_ReturnsCorrectString()
+ {
+ // Arrange
+ var expectedResult = "Show" + Environment.NewLine +
+ " Identified True";
+
+ _testUtility.TestBlock.BlockItems.Add(new IdentifiedBlockItem(true));
+
+ // Act
+ var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock);
+
+ // Assert
+ Assert.AreEqual(expectedResult, result);
+ }
+
+ [Test]
+ public void TranslateItemFilterBlockToString_IdentifiedFalse_ReturnsCorrectString()
+ {
+ // Arrange
+ var expectedResult = "Show" + Environment.NewLine +
+ " Identified False";
+
+ _testUtility.TestBlock.BlockItems.Add(new IdentifiedBlockItem(false));
+
+ // Act
+ var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock);
+
+ // Assert
+ Assert.AreEqual(expectedResult, result);
+ }
+
+ [Test]
+ public void TranslateItemFilterBlockToString_CorruptedTrue_ReturnsCorrectString()
+ {
+ // Arrange
+ var expectedResult = "Show" + Environment.NewLine +
+ " Corrupted True";
+
+ _testUtility.TestBlock.BlockItems.Add(new CorruptedBlockItem(true));
+
+ // Act
+ var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock);
+
+ // Assert
+ Assert.AreEqual(expectedResult, result);
+ }
+
+ [Test]
+ public void TranslateItemFilterBlockToString_CorruptedFalse_ReturnsCorrectString()
+ {
+ // Arrange
+ var expectedResult = "Show" + Environment.NewLine +
+ " Corrupted False";
+
+ _testUtility.TestBlock.BlockItems.Add(new CorruptedBlockItem(false));
+
+ // Act
+ var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock);
+
+ // Assert
+ Assert.AreEqual(expectedResult, result);
+ }
+
[Test]
public void TranslateItemFilterBlockToString_DropLevel_ReturnsCorrectString()
{
@@ -1417,25 +1523,30 @@ namespace Filtration.Parser.Tests.Services
{
// Arrange
var expectedResult = "Show" + Environment.NewLine +
- " ItemLevel > 70" + Environment.NewLine +
- " ItemLevel <= 85" + Environment.NewLine +
- " DropLevel > 56" + Environment.NewLine +
- " Quality > 2" + Environment.NewLine +
- " Rarity = Unique" + Environment.NewLine +
- " Sockets <= 6" + Environment.NewLine +
+
" LinkedSockets >= 4" + Environment.NewLine +
- " Width = 3" + Environment.NewLine +
+ " Sockets <= 6" + Environment.NewLine +
+ " Quality > 2" + Environment.NewLine +
+ " Identified True" + Environment.NewLine +
+ " Corrupted False" + Environment.NewLine +
" Height <= 6" + Environment.NewLine +
" Height >= 2" + Environment.NewLine +
+ " Width = 3" + Environment.NewLine +
+ " DropLevel > 56" + Environment.NewLine +
" Class \"Body Armour\" \"Gloves\" \"Belt\" \"Two Hand Axes\"" + Environment.NewLine +
- " BaseType \"Greater Life Flask\" \"Simple Robe\" \"Full Wyrmscale\"" +
- Environment.NewLine +
+ " BaseType \"Greater Life Flask\" \"Simple Robe\" \"Full Wyrmscale\"" + Environment.NewLine +
+ " Rarity = Unique" + Environment.NewLine +
+ " ItemLevel > 70" + Environment.NewLine +
+ " ItemLevel <= 85" + Environment.NewLine +
" SetTextColor 255 89 0 56" + Environment.NewLine +
" SetBackgroundColor 0 0 0" + Environment.NewLine +
" SetBorderColor 255 1 254" + Environment.NewLine +
" SetFontSize 50" + Environment.NewLine +
" PlayAlertSound 6 90";
+ _testUtility.TestBlock.BlockItems.Add(new ActionBlockItem(BlockAction.Show));
+ _testUtility.TestBlock.BlockItems.Add(new IdentifiedBlockItem(true));
+ _testUtility.TestBlock.BlockItems.Add(new CorruptedBlockItem(false));
_testUtility.TestBlock.BlockItems.Add(new ActionBlockItem(BlockAction.Show));
_testUtility.TestBlock.BlockItems.Add(new ItemLevelBlockItem(FilterPredicateOperator.GreaterThan, 70));
_testUtility.TestBlock.BlockItems.Add(new ItemLevelBlockItem(FilterPredicateOperator.LessThanOrEqual, 85));
diff --git a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs
index 3ce3570..d2b9bcf 100644
--- a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs
+++ b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs
@@ -129,6 +129,16 @@ namespace Filtration.Parser.Services
AddStringListItemToBlockItems(block, trimmedLine);
break;
}
+ case "Corrupted":
+ {
+ AddBooleanItemToBlockItems(block, trimmedLine);
+ break;
+ }
+ case "Identified":
+ {
+ AddBooleanItemToBlockItems(block, trimmedLine);
+ break;
+ }
case "Sockets":
{
AddNumericFilterPredicateItemToBlockItems(block, trimmedLine);
@@ -240,6 +250,17 @@ namespace Filtration.Parser.Services
}
}
+ private static void AddBooleanItemToBlockItems(IItemFilterBlock block, string inputString) where T : BooleanBlockItem
+ {
+ var blockItem = Activator.CreateInstance();
+ var splitString = inputString.Split(' ');
+ if (splitString.Length == 2)
+ {
+ blockItem.BooleanValue = splitString[1].Trim().ToLowerInvariant() == "true";
+ block.BlockItems.Add(blockItem);
+ }
+ }
+
private static void AddNumericFilterPredicateItemToBlockItems(IItemFilterBlock block, string inputString) where T : NumericFilterPredicateBlockItem
{
var blockItem = Activator.CreateInstance();
diff --git a/Filtration/UserControls/BlockItemControl.xaml b/Filtration/UserControls/BlockItemControl.xaml
index 3935e21..dbb8e2e 100644
--- a/Filtration/UserControls/BlockItemControl.xaml
+++ b/Filtration/UserControls/BlockItemControl.xaml
@@ -4,6 +4,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:userControls="clr-namespace:Filtration.UserControls"
+ xmlns:commonConverters="clr-namespace:Filtration.Common.Converters;assembly=Filtration.Common"
xmlns:blockItemBaseTypes="clr-namespace:Filtration.ObjectModel.BlockItemBaseTypes;assembly=Filtration.ObjectModel"
xmlns:blockItemTypes="clr-namespace:Filtration.ObjectModel.BlockItemTypes;assembly=Filtration.ObjectModel"
xmlns:extensions="clr-namespace:Filtration.Extensions"
@@ -13,6 +14,9 @@
mc:Ignorable="d"
d:DataContext="{d:DesignInstance Type=userControls:BlockItemControl}"
d:DesignHeight="200" d:DesignWidth="160">
+
+
+
@@ -34,6 +38,14 @@
Hide
+
+
+
+
+ True
+ False
+
+
diff --git a/Filtration/ViewModels/ItemFilterBlockViewModel.cs b/Filtration/ViewModels/ItemFilterBlockViewModel.cs
index dca443d..250e4d7 100644
--- a/Filtration/ViewModels/ItemFilterBlockViewModel.cs
+++ b/Filtration/ViewModels/ItemFilterBlockViewModel.cs
@@ -187,7 +187,9 @@ namespace Filtration.ViewModels
typeof (HeightBlockItem),
typeof (SocketGroupBlockItem),
typeof (ClassBlockItem),
- typeof (BaseTypeBlockItem)
+ typeof (BaseTypeBlockItem),
+ typeof (IdentifiedBlockItem),
+ typeof (CorruptedBlockItem)
};
public List AudioVisualBlockItemTypesAvailable => new List