diff --git a/Filtration.ObjectModel.Tests/Filtration.ObjectModel.Tests.csproj b/Filtration.ObjectModel.Tests/Filtration.ObjectModel.Tests.csproj index 69dd6ef..62cfed3 100644 --- a/Filtration.ObjectModel.Tests/Filtration.ObjectModel.Tests.csproj +++ b/Filtration.ObjectModel.Tests/Filtration.ObjectModel.Tests.csproj @@ -66,6 +66,9 @@ <ItemGroup> <None Include="packages.config" /> </ItemGroup> + <ItemGroup> + <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" /> + </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets. diff --git a/Filtration.ObjectModel/BlockItemTypes/BackgroundColorBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/BackgroundColorBlockItem.cs index 3765b3a..2e4bacd 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 => 18; + public override int SortOrder => 21; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/BaseTypeBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/BaseTypeBlockItem.cs index cb78a03..3eb1bf0 100644 --- a/Filtration.ObjectModel/BlockItemTypes/BaseTypeBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/BaseTypeBlockItem.cs @@ -33,6 +33,6 @@ namespace Filtration.ObjectModel.BlockItemTypes public override Color SummaryBackgroundColor => Colors.MediumTurquoise; public override Color SummaryTextColor => Colors.Black; - public override int SortOrder => 16; + public override int SortOrder => 18; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/BorderColorBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/BorderColorBlockItem.cs index 3668f33..d308521 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 => 19; + public override int SortOrder => 22; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/ClassBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/ClassBlockItem.cs index 3da7e0a..ef5d250 100644 --- a/Filtration.ObjectModel/BlockItemTypes/ClassBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/ClassBlockItem.cs @@ -33,6 +33,6 @@ namespace Filtration.ObjectModel.BlockItemTypes public override Color SummaryBackgroundColor => Colors.MediumSeaGreen; public override Color SummaryTextColor => Colors.White; - public override int SortOrder => 15; + public override int SortOrder => 17; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/FontSizeBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/FontSizeBlockItem.cs index 62feaf7..dcd47bf 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 => 20; + public override int SortOrder => 23; public override int Minimum => 11; public override int Maximum => 45; } diff --git a/Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs new file mode 100644 index 0000000..da65452 --- /dev/null +++ b/Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs @@ -0,0 +1,18 @@ +using System.Windows.Media; +using Filtration.ObjectModel.BlockItemBaseTypes; + +namespace Filtration.ObjectModel.BlockItemTypes +{ + public class GemLevelBlockItem : NumericFilterPredicateBlockItem + { + public override string PrefixText => "GemLevel"; + public override int MaximumAllowed => 2; + public override string DisplayHeading => "Gem Level"; + public override string SummaryText => "Gem Level " + FilterPredicate; + public override Color SummaryBackgroundColor => Colors.DarkSlateGray; + public override Color SummaryTextColor => Colors.White; + public override int SortOrder => 14; + public override int Minimum => 0; + public override int Maximum => 40; + } +} diff --git a/Filtration.ObjectModel/BlockItemTypes/HasExplicitModBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/HasExplicitModBlockItem.cs new file mode 100644 index 0000000..363c571 --- /dev/null +++ b/Filtration.ObjectModel/BlockItemTypes/HasExplicitModBlockItem.cs @@ -0,0 +1,38 @@ +using System.Linq; +using System.Windows.Media; +using Filtration.ObjectModel.BlockItemBaseTypes; + +namespace Filtration.ObjectModel.BlockItemTypes +{ + public class HasExplicitModBlockItem : StringListBlockItem + { + public override string PrefixText => "HasExplicitMod"; + public override int MaximumAllowed => 1; + public override string DisplayHeading => "Has Explicit Mod"; + + public override string SummaryText + { + get + { + if (Items.Count > 0 && Items.Count < 4) + { + return "Item Explicit Mods: " + + Items.Aggregate(string.Empty, (current, i) => current + i + ", ").TrimEnd(' ').TrimEnd(','); + } + if (Items.Count >= 4) + { + var remaining = Items.Count - 3; + return "Item Explicit Mods: " + Items.Take(3) + .Aggregate(string.Empty, (current, i) => current + i + ", ") + .TrimEnd(' ') + .TrimEnd(',') + " (+" + remaining + " more)"; + } + return "Item Explicit Mods: (none)"; + } + } + + public override Color SummaryBackgroundColor => Colors.MidnightBlue; + public override Color SummaryTextColor => Colors.White; + public override int SortOrder => 19; + } +} diff --git a/Filtration.ObjectModel/BlockItemTypes/PositionalSoundBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/PositionalSoundBlockItem.cs index 076b845..bccabb5 100644 --- a/Filtration.ObjectModel/BlockItemTypes/PositionalSoundBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/PositionalSoundBlockItem.cs @@ -17,6 +17,6 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string PrefixText => "PlayAlertSoundPositional"; public override int MaximumAllowed => 1; public override string DisplayHeading => "Play Positional Alert Sound"; - public override int SortOrder => 22; + public override int SortOrder => 25; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/RarityBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/RarityBlockItem.cs index 24ac5ef..eb9203a 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 => 14; + public override int SortOrder => 16; public override int Minimum => 0; public override int Maximum => (int)ItemRarity.Unique; } diff --git a/Filtration.ObjectModel/BlockItemTypes/SoundBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/SoundBlockItem.cs index 1d8233a..bd1776f 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 => 21; + public override int SortOrder => 24; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs new file mode 100644 index 0000000..4ea5ec0 --- /dev/null +++ b/Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs @@ -0,0 +1,18 @@ +using System.Windows.Media; +using Filtration.ObjectModel.BlockItemBaseTypes; + +namespace Filtration.ObjectModel.BlockItemTypes +{ + public class StackSizeBlockItem : NumericFilterPredicateBlockItem + { + public override string PrefixText => "StackSize"; + public override int MaximumAllowed => 2; + public override string DisplayHeading => "Stack Size"; + public override string SummaryText => "Stack Size " + FilterPredicate; + public override Color SummaryBackgroundColor => Colors.DarkSlateGray; + public override Color SummaryTextColor => Colors.White; + public override int SortOrder => 15; + public override int Minimum => 0; + public override int Maximum => 1000; + } +} diff --git a/Filtration.ObjectModel/BlockItemTypes/TextColorBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/TextColorBlockItem.cs index 81f36a6..2b7cc5d 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 => 17; + public override int SortOrder => 20; } } diff --git a/Filtration.ObjectModel/Filtration.ObjectModel.csproj b/Filtration.ObjectModel/Filtration.ObjectModel.csproj index 0c3638b..81baa3b 100644 --- a/Filtration.ObjectModel/Filtration.ObjectModel.csproj +++ b/Filtration.ObjectModel/Filtration.ObjectModel.csproj @@ -61,6 +61,8 @@ <Compile Include="BlockItemTypes\BaseTypeBlockItem.cs" /> <Compile Include="BlockItemTypes\BorderColorBlockItem.cs" /> <Compile Include="BlockItemTypes\ClassBlockItem.cs" /> + <Compile Include="BlockItemTypes\GemLevelBlockItem.cs" /> + <Compile Include="BlockItemTypes\HasExplicitModBlockItem.cs" /> <Compile Include="BlockItemTypes\ShapedMapBlockItem.cs" /> <Compile Include="BlockItemTypes\ShaperItemBlockItem.cs" /> <Compile Include="BlockItemTypes\ElderItemBlockItem.cs" /> @@ -77,9 +79,10 @@ <Compile Include="BlockItemTypes\SocketsBlockItem.cs" /> <Compile Include="BlockItemTypes\PositionalSoundBlockItem.cs" /> <Compile Include="BlockItemTypes\SoundBlockItem.cs" /> + <Compile Include="BlockItemTypes\StackSizeBlockItem.cs" /> <Compile Include="BlockItemTypes\TextColorBlockItem.cs" /> <Compile Include="BlockItemTypes\WidthBlockItem.cs" /> - <Compile Include="Commands\CommandManager.cs" /> + <Compile Include="Commands\CommandManager.cs" /> <Compile Include="Commands\ICommand.cs" /> <Compile Include="Commands\ItemFilterScript\PasteBlockCommand.cs" /> <Compile Include="Commands\ItemFilterScript\MoveBlockToBottomCommand.cs" /> @@ -100,7 +103,7 @@ <Compile Include="Enums\ThemeComponentType.cs" /> <Compile Include="Extensions\EnumHelper.cs" /> <Compile Include="Extensions\ItemRarityExtensions.cs" /> - <Compile Include="Factories\IItemFilterScriptFactory.cs" /> + <Compile Include="Factories\IItemFilterScriptFactory.cs" /> <Compile Include="FilteredItem.cs" /> <Compile Include="IAudioVisualBlockItem.cs" /> <Compile Include="IItemFilterBlockItem.cs" /> @@ -108,7 +111,7 @@ <Compile Include="ItemFilterBlock.cs" /> <Compile Include="ItemFilterBlockGroup.cs" /> <Compile Include="ItemFilterScript.cs" /> - <Compile Include="ItemFilterScriptSettings.cs" /> + <Compile Include="ItemFilterScriptSettings.cs" /> <Compile Include="ItemSet.cs" /> <Compile Include="NumericFilterPredicate.cs" /> <Compile Include="PathOfExileNamedColors.cs" /> diff --git a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs index 1168731..5e30f47 100644 --- a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs +++ b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs @@ -266,6 +266,21 @@ namespace Filtration.Parser.Services } break; } + case "GemLevel": + { + AddNumericFilterPredicateItemToBlockItems<GemLevelBlockItem>(block, trimmedLine); + break; + } + case "StackSize": + { + AddNumericFilterPredicateItemToBlockItems<StackSizeBlockItem>(block, trimmedLine); + break; + } + case "HasExplicitMod": + { + AddStringListItemToBlockItems<HasExplicitModBlockItem>(block, trimmedLine); + break; + } } } diff --git a/Filtration.Tests/Filtration.Tests.csproj b/Filtration.Tests/Filtration.Tests.csproj index 4d15320..d623069 100644 --- a/Filtration.Tests/Filtration.Tests.csproj +++ b/Filtration.Tests/Filtration.Tests.csproj @@ -107,6 +107,9 @@ <LastGenOutput>Resources.Designer.cs</LastGenOutput> </EmbeddedResource> </ItemGroup> + <ItemGroup> + <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" /> + </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets. diff --git a/Filtration.ThemeEditor.Tests/Filtration.ThemeEditor.Tests.csproj b/Filtration.ThemeEditor.Tests/Filtration.ThemeEditor.Tests.csproj index 88b49fc..3cf29d5 100644 --- a/Filtration.ThemeEditor.Tests/Filtration.ThemeEditor.Tests.csproj +++ b/Filtration.ThemeEditor.Tests/Filtration.ThemeEditor.Tests.csproj @@ -73,6 +73,9 @@ <ItemGroup> <None Include="packages.config" /> </ItemGroup> + <ItemGroup> + <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" /> + </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets. diff --git a/Filtration/UserControls/BlockItemControl.xaml b/Filtration/UserControls/BlockItemControl.xaml index c9dfba3..a9f2962 100644 --- a/Filtration/UserControls/BlockItemControl.xaml +++ b/Filtration/UserControls/BlockItemControl.xaml @@ -75,7 +75,12 @@ <DataTemplate DataType="{x:Type blockItemTypes:BaseTypeBlockItem}"> <userControls:EditableListBoxControl Margin="5,5,5,5" ItemsSource="{Binding Items}" AutoCompleteItemsSource="{Binding ElementName=TopLevelGrid, Path=DataContext.AutoCompleteItemBaseTypes}" /> </DataTemplate> - + + <!-- Explicit Mods Template --> + <DataTemplate DataType="{x:Type blockItemTypes:HasExplicitModBlockItem}"> + <userControls:EditableListBoxControl Margin="5,5,5,5" ItemsSource="{Binding Items}" /> + </DataTemplate> + <!-- Socket Groups Template --> <DataTemplate DataType="{x:Type blockItemTypes:SocketGroupBlockItem}"> <userControls:EditableListBoxControl Margin="5,5,5,5" ItemsSource="{Binding Items}" /> diff --git a/Filtration/ViewModels/ItemFilterBlockViewModel.cs b/Filtration/ViewModels/ItemFilterBlockViewModel.cs index 5cf0c0c..396190d 100644 --- a/Filtration/ViewModels/ItemFilterBlockViewModel.cs +++ b/Filtration/ViewModels/ItemFilterBlockViewModel.cs @@ -159,7 +159,10 @@ namespace Filtration.ViewModels typeof (CorruptedBlockItem), typeof (ElderItemBlockItem), typeof (ShaperItemBlockItem), - typeof (ShapedMapBlockItem) + typeof (ShapedMapBlockItem), + typeof (GemLevelBlockItem), + typeof (StackSizeBlockItem), + typeof (HasExplicitModBlockItem) }; public List<Type> AudioVisualBlockItemTypesAvailable => new List<Type>