Add new block types

This commit is contained in:
azakhi 2019-03-06 16:02:19 +03:00
parent 444f09751a
commit 79a59b14ec
15 changed files with 174 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, Corrupted,
ElderItem, ElderItem,
ShaperItem, ShaperItem,
SynthesisedItem,
FracturedItem,
AnyEnchantment,
MapTier, MapTier,
ShapedMap, ShapedMap,
ElderMap, ElderMap,
@ -27,6 +30,7 @@ namespace Filtration.ObjectModel.Enums
BaseType, BaseType,
Prophecy, Prophecy,
HasExplicitMod, HasExplicitMod,
HasEnchantment,
SetTextColor, SetTextColor,
SetBackgroundColor, SetBackgroundColor,
SetBorderColor, SetBorderColor,

View File

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

View File

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

View File

@ -463,6 +463,7 @@
<DependentUpon>Settings.settings</DependentUpon> <DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput> <DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile> </Compile>
<EmbeddedResource Include="Resources\Enchantments.txt" />
<Resource Include="Resources\Icons\no_sound_dds_light.png" /> <Resource Include="Resources\Icons\no_sound_dds_light.png" />
<Resource Include="Resources\Icons\no_sound_dds.png" /> <Resource Include="Resources\Icons\no_sound_dds.png" />
<Resource Include="Resources\Icons\speaker_icon.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> /// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. /// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary> /// </summary>

View File

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

View File

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

View File

@ -12,6 +12,7 @@ namespace Filtration.Services
IEnumerable<string> ItemClasses { get; } IEnumerable<string> ItemClasses { get; }
IEnumerable<string> ItemMods { get; } IEnumerable<string> ItemMods { get; }
IEnumerable<string> Prophecies { get; } IEnumerable<string> Prophecies { get; }
IEnumerable<string> Enchantments { get; }
} }
internal class StaticDataService : IStaticDataService internal class StaticDataService : IStaticDataService
@ -29,12 +30,15 @@ namespace Filtration.Services
public IEnumerable<string> Prophecies { get; private set; } public IEnumerable<string> Prophecies { get; private set; }
public IEnumerable<string> Enchantments { get; private set; }
private void PopulateStaticData() private void PopulateStaticData()
{ {
ItemBaseTypes = new LineReader(() => new StringReader(Resources.ItemBaseTypes)).ToList(); ItemBaseTypes = new LineReader(() => new StringReader(Resources.ItemBaseTypes)).ToList();
ItemClasses = new LineReader(() => new StringReader(Resources.ItemClasses)).ToList(); ItemClasses = new LineReader(() => new StringReader(Resources.ItemClasses)).ToList();
ItemMods = new LineReader(() => new StringReader(Resources.ItemMods)).ToList(); ItemMods = new LineReader(() => new StringReader(Resources.ItemMods)).ToList();
Prophecies = new LineReader(() => new StringReader(Resources.Prophecies)).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}" /> <userControls:EditableListBoxControl Margin="5,5,5,5" ItemsSource="{Binding Items}" AutoCompleteItemsSource="{Binding ElementName=TopLevelGrid, Path=DataContext.AutocompleteItemMods}" />
</DataTemplate> </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 --> <!-- Socket Groups Template -->
<DataTemplate DataType="{x:Type blockItemTypes:SocketGroupBlockItem}"> <DataTemplate DataType="{x:Type blockItemTypes:SocketGroupBlockItem}">
<userControls:EditableListBoxControl Margin="5,5,5,5" ItemsSource="{Binding Items}" /> <userControls:EditableListBoxControl Margin="5,5,5,5" ItemsSource="{Binding Items}" />

View File

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

View File

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