From 400688573cf72575444cefc87296d6d8c5ba4292 Mon Sep 17 00:00:00 2001 From: azakhi Date: Thu, 9 Aug 2018 16:48:11 +0300 Subject: [PATCH 1/8] Add new block types added in 3.3 --- .../Filtration.ObjectModel.Tests.csproj | 3 ++ .../BackgroundColorBlockItem.cs | 2 +- .../BlockItemTypes/BaseTypeBlockItem.cs | 2 +- .../BlockItemTypes/BorderColorBlockItem.cs | 2 +- .../BlockItemTypes/ClassBlockItem.cs | 2 +- .../BlockItemTypes/FontSizeBlockItem.cs | 2 +- .../BlockItemTypes/GemLevelBlockItem.cs | 18 +++++++++ .../BlockItemTypes/HasExplicitModBlockItem.cs | 38 +++++++++++++++++++ .../PositionalSoundBlockItem.cs | 2 +- .../BlockItemTypes/RarityBlockItem.cs | 2 +- .../BlockItemTypes/SoundBlockItem.cs | 2 +- .../BlockItemTypes/StackSizeBlockItem.cs | 18 +++++++++ .../BlockItemTypes/TextColorBlockItem.cs | 2 +- .../Filtration.ObjectModel.csproj | 9 +++-- .../Services/ItemFilterBlockTranslator.cs | 15 ++++++++ Filtration.Tests/Filtration.Tests.csproj | 3 ++ .../Filtration.ThemeEditor.Tests.csproj | 3 ++ Filtration/UserControls/BlockItemControl.xaml | 7 +++- .../ViewModels/ItemFilterBlockViewModel.cs | 5 ++- 19 files changed, 123 insertions(+), 14 deletions(-) create mode 100644 Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs create mode 100644 Filtration.ObjectModel/BlockItemTypes/HasExplicitModBlockItem.cs create mode 100644 Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs 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 @@ + + + + + + + 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 AudioVisualBlockItemTypesAvailable => new List From 0fd2db70765b41f8f9d189f539abfd5394d8bcfd Mon Sep 17 00:00:00 2001 From: azakhi Date: Thu, 9 Aug 2018 17:12:03 +0300 Subject: [PATCH 2/8] Add new base types and classes --- Filtration/Resources/ItemBaseTypes.txt | 72 ++++++++++++++++++++++++++ Filtration/Resources/ItemClasses.txt | 1 + 2 files changed, 73 insertions(+) diff --git a/Filtration/Resources/ItemBaseTypes.txt b/Filtration/Resources/ItemBaseTypes.txt index b056064..cc1a744 100644 --- a/Filtration/Resources/ItemBaseTypes.txt +++ b/Filtration/Resources/ItemBaseTypes.txt @@ -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 diff --git a/Filtration/Resources/ItemClasses.txt b/Filtration/Resources/ItemClasses.txt index fd87671..0554a03 100644 --- a/Filtration/Resources/ItemClasses.txt +++ b/Filtration/Resources/ItemClasses.txt @@ -16,6 +16,7 @@ Gems Gloves Helmets Hybrid Flasks +Incursion Item Jewel Labyrinth Item Labyrinth Map Item From 71b7a45f8413ca705a5e0bb98ce89a2d62a91be2 Mon Sep 17 00:00:00 2001 From: azakhi Date: Fri, 10 Aug 2018 17:08:17 +0300 Subject: [PATCH 3/8] Add tests and small bugfixes --- .../BlockItemTypes/GemLevelBlockItem.cs | 10 ++ .../BlockItemTypes/StackSizeBlockItem.cs | 10 ++ .../Services/TestItemFilterBlockTranslator.cs | 131 ++++++++++++++++++ .../Services/ItemFilterScriptTranslator.cs | 2 +- 4 files changed, 152 insertions(+), 1 deletion(-) diff --git a/Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs index da65452..50f3f6e 100644 --- a/Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs @@ -1,10 +1,20 @@ 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"; diff --git a/Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs index 4ea5ec0..dc36b76 100644 --- a/Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs @@ -1,10 +1,20 @@ 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"; diff --git a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs index e05f9d4..3fcc7bc 100644 --- a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs +++ b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.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().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().First(); + Assert.AreEqual(5, blockItem.FilterPredicate.PredicateOperand); + Assert.AreEqual(FilterPredicateOperator.GreaterThan, blockItem.FilterPredicate.PredicateOperator); + } + [Test] public void TranslateStringToItemFilterBlock_Corrupted_ReturnsCorrectObject() { @@ -494,6 +530,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 BaseTypeBlockItem)); + var blockItem = result.BlockItems.OfType().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() { @@ -813,6 +868,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 + @@ -822,6 +879,7 @@ namespace Filtration.Parser.Tests.Services " ShapedMap TRUE" + 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 + @@ -861,6 +919,14 @@ namespace Filtration.Parser.Tests.Services Assert.AreEqual(FilterPredicateOperator.LessThan, dropLevelblockItem.FilterPredicate.PredicateOperator); Assert.AreEqual(70, dropLevelblockItem.FilterPredicate.PredicateOperand); + var gemLevelBlockItem = result.BlockItems.OfType().First(); + Assert.AreEqual(FilterPredicateOperator.Equal, gemLevelBlockItem.FilterPredicate.PredicateOperator); + Assert.AreEqual(20, gemLevelBlockItem.FilterPredicate.PredicateOperand); + + var stackSizeBlockItem = result.BlockItems.OfType().First(); + Assert.AreEqual(FilterPredicateOperator.GreaterThan, stackSizeBlockItem.FilterPredicate.PredicateOperator); + Assert.AreEqual(2, stackSizeBlockItem.FilterPredicate.PredicateOperand); + var qualityblockItem = result.BlockItems.OfType().First(); Assert.AreEqual(FilterPredicateOperator.Equal, qualityblockItem.FilterPredicate.PredicateOperator); Assert.AreEqual(15, qualityblockItem.FilterPredicate.PredicateOperand); @@ -880,6 +946,11 @@ namespace Filtration.Parser.Tests.Services Assert.Contains("MyBaseType", baseTypeblockItem.Items); Assert.Contains("Another BaseType", baseTypeblockItem.Items); + var hasExplicitModBlockItem = result.BlockItems.OfType().First(); + Assert.AreEqual(2, hasExplicitModBlockItem.Items.Count); + Assert.Contains("MyMod", hasExplicitModBlockItem.Items); + Assert.Contains("Another Mod", hasExplicitModBlockItem.Items); + var socketsblockItem = result.BlockItems.OfType().First(); Assert.AreEqual(FilterPredicateOperator.GreaterThanOrEqual, socketsblockItem.FilterPredicate.PredicateOperator); Assert.AreEqual(3, socketsblockItem.FilterPredicate.PredicateOperand); @@ -1334,6 +1405,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 +1528,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() { @@ -1706,9 +1829,12 @@ namespace Filtration.Parser.Tests.Services " 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 + @@ -1735,6 +1861,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)); diff --git a/Filtration.Parser/Services/ItemFilterScriptTranslator.cs b/Filtration.Parser/Services/ItemFilterScriptTranslator.cs index c245487..3b61dcb 100644 --- a/Filtration.Parser/Services/ItemFilterScriptTranslator.cs +++ b/Filtration.Parser/Services/ItemFilterScriptTranslator.cs @@ -234,7 +234,7 @@ namespace Filtration.Parser.Services var outputString = string.Empty; outputString += "# Script edited with Filtration - https://github.com/ben-wallis/Filtration" + - Environment.NewLine; + Environment.NewLine + Environment.NewLine; if (script.ItemFilterScriptSettings.BlockGroupsEnabled) { From 3aa2bf488c7979ba453dd24942c2ac434b6dc426 Mon Sep 17 00:00:00 2001 From: azakhi Date: Fri, 10 Aug 2018 17:22:55 +0300 Subject: [PATCH 4/8] Fix tests --- .../Services/TestItemFilterBlockTranslator.cs | 6 ++++-- .../Services/TestItemFilterScriptTranslator.cs | 6 +++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs index 3fcc7bc..70e5d06 100644 --- a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs +++ b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs @@ -541,8 +541,8 @@ namespace Filtration.Parser.Tests.Services var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript); // Assert - Assert.AreEqual(1, result.BlockItems.Count(b => b is BaseTypeBlockItem)); - var blockItem = result.BlockItems.OfType().First(); + Assert.AreEqual(1, result.BlockItems.Count(b => b is HasExplicitModBlockItem)); + var blockItem = result.BlockItems.OfType().First(); Assert.Contains("Test Mod 1", blockItem.Items); Assert.Contains("TestOneWordModInQuotes", blockItem.Items); Assert.Contains("TestOneWordModNotInQuotes", blockItem.Items); @@ -1848,6 +1848,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(); diff --git a/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs b/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs index 2412bc0..8f197a2 100644 --- a/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs +++ b/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs @@ -156,7 +156,7 @@ namespace Filtration.Parser.Tests.Services script.ItemFilterBlocks.Add(block2); var expectedOutput = "# Script edited with Filtration - https://github.com/ben-wallis/Filtration" + Environment.NewLine + - "# Test Filter 1" + Environment.NewLine + + "# Test Filter 1" + Environment.NewLine + Environment.NewLine + "Show" + Environment.NewLine + " ItemLevel > 5" + Environment.NewLine + "Show" + Environment.NewLine + @@ -194,7 +194,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 script description" + Environment.NewLine + "# This is a really great script!" + Environment.NewLine + "# Multiple line script descriptions are fun!" + Environment.NewLine + @@ -228,7 +228,7 @@ namespace Filtration.Parser.Tests.Services }; var expectedOutput = "# Script edited with Filtration - https://github.com/ben-wallis/Filtration" + - Environment.NewLine + + Environment.NewLine + Environment.NewLine + "# Test script description" + Environment.NewLine + Environment.NewLine; var translator = CreateItemFilterScriptTranslator(); From 2230b8125754db58862bb4d21cf977ac1e3c9c9d Mon Sep 17 00:00:00 2001 From: azakhi Date: Fri, 10 Aug 2018 17:27:43 +0300 Subject: [PATCH 5/8] Fix test --- .../Services/TestItemFilterScriptTranslator.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs b/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs index 8f197a2..e6510bf 100644 --- a/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs +++ b/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs @@ -155,8 +155,8 @@ 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 + - "# Test Filter 1" + Environment.NewLine + 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 + "Show" + Environment.NewLine + From f03e37602dd957e4e2328e608f8f38406494b4c5 Mon Sep 17 00:00:00 2001 From: azakhi Date: Sat, 11 Aug 2018 12:28:13 +0300 Subject: [PATCH 6/8] Fix script desc bug in a better way --- .../Services/TestItemFilterScriptTranslator.cs | 4 ++-- Filtration.Parser/Services/ItemFilterScriptTranslator.cs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs b/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs index e6510bf..869d297 100644 --- a/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs +++ b/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs @@ -194,7 +194,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 + Environment.NewLine + + var expectedOutput = "# Script edited with Filtration - https://github.com/ben-wallis/Filtration" + Environment.NewLine + "# Test script description" + Environment.NewLine + "# This is a really great script!" + Environment.NewLine + "# Multiple line script descriptions are fun!" + Environment.NewLine + @@ -228,7 +228,7 @@ namespace Filtration.Parser.Tests.Services }; var expectedOutput = "# Script edited with Filtration - https://github.com/ben-wallis/Filtration" + - Environment.NewLine + Environment.NewLine + + Environment.NewLine + "# Test script description" + Environment.NewLine + Environment.NewLine; var translator = CreateItemFilterScriptTranslator(); diff --git a/Filtration.Parser/Services/ItemFilterScriptTranslator.cs b/Filtration.Parser/Services/ItemFilterScriptTranslator.cs index 3b61dcb..392f3e3 100644 --- a/Filtration.Parser/Services/ItemFilterScriptTranslator.cs +++ b/Filtration.Parser/Services/ItemFilterScriptTranslator.cs @@ -234,7 +234,7 @@ namespace Filtration.Parser.Services var outputString = string.Empty; outputString += "# Script edited with Filtration - https://github.com/ben-wallis/Filtration" + - Environment.NewLine + Environment.NewLine; + Environment.NewLine; if (script.ItemFilterScriptSettings.BlockGroupsEnabled) { @@ -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) From 738415f10a854cb3c3e3df3e790fdaead71941d6 Mon Sep 17 00:00:00 2001 From: azakhi Date: Sun, 12 Aug 2018 11:15:45 +0300 Subject: [PATCH 7/8] Add ElderMap block type --- .../BackgroundColorBlockItem.cs | 2 +- .../BlockItemTypes/BaseTypeBlockItem.cs | 2 +- .../BlockItemTypes/BorderColorBlockItem.cs | 2 +- .../BlockItemTypes/ClassBlockItem.cs | 2 +- .../BlockItemTypes/DropLevelBlockItem.cs | 2 +- .../BlockItemTypes/ElderMapBlockItem.cs | 23 +++++++++++++++++++ .../BlockItemTypes/FontSizeBlockItem.cs | 2 +- .../BlockItemTypes/GemLevelBlockItem.cs | 2 +- .../BlockItemTypes/HasExplicitModBlockItem.cs | 2 +- .../BlockItemTypes/HeightBlockItem.cs | 2 +- .../BlockItemTypes/ItemLevelBlockItem.cs | 2 +- .../PositionalSoundBlockItem.cs | 2 +- .../BlockItemTypes/RarityBlockItem.cs | 2 +- .../BlockItemTypes/SocketGroupBlockItem.cs | 2 +- .../BlockItemTypes/SoundBlockItem.cs | 2 +- .../BlockItemTypes/StackSizeBlockItem.cs | 2 +- .../BlockItemTypes/TextColorBlockItem.cs | 2 +- .../BlockItemTypes/WidthBlockItem.cs | 2 +- .../Filtration.ObjectModel.csproj | 1 + .../Services/TestItemFilterBlockTranslator.cs | 23 +++++++++++++++++++ .../Services/ItemFilterBlockTranslator.cs | 5 ++++ .../ViewModels/ItemFilterBlockViewModel.cs | 1 + 22 files changed, 70 insertions(+), 17 deletions(-) create mode 100644 Filtration.ObjectModel/BlockItemTypes/ElderMapBlockItem.cs diff --git a/Filtration.ObjectModel/BlockItemTypes/BackgroundColorBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/BackgroundColorBlockItem.cs index 2e4bacd..3f3ea11 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 => 21; + public override int SortOrder => 22; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/BaseTypeBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/BaseTypeBlockItem.cs index 3eb1bf0..e51188b 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 => 18; + public override int SortOrder => 19; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/BorderColorBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/BorderColorBlockItem.cs index d308521..842e37b 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 => 22; + public override int SortOrder => 23; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/ClassBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/ClassBlockItem.cs index ef5d250..e46882c 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 => 17; + public override int SortOrder => 18; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/DropLevelBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/DropLevelBlockItem.cs index a9f77c7..a53108c 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 => 13; + public override int SortOrder => 14; public override int Minimum => 0; public override int Maximum => 100; } diff --git a/Filtration.ObjectModel/BlockItemTypes/ElderMapBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/ElderMapBlockItem.cs new file mode 100644 index 0000000..a98cf6a --- /dev/null +++ b/Filtration.ObjectModel/BlockItemTypes/ElderMapBlockItem.cs @@ -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; + + } +} diff --git a/Filtration.ObjectModel/BlockItemTypes/FontSizeBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/FontSizeBlockItem.cs index dcd47bf..2e3d9e0 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 => 23; + public override int SortOrder => 24; public override int Minimum => 11; public override int Maximum => 45; } diff --git a/Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs index 50f3f6e..35bc632 100644 --- a/Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs @@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes 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 SortOrder => 15; public override int Minimum => 0; public override int Maximum => 40; } diff --git a/Filtration.ObjectModel/BlockItemTypes/HasExplicitModBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/HasExplicitModBlockItem.cs index 363c571..9070f73 100644 --- a/Filtration.ObjectModel/BlockItemTypes/HasExplicitModBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/HasExplicitModBlockItem.cs @@ -33,6 +33,6 @@ namespace Filtration.ObjectModel.BlockItemTypes public override Color SummaryBackgroundColor => Colors.MidnightBlue; public override Color SummaryTextColor => Colors.White; - public override int SortOrder => 19; + public override int SortOrder => 20; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/HeightBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/HeightBlockItem.cs index cd06ae0..2f16a13 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 => 10; + public override int SortOrder => 11; public override int Minimum => 0; public override int Maximum => 6; } diff --git a/Filtration.ObjectModel/BlockItemTypes/ItemLevelBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/ItemLevelBlockItem.cs index ace3d69..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 => 12; + public override int SortOrder => 13; public override int Minimum => 0; public override int Maximum => 100; } diff --git a/Filtration.ObjectModel/BlockItemTypes/PositionalSoundBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/PositionalSoundBlockItem.cs index bccabb5..8c60200 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 => 25; + public override int SortOrder => 26; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/RarityBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/RarityBlockItem.cs index eb9203a..da72e69 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 => 16; + public override int SortOrder => 17; 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..d654f34 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 => 10; private SocketColor StringToSocketColor(char socketColorString) { diff --git a/Filtration.ObjectModel/BlockItemTypes/SoundBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/SoundBlockItem.cs index bd1776f..4642047 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 => 24; + public override int SortOrder => 25; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs index dc36b76..9b15ea1 100644 --- a/Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs @@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes 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 SortOrder => 16; 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 2b7cc5d..3ac02c5 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 => 20; + public override int SortOrder => 21; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/WidthBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/WidthBlockItem.cs index b646547..0bb960d 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 => 11; + public override int SortOrder => 12; 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 81baa3b..72601b3 100644 --- a/Filtration.ObjectModel/Filtration.ObjectModel.csproj +++ b/Filtration.ObjectModel/Filtration.ObjectModel.csproj @@ -61,6 +61,7 @@ + diff --git a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs index 70e5d06..2b73cd3 100644 --- a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs +++ b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs @@ -422,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().First(); + Assert.IsFalse(blockItem.BooleanValue); + } + [Test] public void TranslateStringToItemFilterBlock_Identified_ReturnsCorrectObject() { @@ -877,6 +894,7 @@ 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 + @@ -915,6 +933,9 @@ namespace Filtration.Parser.Tests.Services var shapedMapBlockItem = result.BlockItems.OfType().First(); Assert.IsTrue(shapedMapBlockItem.BooleanValue); + var elderMapBlockItem = result.BlockItems.OfType().First(); + Assert.IsFalse(elderMapBlockItem.BooleanValue); + var dropLevelblockItem = result.BlockItems.OfType().First(); Assert.AreEqual(FilterPredicateOperator.LessThan, dropLevelblockItem.FilterPredicate.PredicateOperator); Assert.AreEqual(70, dropLevelblockItem.FilterPredicate.PredicateOperand); @@ -1823,6 +1844,7 @@ 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 + @@ -1881,6 +1903,7 @@ 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)); // Act var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock); diff --git a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs index 5e30f47..81b4b17 100644 --- a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs +++ b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs @@ -281,6 +281,11 @@ namespace Filtration.Parser.Services AddStringListItemToBlockItems(block, trimmedLine); break; } + case "ElderMap": + { + AddBooleanItemToBlockItems(block, trimmedLine); + break; + } } } diff --git a/Filtration/ViewModels/ItemFilterBlockViewModel.cs b/Filtration/ViewModels/ItemFilterBlockViewModel.cs index 396190d..7aaca8e 100644 --- a/Filtration/ViewModels/ItemFilterBlockViewModel.cs +++ b/Filtration/ViewModels/ItemFilterBlockViewModel.cs @@ -160,6 +160,7 @@ namespace Filtration.ViewModels typeof (ElderItemBlockItem), typeof (ShaperItemBlockItem), typeof (ShapedMapBlockItem), + typeof (ElderMapBlockItem), typeof (GemLevelBlockItem), typeof (StackSizeBlockItem), typeof (HasExplicitModBlockItem) From 2c4096ff2c37a464e861462934b787d356df1ddf Mon Sep 17 00:00:00 2001 From: azakhi Date: Mon, 20 Aug 2018 21:19:18 +0300 Subject: [PATCH 8/8] Add DisableDropSound block type --- .../DisableDropSoundBlockItem.cs | 23 +++++++++++++++ .../Filtration.ObjectModel.csproj | 1 + .../Services/TestItemFilterBlockTranslator.cs | 29 +++++++++++++++++-- .../Services/ItemFilterBlockTranslator.cs | 8 +++++ .../ViewModels/ItemFilterBlockViewModel.cs | 3 +- 5 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 Filtration.ObjectModel/BlockItemTypes/DisableDropSoundBlockItem.cs diff --git a/Filtration.ObjectModel/BlockItemTypes/DisableDropSoundBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/DisableDropSoundBlockItem.cs new file mode 100644 index 0000000..73ed861 --- /dev/null +++ b/Filtration.ObjectModel/BlockItemTypes/DisableDropSoundBlockItem.cs @@ -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; + + } +} diff --git a/Filtration.ObjectModel/Filtration.ObjectModel.csproj b/Filtration.ObjectModel/Filtration.ObjectModel.csproj index 72601b3..6d7ae71 100644 --- a/Filtration.ObjectModel/Filtration.ObjectModel.csproj +++ b/Filtration.ObjectModel/Filtration.ObjectModel.csproj @@ -61,6 +61,7 @@ + diff --git a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs index 2b73cd3..7c1d148 100644 --- a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs +++ b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs @@ -874,7 +874,24 @@ namespace Filtration.Parser.Tests.Services Assert.AreEqual("7", blockItem.Value); 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().First(); + Assert.IsTrue(blockItem.BooleanValue); + } + [Test] public void TranslateStringToItemFilterBlock_Everything_ReturnsCorrectObject() { @@ -907,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); @@ -1009,6 +1027,9 @@ namespace Filtration.Parser.Tests.Services var soundblockItem = result.BlockItems.OfType().First(); Assert.AreEqual("3", soundblockItem.Value); Assert.AreEqual(79, soundblockItem.SecondValue); + + var disableDropSoundBlockItem = result.BlockItems.OfType().First(); + Assert.IsFalse(disableDropSoundBlockItem.BooleanValue); } [Test] @@ -1861,7 +1882,8 @@ namespace Filtration.Parser.Tests.Services " 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)); @@ -1904,6 +1926,7 @@ namespace Filtration.Parser.Tests.Services _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); diff --git a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs index 81b4b17..a568ed7 100644 --- a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs +++ b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs @@ -286,6 +286,14 @@ namespace Filtration.Parser.Services AddBooleanItemToBlockItems(block, trimmedLine); break; } + case "DisableDropSound": + { + // Only ever use the last DisableDropSound item encountered as multiples aren't valid. + RemoveExistingBlockItemsOfType(block); + + AddBooleanItemToBlockItems(block, trimmedLine); + break; + } } } diff --git a/Filtration/ViewModels/ItemFilterBlockViewModel.cs b/Filtration/ViewModels/ItemFilterBlockViewModel.cs index 7aaca8e..62b43b2 100644 --- a/Filtration/ViewModels/ItemFilterBlockViewModel.cs +++ b/Filtration/ViewModels/ItemFilterBlockViewModel.cs @@ -173,7 +173,8 @@ namespace Filtration.ViewModels typeof (BorderColorBlockItem), typeof (FontSizeBlockItem), typeof (SoundBlockItem), - typeof (PositionalSoundBlockItem) + typeof (PositionalSoundBlockItem), + typeof (DisableDropSoundBlockItem) }; public bool BlockEnabled