Support for Path of Exile 3.6 and Synthesis League (#131)

* Add new block types

* Add new base types
This commit is contained in:
azakhi 2019-03-18 20:27:21 +03:00 committed by Ben Wallis
parent dea0378a16
commit 1f9a1c5196
16 changed files with 199 additions and 3 deletions

View File

@ -0,0 +1,23 @@
using System.Windows.Media;
using Filtration.ObjectModel.BlockItemBaseTypes;
using Filtration.ObjectModel.Enums;
namespace Filtration.ObjectModel.BlockItemTypes
{
public sealed class AnyEnchantmentBlockItem : BooleanBlockItem
{
public AnyEnchantmentBlockItem()
{
}
public AnyEnchantmentBlockItem(bool booleanValue) : base(booleanValue)
{
}
public override string PrefixText => "AnyEnchantment";
public override string DisplayHeading => "Any Enchantment";
public override Color SummaryBackgroundColor => Colors.YellowGreen;
public override Color SummaryTextColor => Colors.Black;
public override BlockItemOrdering SortOrder => BlockItemOrdering.AnyEnchantment;
}
}

View File

@ -0,0 +1,23 @@
using System.Windows.Media;
using Filtration.ObjectModel.BlockItemBaseTypes;
using Filtration.ObjectModel.Enums;
namespace Filtration.ObjectModel.BlockItemTypes
{
public sealed class FracturedItemBlockItem : BooleanBlockItem
{
public FracturedItemBlockItem()
{
}
public FracturedItemBlockItem(bool booleanValue) : base(booleanValue)
{
}
public override string PrefixText => "FracturedItem";
public override string DisplayHeading => "Fractured Item";
public override Color SummaryBackgroundColor => Colors.Salmon;
public override Color SummaryTextColor => Colors.Black;
public override BlockItemOrdering SortOrder => BlockItemOrdering.FracturedItem;
}
}

View File

@ -0,0 +1,39 @@
using System.Linq;
using System.Windows.Media;
using Filtration.ObjectModel.BlockItemBaseTypes;
using Filtration.ObjectModel.Enums;
namespace Filtration.ObjectModel.BlockItemTypes
{
public class HasEnchantmentBlockItem : StringListBlockItem
{
public override string PrefixText => "HasEnchantment";
public override int MaximumAllowed => 1;
public override string DisplayHeading => "Has Enchantment";
public override string SummaryText
{
get
{
if (Items.Count > 0 && Items.Count < 4)
{
return "Enchantments: " +
Items.Aggregate(string.Empty, (current, i) => current + i + ", ").TrimEnd(' ').TrimEnd(',');
}
if (Items.Count >= 4)
{
var remaining = Items.Count - 3;
return "Enchantments: " + Items.Take(3)
.Aggregate(string.Empty, (current, i) => current + i + ", ")
.TrimEnd(' ')
.TrimEnd(',') + " (+" + remaining + " more)";
}
return "Enchantments: (none)";
}
}
public override Color SummaryBackgroundColor => Colors.PaleGreen;
public override Color SummaryTextColor => Colors.Black;
public override BlockItemOrdering SortOrder => BlockItemOrdering.HasEnchantment;
}
}

View File

@ -0,0 +1,23 @@
using System.Windows.Media;
using Filtration.ObjectModel.BlockItemBaseTypes;
using Filtration.ObjectModel.Enums;
namespace Filtration.ObjectModel.BlockItemTypes
{
public sealed class SynthesisedItemBlockItem : BooleanBlockItem
{
public SynthesisedItemBlockItem()
{
}
public SynthesisedItemBlockItem(bool booleanValue) : base(booleanValue)
{
}
public override string PrefixText => "SynthesisedItem";
public override string DisplayHeading => "Synthesised Item";
public override Color SummaryBackgroundColor => Colors.Salmon;
public override Color SummaryTextColor => Colors.Black;
public override BlockItemOrdering SortOrder => BlockItemOrdering.SynthesisedItem;
}
}

View File

@ -12,6 +12,9 @@ namespace Filtration.ObjectModel.Enums
Corrupted,
ElderItem,
ShaperItem,
SynthesisedItem,
FracturedItem,
AnyEnchantment,
MapTier,
ShapedMap,
ElderMap,
@ -27,6 +30,7 @@ namespace Filtration.ObjectModel.Enums
BaseType,
Prophecy,
HasExplicitMod,
HasEnchantment,
SetTextColor,
SetBackgroundColor,
SetBorderColor,

View File

@ -81,8 +81,11 @@
<Compile Include="BlockItemBaseTypes\IntegerBlockItem.cs" />
<Compile Include="BlockItemBaseTypes\NumericFilterPredicateBlockItem.cs" />
<Compile Include="BlockItemBaseTypes\StringListBlockItem.cs" />
<Compile Include="BlockItemTypes\AnyEnchantmentBlockItem.cs" />
<Compile Include="BlockItemTypes\BackgroundColorBlockItem.cs" />
<Compile Include="BlockItemTypes\BaseTypeBlockItem.cs" />
<Compile Include="BlockItemTypes\FracturedItemBlockItem.cs" />
<Compile Include="BlockItemTypes\HasEnchantmentBlockItem.cs" />
<Compile Include="BlockItemTypes\MapTierBlockItem.cs" />
<Compile Include="BlockItemTypes\PlayEffectBlockItem.cs" />
<Compile Include="BlockItemTypes\BorderColorBlockItem.cs" />
@ -95,6 +98,7 @@
<Compile Include="BlockItemTypes\MapIconBlockItem.cs" />
<Compile Include="BlockItemTypes\ProphecyBlockItem.cs" />
<Compile Include="BlockItemTypes\ShapedMapBlockItem.cs" />
<Compile Include="BlockItemTypes\SynthesisedItemBlockItem.cs" />
<Compile Include="BlockItemTypes\ShaperItemBlockItem.cs" />
<Compile Include="BlockItemTypes\ElderItemBlockItem.cs" />
<Compile Include="BlockItemTypes\CorruptedBlockItem.cs" />

View File

@ -184,6 +184,21 @@ namespace Filtration.Parser.Services
AddBooleanItemToBlockItems<ShaperItemBlockItem>(block, trimmedLine);
break;
}
case "SynthesisedItem":
{
AddBooleanItemToBlockItems<SynthesisedItemBlockItem>(block, trimmedLine);
break;
}
case "FracturedItem":
{
AddBooleanItemToBlockItems<FracturedItemBlockItem>(block, trimmedLine);
break;
}
case "AnyEnchantment":
{
AddBooleanItemToBlockItems<AnyEnchantmentBlockItem>(block, trimmedLine);
break;
}
case "ShapedMap":
{
AddBooleanItemToBlockItems<ShapedMapBlockItem>(block, trimmedLine);
@ -317,6 +332,11 @@ namespace Filtration.Parser.Services
AddStringListItemToBlockItems<HasExplicitModBlockItem>(block, trimmedLine);
break;
}
case "HasEnchantment":
{
AddStringListItemToBlockItems<HasEnchantmentBlockItem>(block, trimmedLine);
break;
}
case "ElderMap":
{
AddBooleanItemToBlockItems<ElderMapBlockItem>(block, trimmedLine);

View File

@ -463,6 +463,7 @@
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<EmbeddedResource Include="Resources\Enchantments.txt" />
<Resource Include="Resources\Icons\no_sound_dds_light.png" />
<Resource Include="Resources\Icons\no_sound_dds.png" />
<Resource Include="Resources\Icons\speaker_icon.png" />

View File

@ -389,6 +389,17 @@ namespace Filtration.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Enchantment Decree of Force.
/// </summary>
internal static string Enchantments
{
get
{
return ResourceManager.GetString("Enchantments", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>

View File

@ -214,4 +214,7 @@
<data name="Prophecies" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Prophecies.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
</data>
<data name="Enchantments" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Enchantments.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
</data>
</root>

View File

@ -0,0 +1 @@
Enchantment Decree of Force

View File

@ -22,6 +22,7 @@ Alira's Amulet
Alleyways Map
Allflame
Alloyed Spiked Shield
Alone in the Darkness
Alteration Shard
Amber Amulet
Ambush Boots
@ -76,6 +77,7 @@ Armageddon Brand
Arming Axe
Armourer's Scrap
Armoury Map
Arrogance of the Vaal
Arsenal Map
Ashen Wood Map
Ashscale Talisman
@ -96,6 +98,7 @@ Avian Twins Talisman
Awl
Baleful Gem
Ball Lightning
Bane
Bane of the Loyal
Barbed Club
Barbute Helmet
@ -172,6 +175,7 @@ Bone Offering
Bone Spirit Shield
Bonechill Support
Bonespire Talisman
Boon of Justice
Boon of the First Ones
Boot Blade
Boot Knife
@ -389,6 +393,7 @@ Dagger Axe
Damage on Full Life Support
Dark Forest Map
Dark Pact
Dark Temptation
Darkwood Sceptre
Deadhand Talisman
Deadly Ailments Support
@ -450,6 +455,7 @@ Diamond Ring
Dig Map
Discharge
Discipline
Divine Ire
Divine Life Flask
Divine Mana Flask
Divine Orb
@ -510,6 +516,7 @@ Enchanted Fossil
Encrusted Fossil
Endurance Charge on Melee Stun Support
Enduring Cry
Energy Leech Support
Enfeeble
Engineer's Orb
Engineer's Shard
@ -820,7 +827,9 @@ Infernal Axe
Infernal Blow
Infernal Sword
Infested Valley Map
Infused Channelling Support
Innervate Support
Intensify Support
Invasion Leaguestone
Inya's Key
Iron Circlet
@ -949,6 +958,7 @@ Majestic Plate
Malachai's Entrails
Malachai's Heart
Malachai's Lungs
Malevolence
Malformation Map
Maligaro's Map
Maligaro's Spike
@ -1009,6 +1019,7 @@ Molten Shell
Molten Strike
Monkey Paw Talisman
Monkey Twins Talisman
Monochrome
Moon Orb
Moon Staff
Moon Temple Map
@ -1183,6 +1194,7 @@ Prophet Crown
Prosperity
Puncture
Punishment
Purifying Flame
Purity of Elements
Purity of Fire
Purity of Ice
@ -1295,6 +1307,7 @@ Saint's Hauberk
Saintly Chainmail
Sallet
Sambar Sceptre
Sambodhi's Vow
Samite Gloves
Samite Helmet
Samite Slippers
@ -1357,6 +1370,7 @@ Serpentscale Gauntlets
Serrated Arrow Quiver
Serrated Foil
Serrated Fossil
Seven Years Bad Luck
Shabby Jerkin
Shackled Boots
Shadow Axe
@ -1457,6 +1471,7 @@ Soldier Helmet
Soldier's Brigandine
Sorcerer Boots
Sorcerer Gloves
Soulrend
Sovereign Spiked Shield
Spark
Sparkling Claw
@ -1628,6 +1643,7 @@ The Garish Power
The Gemcutter
The Gentleman
The Gladiator
The Golden Era
The Hale Heart
The Harvester
The Hermit
@ -1642,19 +1658,24 @@ The Inventor
The Iron Bard
The Jester
The Jeweller's Boon
The Journey
The King's Blade
The King's Heart
The Landing
The Last One Standing
The Lich
The Life Thief
The Lion
The Lord in Black
The Lord of Celebration
The Lover
The Lunaris Priestess
The Mad King
The Master
The Master Artisan
The Mayor
The Mercenary
The Messenger
The Metalsmith's Gift
The Nurse
The Oath
@ -1684,6 +1705,7 @@ The Samurai's Eye
The Scarred Meadow
The Scavenger
The Scholar
The Seeker
The Sephirot
The Shaper's Key
The Shaper's Realm
@ -1800,6 +1822,7 @@ Underground River Map
Underground Sea Map
Undying Flesh Talisman
Unearth
Unleash Support
Unset Ring
Unshaping Orb
Ursine Pelt
@ -1924,6 +1947,7 @@ Warlord's Mark
Waste Pool Map
Wasteland Map
Waterways Map
Wave of Conviction
Waxed Garb
Wealth and Power
Weeping Essence
@ -1978,4 +2002,5 @@ Yriel's Key
Zealot Boots
Zealot Gloves
Zealot Helmet
Zealotry
Zodiac Leather

View File

@ -12,6 +12,7 @@ namespace Filtration.Services
IEnumerable<string> ItemClasses { get; }
IEnumerable<string> ItemMods { get; }
IEnumerable<string> Prophecies { get; }
IEnumerable<string> Enchantments { get; }
}
internal class StaticDataService : IStaticDataService
@ -29,12 +30,15 @@ namespace Filtration.Services
public IEnumerable<string> Prophecies { get; private set; }
public IEnumerable<string> Enchantments { get; private set; }
private void PopulateStaticData()
{
ItemBaseTypes = new LineReader(() => new StringReader(Resources.ItemBaseTypes)).ToList();
ItemClasses = new LineReader(() => new StringReader(Resources.ItemClasses)).ToList();
ItemMods = new LineReader(() => new StringReader(Resources.ItemMods)).ToList();
Prophecies = new LineReader(() => new StringReader(Resources.Prophecies)).ToList();
Enchantments = new LineReader(() => new StringReader(Resources.Enchantments)).ToList();
}
}
}

View File

@ -87,6 +87,11 @@
<userControls:EditableListBoxControl Margin="5,5,5,5" ItemsSource="{Binding Items}" AutoCompleteItemsSource="{Binding ElementName=TopLevelGrid, Path=DataContext.AutocompleteItemMods}" />
</DataTemplate>
<!-- Enchantments Template -->
<DataTemplate DataType="{x:Type blockItemTypes:HasEnchantmentBlockItem}">
<userControls:EditableListBoxControl Margin="5,5,5,5" ItemsSource="{Binding Items}" AutoCompleteItemsSource="{Binding ElementName=TopLevelGrid, Path=DataContext.AutocompleteEnchantments}" />
</DataTemplate>
<!-- Socket Groups Template -->
<DataTemplate DataType="{x:Type blockItemTypes:SocketGroupBlockItem}">
<userControls:EditableListBoxControl Margin="5,5,5,5" ItemsSource="{Binding Items}" />

View File

@ -131,12 +131,16 @@ namespace Filtration.ViewModels.DesignTime
typeof (CorruptedBlockItem),
typeof (ElderItemBlockItem),
typeof (ShaperItemBlockItem),
typeof (SynthesisedItemBlockItem),
typeof (FracturedItemBlockItem),
typeof (AnyEnchantmentBlockItem),
typeof (MapTierBlockItem),
typeof (ShapedMapBlockItem),
typeof (ElderMapBlockItem),
typeof (GemLevelBlockItem),
typeof (StackSizeBlockItem),
typeof (HasExplicitModBlockItem)
typeof (HasExplicitModBlockItem),
typeof (HasEnchantmentBlockItem)
};
public List<Type> AudioVisualBlockItemTypesAvailable { get; }
public Color DisplayTextColor => Colors.Red;

View File

@ -208,6 +208,8 @@ namespace Filtration.ViewModels
public IEnumerable<string> AutocompleteItemMods => _staticDataService.ItemMods;
public IEnumerable<string> AutocompleteEnchantments => _staticDataService.Enchantments;
public List<Type> BlockItemTypesAvailable => new List<Type>
{
typeof (ItemLevelBlockItem),
@ -226,12 +228,16 @@ namespace Filtration.ViewModels
typeof (CorruptedBlockItem),
typeof (ElderItemBlockItem),
typeof (ShaperItemBlockItem),
typeof (SynthesisedItemBlockItem),
typeof (FracturedItemBlockItem),
typeof (AnyEnchantmentBlockItem),
typeof (MapTierBlockItem),
typeof (ShapedMapBlockItem),
typeof (ElderMapBlockItem),
typeof (GemLevelBlockItem),
typeof (StackSizeBlockItem),
typeof (HasExplicitModBlockItem)
typeof (HasExplicitModBlockItem),
typeof (HasEnchantmentBlockItem)
};
public List<Type> AudioVisualBlockItemTypesAvailable => new List<Type>