Merge 2c4096ff2c37a464e861462934b787d356df1ddf into 52fc1f6bbc9d20fcd52e3ac6fee86c2a85b628e5
This commit is contained in:
commit
42af920026
@ -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.
|
||||
|
@ -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 => 22;
|
||||
}
|
||||
}
|
||||
|
@ -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 => 19;
|
||||
}
|
||||
}
|
||||
|
@ -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 => 23;
|
||||
}
|
||||
}
|
||||
|
@ -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 => 18;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,23 @@
|
||||
using System.Windows.Media;
|
||||
using Filtration.ObjectModel.BlockItemBaseTypes;
|
||||
|
||||
namespace Filtration.ObjectModel.BlockItemTypes
|
||||
{
|
||||
public sealed class DisableDropSoundBlockItem : BooleanBlockItem, IAudioVisualBlockItem
|
||||
{
|
||||
public DisableDropSoundBlockItem()
|
||||
{
|
||||
}
|
||||
|
||||
public DisableDropSoundBlockItem(bool booleanValue) : base(booleanValue)
|
||||
{
|
||||
}
|
||||
|
||||
public override string PrefixText => "DisableDropSound";
|
||||
public override string DisplayHeading => "Disable Drop Sound";
|
||||
public override Color SummaryBackgroundColor => Colors.Transparent;
|
||||
public override Color SummaryTextColor => Colors.Transparent;
|
||||
public override int SortOrder => 27;
|
||||
|
||||
}
|
||||
}
|
@ -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 => 13;
|
||||
public override int SortOrder => 14;
|
||||
public override int Minimum => 0;
|
||||
public override int Maximum => 100;
|
||||
}
|
||||
|
23
Filtration.ObjectModel/BlockItemTypes/ElderMapBlockItem.cs
Normal file
23
Filtration.ObjectModel/BlockItemTypes/ElderMapBlockItem.cs
Normal file
@ -0,0 +1,23 @@
|
||||
using System.Windows.Media;
|
||||
using Filtration.ObjectModel.BlockItemBaseTypes;
|
||||
|
||||
namespace Filtration.ObjectModel.BlockItemTypes
|
||||
{
|
||||
public sealed class ElderMapBlockItem : BooleanBlockItem
|
||||
{
|
||||
public ElderMapBlockItem()
|
||||
{
|
||||
}
|
||||
|
||||
public ElderMapBlockItem(bool booleanValue) : base(booleanValue)
|
||||
{
|
||||
}
|
||||
|
||||
public override string PrefixText => "ElderMap";
|
||||
public override string DisplayHeading => "Elder Map";
|
||||
public override Color SummaryBackgroundColor => Colors.DarkGoldenrod;
|
||||
public override Color SummaryTextColor => Colors.White;
|
||||
public override int SortOrder => 9;
|
||||
|
||||
}
|
||||
}
|
@ -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 => 24;
|
||||
public override int Minimum => 11;
|
||||
public override int Maximum => 45;
|
||||
}
|
||||
|
28
Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs
Normal file
28
Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs
Normal file
@ -0,0 +1,28 @@
|
||||
using System.Windows.Media;
|
||||
using Filtration.ObjectModel.BlockItemBaseTypes;
|
||||
using Filtration.ObjectModel.Enums;
|
||||
|
||||
namespace Filtration.ObjectModel.BlockItemTypes
|
||||
{
|
||||
public class GemLevelBlockItem : NumericFilterPredicateBlockItem
|
||||
{
|
||||
public GemLevelBlockItem()
|
||||
{
|
||||
}
|
||||
|
||||
public GemLevelBlockItem(FilterPredicateOperator predicateOperator, int predicateOperand)
|
||||
: base(predicateOperator, predicateOperand)
|
||||
{
|
||||
}
|
||||
|
||||
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 => 15;
|
||||
public override int Minimum => 0;
|
||||
public override int Maximum => 40;
|
||||
}
|
||||
}
|
@ -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 => 20;
|
||||
}
|
||||
}
|
@ -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 => 10;
|
||||
public override int SortOrder => 11;
|
||||
public override int Minimum => 0;
|
||||
public override int Maximum => 6;
|
||||
}
|
||||
|
@ -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 => 12;
|
||||
public override int SortOrder => 13;
|
||||
public override int Minimum => 0;
|
||||
public override int Maximum => 100;
|
||||
}
|
||||
|
@ -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 => 26;
|
||||
}
|
||||
}
|
||||
|
@ -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 => 17;
|
||||
public override int Minimum => 0;
|
||||
public override int Maximum => (int)ItemRarity.Unique;
|
||||
}
|
||||
|
@ -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 => 10;
|
||||
|
||||
private SocketColor StringToSocketColor(char socketColorString)
|
||||
{
|
||||
|
@ -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 => 25;
|
||||
}
|
||||
}
|
||||
|
28
Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs
Normal file
28
Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs
Normal file
@ -0,0 +1,28 @@
|
||||
using System.Windows.Media;
|
||||
using Filtration.ObjectModel.BlockItemBaseTypes;
|
||||
using Filtration.ObjectModel.Enums;
|
||||
|
||||
namespace Filtration.ObjectModel.BlockItemTypes
|
||||
{
|
||||
public class StackSizeBlockItem : NumericFilterPredicateBlockItem
|
||||
{
|
||||
public StackSizeBlockItem()
|
||||
{
|
||||
}
|
||||
|
||||
public StackSizeBlockItem(FilterPredicateOperator predicateOperator, int predicateOperand)
|
||||
: base(predicateOperator, predicateOperand)
|
||||
{
|
||||
}
|
||||
|
||||
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 => 16;
|
||||
public override int Minimum => 0;
|
||||
public override int Maximum => 1000;
|
||||
}
|
||||
}
|
@ -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 => 21;
|
||||
}
|
||||
}
|
||||
|
@ -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 => 11;
|
||||
public override int SortOrder => 12;
|
||||
public override int Minimum => 0;
|
||||
public override int Maximum => 2;
|
||||
}
|
||||
|
@ -61,6 +61,10 @@
|
||||
<Compile Include="BlockItemTypes\BaseTypeBlockItem.cs" />
|
||||
<Compile Include="BlockItemTypes\BorderColorBlockItem.cs" />
|
||||
<Compile Include="BlockItemTypes\ClassBlockItem.cs" />
|
||||
<Compile Include="BlockItemTypes\DisableDropSoundBlockItem.cs" />
|
||||
<Compile Include="BlockItemTypes\ElderMapBlockItem.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 +81,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 +105,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 +113,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" />
|
||||
|
@ -318,6 +318,42 @@ namespace Filtration.Parser.Tests.Services
|
||||
Assert.AreEqual(FilterPredicateOperator.Equal, blockItem.FilterPredicate.PredicateOperator);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TranslateStringToItemFilterBlock_GemLevel_ReturnsCorrectObject()
|
||||
{
|
||||
// Arrange
|
||||
var inputString = "Show" + Environment.NewLine +
|
||||
" GemLevel = 20";
|
||||
|
||||
// Act
|
||||
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
|
||||
|
||||
// Assert
|
||||
|
||||
Assert.AreEqual(1, result.BlockItems.Count(b => b is GemLevelBlockItem));
|
||||
var blockItem = result.BlockItems.OfType<GemLevelBlockItem>().First();
|
||||
Assert.AreEqual(20, blockItem.FilterPredicate.PredicateOperand);
|
||||
Assert.AreEqual(FilterPredicateOperator.Equal, blockItem.FilterPredicate.PredicateOperator);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TranslateStringToItemFilterBlock_StackSize_ReturnsCorrectObject()
|
||||
{
|
||||
// Arrange
|
||||
var inputString = "Show" + Environment.NewLine +
|
||||
" StackSize > 5";
|
||||
|
||||
// Act
|
||||
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
|
||||
|
||||
// Assert
|
||||
|
||||
Assert.AreEqual(1, result.BlockItems.Count(b => b is StackSizeBlockItem));
|
||||
var blockItem = result.BlockItems.OfType<StackSizeBlockItem>().First();
|
||||
Assert.AreEqual(5, blockItem.FilterPredicate.PredicateOperand);
|
||||
Assert.AreEqual(FilterPredicateOperator.GreaterThan, blockItem.FilterPredicate.PredicateOperator);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TranslateStringToItemFilterBlock_Corrupted_ReturnsCorrectObject()
|
||||
{
|
||||
@ -386,6 +422,23 @@ namespace Filtration.Parser.Tests.Services
|
||||
Assert.IsFalse(blockItem.BooleanValue);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TranslateStringToItemFilterBlock_ElderMap_ReturnsCorrectObject()
|
||||
{
|
||||
// Arrange
|
||||
var inputString = "Show" + Environment.NewLine +
|
||||
" ElderMap false";
|
||||
|
||||
// Act
|
||||
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
|
||||
|
||||
// Assert
|
||||
|
||||
Assert.AreEqual(1, result.BlockItems.Count(b => b is ElderMapBlockItem));
|
||||
var blockItem = result.BlockItems.OfType<ElderMapBlockItem>().First();
|
||||
Assert.IsFalse(blockItem.BooleanValue);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TranslateStringToItemFilterBlock_Identified_ReturnsCorrectObject()
|
||||
{
|
||||
@ -494,6 +547,25 @@ namespace Filtration.Parser.Tests.Services
|
||||
Assert.Contains("Test BaseType 2", blockItem.Items);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TranslateStringToItemFilterBlock_HasExplicitMod_ReturnsCorrectObject()
|
||||
{
|
||||
// Arrange
|
||||
var inputString = "Show" + Environment.NewLine +
|
||||
@" HasExplicitMod ""Test Mod 1"" ""TestOneWordModInQuotes"" TestOneWordModNotInQuotes ""Test Mod 2""";
|
||||
|
||||
// Act
|
||||
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(1, result.BlockItems.Count(b => b is HasExplicitModBlockItem));
|
||||
var blockItem = result.BlockItems.OfType<HasExplicitModBlockItem>().First();
|
||||
Assert.Contains("Test Mod 1", blockItem.Items);
|
||||
Assert.Contains("TestOneWordModInQuotes", blockItem.Items);
|
||||
Assert.Contains("TestOneWordModNotInQuotes", blockItem.Items);
|
||||
Assert.Contains("Test Mod 2", blockItem.Items);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TranslateStringToItemFilterBlock_Sockets_ReturnsCorrectObject()
|
||||
{
|
||||
@ -803,6 +875,23 @@ namespace Filtration.Parser.Tests.Services
|
||||
Assert.AreEqual(95, blockItem.SecondValue);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TranslateStringToItemFilterBlock_DisableDropSound_ReturnsCorrectObject()
|
||||
{
|
||||
// Arrange
|
||||
var inputString = "Show" + Environment.NewLine +
|
||||
" DisableDropSound True";
|
||||
|
||||
// Act
|
||||
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
|
||||
|
||||
// Assert
|
||||
|
||||
Assert.AreEqual(1, result.BlockItems.Count(b => b is DisableDropSoundBlockItem));
|
||||
var blockItem = result.BlockItems.OfType<DisableDropSoundBlockItem>().First();
|
||||
Assert.IsTrue(blockItem.BooleanValue);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TranslateStringToItemFilterBlock_Everything_ReturnsCorrectObject()
|
||||
{
|
||||
@ -813,6 +902,8 @@ namespace Filtration.Parser.Tests.Services
|
||||
"Show" + Environment.NewLine +
|
||||
" ItemLevel >= 50" + Environment.NewLine +
|
||||
" DropLevel < 70" + Environment.NewLine +
|
||||
" GemLevel = 20" + Environment.NewLine +
|
||||
" StackSize > 2" + Environment.NewLine +
|
||||
" Quality = 15" + Environment.NewLine +
|
||||
" Rarity <= Unique" + Environment.NewLine +
|
||||
" Identified True" + Environment.NewLine +
|
||||
@ -820,8 +911,10 @@ namespace Filtration.Parser.Tests.Services
|
||||
" ElderItem true" + Environment.NewLine +
|
||||
" ShaperItem False" + Environment.NewLine +
|
||||
" ShapedMap TRUE" + Environment.NewLine +
|
||||
" ElderMap False" + Environment.NewLine +
|
||||
@" Class ""My Item Class"" AnotherClass ""AndAnotherClass""" + Environment.NewLine +
|
||||
@" BaseType MyBaseType ""Another BaseType""" + Environment.NewLine +
|
||||
@" HasExplicitMod MyMod ""Another Mod""" + Environment.NewLine +
|
||||
" JunkLine Let's ignore this one!" + Environment.NewLine +
|
||||
" #Quality Commented out quality line" + Environment.NewLine +
|
||||
" Sockets >= 3" + Environment.NewLine +
|
||||
@ -831,7 +924,8 @@ namespace Filtration.Parser.Tests.Services
|
||||
" SetBackgroundColor 255 100 5" + Environment.NewLine +
|
||||
" SetBorderColor 0 0 0" + Environment.NewLine +
|
||||
" SetFontSize 50" + Environment.NewLine +
|
||||
" PlayAlertSound 3" + Environment.NewLine;
|
||||
" PlayAlertSound 3" + Environment.NewLine +
|
||||
" DisableDropSound False" + Environment.NewLine;
|
||||
|
||||
// Act
|
||||
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
|
||||
@ -857,10 +951,21 @@ namespace Filtration.Parser.Tests.Services
|
||||
var shapedMapBlockItem = result.BlockItems.OfType<ShapedMapBlockItem>().First();
|
||||
Assert.IsTrue(shapedMapBlockItem.BooleanValue);
|
||||
|
||||
var elderMapBlockItem = result.BlockItems.OfType<ElderMapBlockItem>().First();
|
||||
Assert.IsFalse(elderMapBlockItem.BooleanValue);
|
||||
|
||||
var dropLevelblockItem = result.BlockItems.OfType<DropLevelBlockItem>().First();
|
||||
Assert.AreEqual(FilterPredicateOperator.LessThan, dropLevelblockItem.FilterPredicate.PredicateOperator);
|
||||
Assert.AreEqual(70, dropLevelblockItem.FilterPredicate.PredicateOperand);
|
||||
|
||||
var gemLevelBlockItem = result.BlockItems.OfType<GemLevelBlockItem>().First();
|
||||
Assert.AreEqual(FilterPredicateOperator.Equal, gemLevelBlockItem.FilterPredicate.PredicateOperator);
|
||||
Assert.AreEqual(20, gemLevelBlockItem.FilterPredicate.PredicateOperand);
|
||||
|
||||
var stackSizeBlockItem = result.BlockItems.OfType<StackSizeBlockItem>().First();
|
||||
Assert.AreEqual(FilterPredicateOperator.GreaterThan, stackSizeBlockItem.FilterPredicate.PredicateOperator);
|
||||
Assert.AreEqual(2, stackSizeBlockItem.FilterPredicate.PredicateOperand);
|
||||
|
||||
var qualityblockItem = result.BlockItems.OfType<QualityBlockItem>().First();
|
||||
Assert.AreEqual(FilterPredicateOperator.Equal, qualityblockItem.FilterPredicate.PredicateOperator);
|
||||
Assert.AreEqual(15, qualityblockItem.FilterPredicate.PredicateOperand);
|
||||
@ -880,6 +985,11 @@ namespace Filtration.Parser.Tests.Services
|
||||
Assert.Contains("MyBaseType", baseTypeblockItem.Items);
|
||||
Assert.Contains("Another BaseType", baseTypeblockItem.Items);
|
||||
|
||||
var hasExplicitModBlockItem = result.BlockItems.OfType<HasExplicitModBlockItem>().First();
|
||||
Assert.AreEqual(2, hasExplicitModBlockItem.Items.Count);
|
||||
Assert.Contains("MyMod", hasExplicitModBlockItem.Items);
|
||||
Assert.Contains("Another Mod", hasExplicitModBlockItem.Items);
|
||||
|
||||
var socketsblockItem = result.BlockItems.OfType<SocketsBlockItem>().First();
|
||||
Assert.AreEqual(FilterPredicateOperator.GreaterThanOrEqual, socketsblockItem.FilterPredicate.PredicateOperator);
|
||||
Assert.AreEqual(3, socketsblockItem.FilterPredicate.PredicateOperand);
|
||||
@ -917,6 +1027,9 @@ namespace Filtration.Parser.Tests.Services
|
||||
var soundblockItem = result.BlockItems.OfType<SoundBlockItem>().First();
|
||||
Assert.AreEqual("3", soundblockItem.Value);
|
||||
Assert.AreEqual(79, soundblockItem.SecondValue);
|
||||
|
||||
var disableDropSoundBlockItem = result.BlockItems.OfType<DisableDropSoundBlockItem>().First();
|
||||
Assert.IsFalse(disableDropSoundBlockItem.BooleanValue);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@ -1334,6 +1447,38 @@ namespace Filtration.Parser.Tests.Services
|
||||
Assert.AreEqual(expectedResult, result);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TranslateItemFilterBlockToString_GemLevel_ReturnsCorrectString()
|
||||
{
|
||||
// Arrange
|
||||
var expectedResult = "Show" + Environment.NewLine +
|
||||
" GemLevel <= 15";
|
||||
|
||||
_testUtility.TestBlock.BlockItems.Add(new GemLevelBlockItem(FilterPredicateOperator.LessThanOrEqual, 15));
|
||||
|
||||
// Act
|
||||
var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock);
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(expectedResult, result);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TranslateItemFilterBlockToString_StackSize_ReturnsCorrectString()
|
||||
{
|
||||
// Arrange
|
||||
var expectedResult = "Show" + Environment.NewLine +
|
||||
" StackSize = 5";
|
||||
|
||||
_testUtility.TestBlock.BlockItems.Add(new StackSizeBlockItem(FilterPredicateOperator.Equal, 5));
|
||||
|
||||
// Act
|
||||
var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock);
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(expectedResult, result);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TranslateItemFilterBlockToString_Quality_ReturnsCorrectString()
|
||||
{
|
||||
@ -1425,6 +1570,26 @@ namespace Filtration.Parser.Tests.Services
|
||||
Assert.AreEqual(expectedResult, result);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TranslateItemFilterBlockToString_HasExplicitMod_ReturnsCorrectString()
|
||||
{
|
||||
// Arrange
|
||||
var expectedResult = "Show" + Environment.NewLine +
|
||||
" HasExplicitMod \"Test Mod\" \"Another Mod\" \"Yet Another Mod\"";
|
||||
|
||||
var hasExplicitModBlockItem = new HasExplicitModBlockItem();
|
||||
hasExplicitModBlockItem.Items.Add("Test Mod");
|
||||
hasExplicitModBlockItem.Items.Add("Another Mod");
|
||||
hasExplicitModBlockItem.Items.Add("Yet Another Mod");
|
||||
_testUtility.TestBlock.BlockItems.Add(hasExplicitModBlockItem);
|
||||
|
||||
// Act
|
||||
var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock);
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(expectedResult, result);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TranslateItemFilterBlockToString_Sockets_ReturnsCorrectString()
|
||||
{
|
||||
@ -1700,20 +1865,25 @@ namespace Filtration.Parser.Tests.Services
|
||||
" ElderItem True" + Environment.NewLine +
|
||||
" ShaperItem False" + Environment.NewLine +
|
||||
" ShapedMap True" + Environment.NewLine +
|
||||
" ElderMap True" + Environment.NewLine +
|
||||
" Height <= 6" + Environment.NewLine +
|
||||
" Height >= 2" + Environment.NewLine +
|
||||
" Width = 3" + Environment.NewLine +
|
||||
" ItemLevel > 70" + Environment.NewLine +
|
||||
" ItemLevel <= 85" + Environment.NewLine +
|
||||
" DropLevel > 56" + Environment.NewLine +
|
||||
" GemLevel < 15" + Environment.NewLine +
|
||||
" StackSize >= 4" + Environment.NewLine +
|
||||
" Rarity = Unique" + Environment.NewLine +
|
||||
" Class \"Body Armour\" \"Gloves\" \"Belt\" \"Two Hand Axes\"" + Environment.NewLine +
|
||||
" BaseType \"Greater Life Flask\" \"Simple Robe\" \"Full Wyrmscale\"" + Environment.NewLine +
|
||||
" HasExplicitMod \"Guatelitzi's\" \"of Tacati\" \"Tyrannical\"" + 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";
|
||||
" PlayAlertSound 6 90" + Environment.NewLine +
|
||||
" DisableDropSound True";
|
||||
|
||||
_testUtility.TestBlock.BlockItems.Add(new ActionBlockItem(BlockAction.Show));
|
||||
_testUtility.TestBlock.BlockItems.Add(new IdentifiedBlockItem(true));
|
||||
@ -1722,6 +1892,8 @@ namespace Filtration.Parser.Tests.Services
|
||||
_testUtility.TestBlock.BlockItems.Add(new ItemLevelBlockItem(FilterPredicateOperator.GreaterThan, 70));
|
||||
_testUtility.TestBlock.BlockItems.Add(new ItemLevelBlockItem(FilterPredicateOperator.LessThanOrEqual, 85));
|
||||
_testUtility.TestBlock.BlockItems.Add(new DropLevelBlockItem(FilterPredicateOperator.GreaterThan, 56));
|
||||
_testUtility.TestBlock.BlockItems.Add(new GemLevelBlockItem(FilterPredicateOperator.LessThan, 15));
|
||||
_testUtility.TestBlock.BlockItems.Add(new StackSizeBlockItem(FilterPredicateOperator.GreaterThanOrEqual, 4));
|
||||
_testUtility.TestBlock.BlockItems.Add(new QualityBlockItem(FilterPredicateOperator.GreaterThan, 2));
|
||||
_testUtility.TestBlock.BlockItems.Add(new RarityBlockItem(FilterPredicateOperator.Equal, (int)ItemRarity.Unique));
|
||||
var classItemblockItem = new ClassBlockItem();
|
||||
@ -1735,6 +1907,11 @@ namespace Filtration.Parser.Tests.Services
|
||||
baseTypeItemblockItem.Items.Add("Simple Robe");
|
||||
baseTypeItemblockItem.Items.Add("Full Wyrmscale");
|
||||
_testUtility.TestBlock.BlockItems.Add(baseTypeItemblockItem);
|
||||
var hasExplicitModBlockItem = new HasExplicitModBlockItem();
|
||||
hasExplicitModBlockItem.Items.Add("Guatelitzi's");
|
||||
hasExplicitModBlockItem.Items.Add("of Tacati");
|
||||
hasExplicitModBlockItem.Items.Add("Tyrannical");
|
||||
_testUtility.TestBlock.BlockItems.Add(hasExplicitModBlockItem);
|
||||
_testUtility.TestBlock.BlockItems.Add(new SocketsBlockItem(FilterPredicateOperator.LessThanOrEqual, 6));
|
||||
_testUtility.TestBlock.BlockItems.Add(new LinkedSocketsBlockItem(FilterPredicateOperator.GreaterThanOrEqual, 4));
|
||||
_testUtility.TestBlock.BlockItems.Add(new WidthBlockItem(FilterPredicateOperator.Equal, 3));
|
||||
@ -1748,6 +1925,8 @@ namespace Filtration.Parser.Tests.Services
|
||||
_testUtility.TestBlock.BlockItems.Add(new ElderItemBlockItem(true));
|
||||
_testUtility.TestBlock.BlockItems.Add(new ShaperItemBlockItem(false));
|
||||
_testUtility.TestBlock.BlockItems.Add(new ShapedMapBlockItem(true));
|
||||
_testUtility.TestBlock.BlockItems.Add(new ElderMapBlockItem(true));
|
||||
_testUtility.TestBlock.BlockItems.Add(new DisableDropSoundBlockItem(true));
|
||||
|
||||
// Act
|
||||
var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock);
|
||||
|
@ -155,7 +155,7 @@ namespace Filtration.Parser.Tests.Services
|
||||
script.ItemFilterBlocks.Add(block1);
|
||||
script.ItemFilterBlocks.Add(block2);
|
||||
|
||||
var expectedOutput = "# Script edited with Filtration - https://github.com/ben-wallis/Filtration" + Environment.NewLine +
|
||||
var expectedOutput = "# Script edited with Filtration - https://github.com/ben-wallis/Filtration" + Environment.NewLine + Environment.NewLine +
|
||||
"# Test Filter 1" + Environment.NewLine +
|
||||
"Show" + Environment.NewLine +
|
||||
" ItemLevel > 5" + Environment.NewLine +
|
||||
|
@ -266,6 +266,34 @@ 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;
|
||||
}
|
||||
case "ElderMap":
|
||||
{
|
||||
AddBooleanItemToBlockItems<ElderMapBlockItem>(block, trimmedLine);
|
||||
break;
|
||||
}
|
||||
case "DisableDropSound":
|
||||
{
|
||||
// Only ever use the last DisableDropSound item encountered as multiples aren't valid.
|
||||
RemoveExistingBlockItemsOfType<DisableDropSoundBlockItem>(block);
|
||||
|
||||
AddBooleanItemToBlockItems<DisableDropSoundBlockItem>(block, trimmedLine);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -251,8 +251,8 @@ namespace Filtration.Parser.Services
|
||||
outputString += "# " + line + Environment.NewLine;
|
||||
}
|
||||
}
|
||||
outputString += Environment.NewLine;
|
||||
}
|
||||
outputString += Environment.NewLine;
|
||||
|
||||
// ReSharper disable once LoopCanBeConvertedToQuery
|
||||
foreach (var block in script.ItemFilterBlocks)
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -114,6 +114,7 @@ Bear Trap
|
||||
Behemoth Mace
|
||||
Belfry Map
|
||||
Bestel's Manuscript
|
||||
Bestiary Orb
|
||||
Beyond Leaguestone
|
||||
Binding Shard
|
||||
Birth of the Three
|
||||
@ -131,6 +132,7 @@ Blast Rain
|
||||
Blessed Orb
|
||||
Blessing of Chayula
|
||||
Blessing of Esh
|
||||
Blessing of God
|
||||
Blessing of Tul
|
||||
Blessing of Uul-Netol
|
||||
Blessing of Xoph
|
||||
@ -244,6 +246,7 @@ Chaos Orb
|
||||
Chaos Shard
|
||||
Chaotic Disposition
|
||||
Charged Dash
|
||||
Charged Traps Support
|
||||
Chateau Map
|
||||
Chayula's Breachstone
|
||||
Chest Splitter
|
||||
@ -492,6 +495,7 @@ Exalted Orb
|
||||
Exalted Shard
|
||||
Excavation Map
|
||||
Explosive Arrow
|
||||
Explosive Trap
|
||||
Exquisite Blade
|
||||
Exquisite Leather
|
||||
Eye Gouger
|
||||
@ -531,8 +535,10 @@ Flame Dash
|
||||
Flame Surge
|
||||
Flame Totem
|
||||
Flameblast
|
||||
Flamethrower Trap
|
||||
Flammability
|
||||
Flanged Mace
|
||||
Flashpowder Keg
|
||||
Flaying Knife
|
||||
Flesh Offering
|
||||
Fleshripper
|
||||
@ -540,6 +546,7 @@ Flicker Strike
|
||||
Flooded Mine Map
|
||||
Fluted Bascinet
|
||||
Footman Sword
|
||||
Forbidden Power
|
||||
Forge of the Phoenix Map
|
||||
Fork Support
|
||||
Fortify Support
|
||||
@ -654,6 +661,7 @@ Harbinger's Orb
|
||||
Harbinger's Shard
|
||||
Harlequin Mask
|
||||
Harmonic Spirit Shield
|
||||
Harmony of Souls
|
||||
Harpy Rapier
|
||||
Haste
|
||||
Hatred
|
||||
@ -705,6 +713,7 @@ Ignite Proliferation Support
|
||||
Imbued Wand
|
||||
Immolate Support
|
||||
Immortal Call
|
||||
Immortal Resolve
|
||||
Imp Dagger
|
||||
Imperial Bow
|
||||
Imperial Buckler
|
||||
@ -712,6 +721,7 @@ Imperial Claw
|
||||
Imperial Maul
|
||||
Imperial Skean
|
||||
Imperial Staff
|
||||
Imprinted Bestiary Orb
|
||||
Incinerate
|
||||
Increased Area of Effect Support
|
||||
Increased Critical Damage Support
|
||||
@ -813,6 +823,7 @@ Light Quiver
|
||||
Lighthouse Map
|
||||
Lightning Arrow
|
||||
Lightning Penetration Support
|
||||
Lightning Spire Trap
|
||||
Lightning Strike
|
||||
Lightning Tendrils
|
||||
Lightning Trap
|
||||
@ -923,6 +934,7 @@ Muttering Essence of Woe
|
||||
Nailed Fist
|
||||
Necromancer Circlet
|
||||
Necromancer Silks
|
||||
Necromancy Net
|
||||
Necropolis Map
|
||||
Nemesis Leaguestone
|
||||
Nightmare Bascinet
|
||||
@ -983,6 +995,7 @@ Penetrating Arrow Quiver
|
||||
Peninsula Map
|
||||
Perandus Coin
|
||||
Perandus Leaguestone
|
||||
Perfection
|
||||
Pernarch
|
||||
Petrified Club
|
||||
Phantasmagoria Map
|
||||
@ -1082,7 +1095,10 @@ Regal Orb
|
||||
Regal Shard
|
||||
Regicide Mask
|
||||
Reinforced Greaves
|
||||
Reinforced Iron Net
|
||||
Reinforced Kite Shield
|
||||
Reinforced Rope Net
|
||||
Reinforced Steel Net
|
||||
Reinforced Tower Shield
|
||||
Rejuvenation Totem
|
||||
Relic Chambers Map
|
||||
@ -1185,6 +1201,7 @@ Scroll of Wisdom
|
||||
Searching Eye Jewel
|
||||
Searing Bond
|
||||
Secutor Helm
|
||||
Seismic Trap
|
||||
Sekhem
|
||||
Sekhema Feather
|
||||
Sentinel Jacket
|
||||
@ -1264,8 +1281,12 @@ Silver Coin
|
||||
Silver Flask
|
||||
Silver Key
|
||||
Silver Locket
|
||||
Simple Iron Net
|
||||
Simple Robe
|
||||
Simple Rope Net
|
||||
Simple Steel Net
|
||||
Sinner Tricorne
|
||||
Siphoning Trap
|
||||
Skean
|
||||
Skinning Knife
|
||||
Slaughter Knife
|
||||
@ -1292,6 +1313,7 @@ Sovereign Spiked Shield
|
||||
Spark
|
||||
Sparkling Claw
|
||||
Spectral Axe
|
||||
Spectral Shield Throw
|
||||
Spectral Sword
|
||||
Spectral Throw
|
||||
Spell Cascade Support
|
||||
@ -1341,6 +1363,7 @@ Stibnite Flask
|
||||
Stiletto
|
||||
Stone Axe
|
||||
Stone Hammer
|
||||
Stone of Passage
|
||||
Storm Barrier Support
|
||||
Storm Blade
|
||||
Storm Burst
|
||||
@ -1349,6 +1372,9 @@ Strand Map
|
||||
Strapped Boots
|
||||
Strapped Leather
|
||||
Strapped Mitts
|
||||
Strong Iron Net
|
||||
Strong Rope Net
|
||||
Strong Steel Net
|
||||
Struck by Lightning
|
||||
Studded Belt
|
||||
Studded Round Shield
|
||||
@ -1361,6 +1387,7 @@ Summon Chaos Golem
|
||||
Summon Flame Golem
|
||||
Summon Ice Golem
|
||||
Summon Lightning Golem
|
||||
Summon Phantasm on Kill Support
|
||||
Summon Raging Spirit
|
||||
Summon Skeleton
|
||||
Summon Stone Golem
|
||||
@ -1377,6 +1404,7 @@ Talisman Leaguestone
|
||||
Talon Axe
|
||||
Tarnished Spirit Shield
|
||||
Teak Round Shield
|
||||
Tectonic Slam
|
||||
Tempered Foil
|
||||
Tempest Leaguestone
|
||||
Tempest Shield
|
||||
@ -1386,17 +1414,22 @@ Tenderizer
|
||||
Terrace Map
|
||||
Terror Claw
|
||||
Terror Maul
|
||||
Thaumaturgical Net
|
||||
Thaumetic Emblem
|
||||
Thaumetic Sulphite
|
||||
The Admirer
|
||||
The Aesthete
|
||||
The Arena Champion
|
||||
The Army of Blood
|
||||
The Artist
|
||||
The Avenger
|
||||
The Battle Born
|
||||
The Beast
|
||||
The Betrayal
|
||||
The Black Flag
|
||||
The Blazing Fire
|
||||
The Body
|
||||
The Breach
|
||||
The Brittle Emperor
|
||||
The Calling
|
||||
The Carrion Crow
|
||||
@ -1404,18 +1437,23 @@ The Cartographer
|
||||
The Cataclysm
|
||||
The Catalyst
|
||||
The Celestial Justicar
|
||||
The Celestial Stone
|
||||
The Chains that Bind
|
||||
The Coming Storm
|
||||
The Conduit
|
||||
The Cursed King
|
||||
The Dapper Prodigy
|
||||
The Dark Mage
|
||||
The Darkest Dream
|
||||
The Deceiver
|
||||
The Demoness
|
||||
The Devastator
|
||||
The Doctor
|
||||
The Doppelganger
|
||||
The Dragon
|
||||
The Dragon's Heart
|
||||
The Dreamer
|
||||
The Dreamland
|
||||
The Drunken Aristocrat
|
||||
The Encroaching Darkness
|
||||
The Endurance
|
||||
@ -1425,6 +1463,7 @@ The Explorer
|
||||
The Eye of Desire
|
||||
The Eye of Fury
|
||||
The Eye of the Dragon
|
||||
The Fathomless Depths
|
||||
The Feast
|
||||
The Fiend
|
||||
The Fletcher
|
||||
@ -1437,6 +1476,7 @@ The Garish Power
|
||||
The Gemcutter
|
||||
The Gentleman
|
||||
The Gladiator
|
||||
The Hale Heart
|
||||
The Harvester
|
||||
The Hermit
|
||||
The Hoarder
|
||||
@ -1444,8 +1484,11 @@ The Hunger
|
||||
The Immortal
|
||||
The Incantation
|
||||
The Inoculated
|
||||
The Insatiable
|
||||
The Inventor
|
||||
The Iron Bard
|
||||
The Jester
|
||||
The Jeweller's Boon
|
||||
The King's Blade
|
||||
The King's Heart
|
||||
The Last One Standing
|
||||
@ -1454,9 +1497,12 @@ The Lion
|
||||
The Lord in Black
|
||||
The Lover
|
||||
The Lunaris Priestess
|
||||
The Master
|
||||
The Mayor
|
||||
The Mercenary
|
||||
The Metalsmith's Gift
|
||||
The Oath
|
||||
The Obscured
|
||||
The Offering
|
||||
The One With All
|
||||
The Opulent
|
||||
@ -1466,17 +1512,22 @@ The Penitent
|
||||
The Poet
|
||||
The Polymath
|
||||
The Porcupine
|
||||
The Professor
|
||||
The Puzzle
|
||||
The Queen
|
||||
The Rabid Rhoa
|
||||
The Realm
|
||||
The Risk
|
||||
The Rite of Elements
|
||||
The Road to Power
|
||||
The Ruthless Ceinture
|
||||
The Saint's Treasure
|
||||
The Samurai's Eye
|
||||
The Scarred Meadow
|
||||
The Scavenger
|
||||
The Scholar
|
||||
The Sephirot
|
||||
The Shaper's Key
|
||||
The Sigil
|
||||
The Siren
|
||||
The Soul
|
||||
@ -1490,6 +1541,7 @@ The Sun
|
||||
The Surgeon
|
||||
The Surveyor
|
||||
The Survivalist
|
||||
The Sword King's Salute
|
||||
The Teardrop
|
||||
The Thaumaturgist
|
||||
The Throne
|
||||
@ -1498,6 +1550,8 @@ The Traitor
|
||||
The Trial
|
||||
The Twins
|
||||
The Tyrant
|
||||
The Undaunted
|
||||
The Undisputed
|
||||
The Union
|
||||
The Valkyrie
|
||||
The Valley of Steel Boxes
|
||||
@ -1509,10 +1563,12 @@ The Warlord
|
||||
The Watcher
|
||||
The Web
|
||||
The Wind
|
||||
The Witch
|
||||
The Wolf
|
||||
The Wolf's Shadow
|
||||
The Wolven King's Bite
|
||||
The Wolverine
|
||||
The World Eater
|
||||
The Wrath
|
||||
The Wretched
|
||||
Thicket Bow
|
||||
@ -1523,6 +1579,7 @@ Thorn Rapier
|
||||
Three Faces in the Dark
|
||||
Three Hands Talisman
|
||||
Three Rat Talisman
|
||||
Three Voices
|
||||
Thresher Claw
|
||||
Throat Stabber
|
||||
Thunderous Skies
|
||||
@ -1590,6 +1647,8 @@ Uul-Netol's Breachstone
|
||||
Vaal Arc
|
||||
Vaal Axe
|
||||
Vaal Blade
|
||||
Vaal Blade Vortex
|
||||
Vaal Blight
|
||||
Vaal Breach
|
||||
Vaal Buckler
|
||||
Vaal Burning Arrow
|
||||
@ -1600,6 +1659,7 @@ Vaal Cyclone
|
||||
Vaal Detonate Dead
|
||||
Vaal Discipline
|
||||
Vaal Double Strike
|
||||
Vaal Earthquake
|
||||
Vaal Fireball
|
||||
Vaal Flameblast
|
||||
Vaal Gauntlets
|
||||
@ -1612,6 +1672,9 @@ Vaal Haste
|
||||
Vaal Hatchet
|
||||
Vaal Ice Nova
|
||||
Vaal Immortal Call
|
||||
Vaal Impurity of Fire
|
||||
Vaal Impurity of Ice
|
||||
Vaal Impurity of Lightning
|
||||
Vaal Lightning Strike
|
||||
Vaal Lightning Trap
|
||||
Vaal Lightning Warp
|
||||
@ -1640,7 +1703,16 @@ Vault Map
|
||||
Velvet Gloves
|
||||
Velvet Slippers
|
||||
Vengeance
|
||||
Vial of Awakening
|
||||
Vial of Consequence
|
||||
Vial of Dominance
|
||||
Vial of Fate
|
||||
Vial Of Power
|
||||
Vial of Sacrifice
|
||||
Vial of Summoning
|
||||
Vial of the Ghost
|
||||
Vial of the Ritual
|
||||
Vial of Transcendence
|
||||
Vigilant Strike
|
||||
Vile Staff
|
||||
Vile Toxins Support
|
||||
|
@ -16,6 +16,7 @@ Gems
|
||||
Gloves
|
||||
Helmets
|
||||
Hybrid Flasks
|
||||
Incursion Item
|
||||
Jewel
|
||||
Labyrinth Item
|
||||
Labyrinth Map Item
|
||||
|
@ -76,6 +76,11 @@
|
||||
<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}" />
|
||||
|
@ -159,7 +159,11 @@ namespace Filtration.ViewModels
|
||||
typeof (CorruptedBlockItem),
|
||||
typeof (ElderItemBlockItem),
|
||||
typeof (ShaperItemBlockItem),
|
||||
typeof (ShapedMapBlockItem)
|
||||
typeof (ShapedMapBlockItem),
|
||||
typeof (ElderMapBlockItem),
|
||||
typeof (GemLevelBlockItem),
|
||||
typeof (StackSizeBlockItem),
|
||||
typeof (HasExplicitModBlockItem)
|
||||
};
|
||||
|
||||
public List<Type> AudioVisualBlockItemTypesAvailable => new List<Type>
|
||||
@ -169,7 +173,8 @@ namespace Filtration.ViewModels
|
||||
typeof (BorderColorBlockItem),
|
||||
typeof (FontSizeBlockItem),
|
||||
typeof (SoundBlockItem),
|
||||
typeof (PositionalSoundBlockItem)
|
||||
typeof (PositionalSoundBlockItem),
|
||||
typeof (DisableDropSoundBlockItem)
|
||||
};
|
||||
|
||||
public bool BlockEnabled
|
||||
|
Loading…
x
Reference in New Issue
Block a user