Add initial support for the Prophecy block item.
This commit is contained in:
parent
b5a424f9e9
commit
66e9aeec11
39
Filtration.ObjectModel/BlockItemTypes/ProphecyBlockItem.cs
Normal file
39
Filtration.ObjectModel/BlockItemTypes/ProphecyBlockItem.cs
Normal 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 ProphecyBlockItem : StringListBlockItem
|
||||||
|
{
|
||||||
|
public override string PrefixText => "Prophecy";
|
||||||
|
public override int MaximumAllowed => 1;
|
||||||
|
public override string DisplayHeading => "Prophecy";
|
||||||
|
|
||||||
|
public override string SummaryText
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (Items.Count > 0 && Items.Count < 4)
|
||||||
|
{
|
||||||
|
return "Prophecies: " +
|
||||||
|
Items.Aggregate(string.Empty, (current, i) => current + i + ", ").TrimEnd(' ').TrimEnd(',');
|
||||||
|
}
|
||||||
|
if (Items.Count >= 4)
|
||||||
|
{
|
||||||
|
var remaining = Items.Count - 3;
|
||||||
|
return "Prophecies: " + Items.Take(3)
|
||||||
|
.Aggregate(string.Empty, (current, i) => current + i + ", ")
|
||||||
|
.TrimEnd(' ')
|
||||||
|
.TrimEnd(',') + " (+" + remaining + " more)";
|
||||||
|
}
|
||||||
|
return "Prophecies: (none)";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Color SummaryBackgroundColor => Colors.DarkMagenta;
|
||||||
|
public override Color SummaryTextColor => Colors.White;
|
||||||
|
public override BlockItemOrdering SortOrder => BlockItemOrdering.Prophecy;
|
||||||
|
}
|
||||||
|
}
|
@ -25,6 +25,7 @@ namespace Filtration.ObjectModel.Enums
|
|||||||
Rarity,
|
Rarity,
|
||||||
Class,
|
Class,
|
||||||
BaseType,
|
BaseType,
|
||||||
|
Prophecy,
|
||||||
HasExplicitMod,
|
HasExplicitMod,
|
||||||
SetTextColor,
|
SetTextColor,
|
||||||
SetBackgroundColor,
|
SetBackgroundColor,
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
Rarity,
|
Rarity,
|
||||||
Class,
|
Class,
|
||||||
BaseType,
|
BaseType,
|
||||||
|
Prophecy,
|
||||||
Sockets,
|
Sockets,
|
||||||
LinkedSockets,
|
LinkedSockets,
|
||||||
SocketGroup,
|
SocketGroup,
|
||||||
|
@ -92,6 +92,7 @@
|
|||||||
<Compile Include="BlockItemTypes\GemLevelBlockItem.cs" />
|
<Compile Include="BlockItemTypes\GemLevelBlockItem.cs" />
|
||||||
<Compile Include="BlockItemTypes\HasExplicitModBlockItem.cs" />
|
<Compile Include="BlockItemTypes\HasExplicitModBlockItem.cs" />
|
||||||
<Compile Include="BlockItemTypes\MapIconBlockItem.cs" />
|
<Compile Include="BlockItemTypes\MapIconBlockItem.cs" />
|
||||||
|
<Compile Include="BlockItemTypes\ProphecyBlockItem.cs" />
|
||||||
<Compile Include="BlockItemTypes\ShapedMapBlockItem.cs" />
|
<Compile Include="BlockItemTypes\ShapedMapBlockItem.cs" />
|
||||||
<Compile Include="BlockItemTypes\ShaperItemBlockItem.cs" />
|
<Compile Include="BlockItemTypes\ShaperItemBlockItem.cs" />
|
||||||
<Compile Include="BlockItemTypes\ElderItemBlockItem.cs" />
|
<Compile Include="BlockItemTypes\ElderItemBlockItem.cs" />
|
||||||
|
@ -119,8 +119,8 @@ namespace Filtration.Parser.Tests.Services
|
|||||||
var blockItem = result.BlockItems.OfType<ItemLevelBlockItem>().First();
|
var blockItem = result.BlockItems.OfType<ItemLevelBlockItem>().First();
|
||||||
Assert.AreEqual(55, blockItem.FilterPredicate.PredicateOperand);
|
Assert.AreEqual(55, blockItem.FilterPredicate.PredicateOperand);
|
||||||
Assert.AreEqual(FilterPredicateOperator.GreaterThanOrEqual, blockItem.FilterPredicate.PredicateOperator);
|
Assert.AreEqual(FilterPredicateOperator.GreaterThanOrEqual, blockItem.FilterPredicate.PredicateOperator);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Ignore("Update required, ItemFilterBlockTranslator does not set IsShowChecked anymore")]
|
[Ignore("Update required, ItemFilterBlockTranslator does not set IsShowChecked anymore")]
|
||||||
[Test]
|
[Test]
|
||||||
public void TranslateStringToItemFilterBlock_BlockGroupsEnabled_ShowBlock_SetsBlockGroupIsCheckedCorrectly()
|
public void TranslateStringToItemFilterBlock_BlockGroupsEnabled_ShowBlock_SetsBlockGroupIsCheckedCorrectly()
|
||||||
@ -567,6 +567,25 @@ namespace Filtration.Parser.Tests.Services
|
|||||||
Assert.Contains("Test BaseType 2", blockItem.Items);
|
Assert.Contains("Test BaseType 2", blockItem.Items);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TranslateStringToItemFilterBlock_Prophecy_ReturnsCorrectObject()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var inputString = "Show" + Environment.NewLine +
|
||||||
|
@" Prophecy ""Test Prophecy 1"" ""TestOneWordProphecyInQuotes"" TestOneWordProphecyNotInQuotes ""Test Prophecy 2""";
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(1, result.BlockItems.Count(b => b is ProphecyBlockItem));
|
||||||
|
var blockItem = result.BlockItems.OfType<ProphecyBlockItem>().First();
|
||||||
|
Assert.Contains("Test Prophecy 1", blockItem.Items);
|
||||||
|
Assert.Contains("TestOneWordProphecyInQuotes", blockItem.Items);
|
||||||
|
Assert.Contains("TestOneWordProphecyNotInQuotes", blockItem.Items);
|
||||||
|
Assert.Contains("Test Prophecy 2", blockItem.Items);
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TranslateStringToItemFilterBlock_HasExplicitMod_ReturnsCorrectObject()
|
public void TranslateStringToItemFilterBlock_HasExplicitMod_ReturnsCorrectObject()
|
||||||
{
|
{
|
||||||
@ -934,6 +953,7 @@ namespace Filtration.Parser.Tests.Services
|
|||||||
" ElderMap False" + Environment.NewLine +
|
" ElderMap False" + Environment.NewLine +
|
||||||
@" Class ""My Item Class"" AnotherClass ""AndAnotherClass""" + Environment.NewLine +
|
@" Class ""My Item Class"" AnotherClass ""AndAnotherClass""" + Environment.NewLine +
|
||||||
@" BaseType MyBaseType ""Another BaseType""" + Environment.NewLine +
|
@" BaseType MyBaseType ""Another BaseType""" + Environment.NewLine +
|
||||||
|
@" Prophecy MyProphecy ""Another Prophecy""" + Environment.NewLine +
|
||||||
@" HasExplicitMod MyMod ""Another Mod""" + Environment.NewLine +
|
@" HasExplicitMod MyMod ""Another Mod""" + Environment.NewLine +
|
||||||
" JunkLine Let's ignore this one!" + Environment.NewLine +
|
" JunkLine Let's ignore this one!" + Environment.NewLine +
|
||||||
" #Quality Commented out quality line" + Environment.NewLine +
|
" #Quality Commented out quality line" + Environment.NewLine +
|
||||||
@ -1008,6 +1028,11 @@ namespace Filtration.Parser.Tests.Services
|
|||||||
Assert.Contains("MyBaseType", baseTypeblockItem.Items);
|
Assert.Contains("MyBaseType", baseTypeblockItem.Items);
|
||||||
Assert.Contains("Another BaseType", baseTypeblockItem.Items);
|
Assert.Contains("Another BaseType", baseTypeblockItem.Items);
|
||||||
|
|
||||||
|
var prophecyblockItem = result.BlockItems.OfType<ProphecyBlockItem>().First();
|
||||||
|
Assert.AreEqual(2, prophecyblockItem.Items.Count);
|
||||||
|
Assert.Contains("MyProphecy", prophecyblockItem.Items);
|
||||||
|
Assert.Contains("Another Prophecy", prophecyblockItem.Items);
|
||||||
|
|
||||||
var hasExplicitModBlockItem = result.BlockItems.OfType<HasExplicitModBlockItem>().First();
|
var hasExplicitModBlockItem = result.BlockItems.OfType<HasExplicitModBlockItem>().First();
|
||||||
Assert.AreEqual(2, hasExplicitModBlockItem.Items.Count);
|
Assert.AreEqual(2, hasExplicitModBlockItem.Items.Count);
|
||||||
Assert.Contains("MyMod", hasExplicitModBlockItem.Items);
|
Assert.Contains("MyMod", hasExplicitModBlockItem.Items);
|
||||||
@ -1707,6 +1732,26 @@ namespace Filtration.Parser.Tests.Services
|
|||||||
Assert.AreEqual(expectedResult, result);
|
Assert.AreEqual(expectedResult, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TranslateItemFilterBlockToString_Prophecies_ReturnsCorrectString()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var expectedResult = "Show" + Environment.NewLine +
|
||||||
|
" Prophecy \"Test Prophecy\" \"Another Prophecy\" \"Yet Another Prophecy\"";
|
||||||
|
|
||||||
|
var prophecyBlockItem = new ProphecyBlockItem();
|
||||||
|
prophecyBlockItem.Items.Add("Test Prophecy");
|
||||||
|
prophecyBlockItem.Items.Add("Another Prophecy");
|
||||||
|
prophecyBlockItem.Items.Add("Yet Another Prophecy");
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(prophecyBlockItem);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(expectedResult, result);
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TranslateItemFilterBlockToString_HasExplicitMod_ReturnsCorrectString()
|
public void TranslateItemFilterBlockToString_HasExplicitMod_ReturnsCorrectString()
|
||||||
{
|
{
|
||||||
@ -2013,6 +2058,7 @@ namespace Filtration.Parser.Tests.Services
|
|||||||
" Rarity = Unique" + Environment.NewLine +
|
" Rarity = Unique" + Environment.NewLine +
|
||||||
" Class \"Body Armour\" \"Gloves\" \"Belt\" \"Two Hand Axes\"" + Environment.NewLine +
|
" Class \"Body Armour\" \"Gloves\" \"Belt\" \"Two Hand Axes\"" + Environment.NewLine +
|
||||||
" BaseType \"Greater Life Flask\" \"Simple Robe\" \"Full Wyrmscale\"" + Environment.NewLine +
|
" BaseType \"Greater Life Flask\" \"Simple Robe\" \"Full Wyrmscale\"" + Environment.NewLine +
|
||||||
|
" Prophecy \"The Cursed Choir\" \"A Valuable Combination\" \"The Beautiful Guide\"" + Environment.NewLine +
|
||||||
" HasExplicitMod \"Guatelitzi's\" \"of Tacati\" \"Tyrannical\"" + Environment.NewLine +
|
" HasExplicitMod \"Guatelitzi's\" \"of Tacati\" \"Tyrannical\"" + Environment.NewLine +
|
||||||
" SetTextColor 255 89 0 56" + Environment.NewLine +
|
" SetTextColor 255 89 0 56" + Environment.NewLine +
|
||||||
" SetBackgroundColor 0 0 0" + Environment.NewLine +
|
" SetBackgroundColor 0 0 0" + Environment.NewLine +
|
||||||
@ -2046,6 +2092,11 @@ namespace Filtration.Parser.Tests.Services
|
|||||||
baseTypeItemblockItem.Items.Add("Simple Robe");
|
baseTypeItemblockItem.Items.Add("Simple Robe");
|
||||||
baseTypeItemblockItem.Items.Add("Full Wyrmscale");
|
baseTypeItemblockItem.Items.Add("Full Wyrmscale");
|
||||||
_testUtility.TestBlock.BlockItems.Add(baseTypeItemblockItem);
|
_testUtility.TestBlock.BlockItems.Add(baseTypeItemblockItem);
|
||||||
|
var prophecyItemblockItem = new ProphecyBlockItem();
|
||||||
|
prophecyItemblockItem.Items.Add("The Cursed Choir");
|
||||||
|
prophecyItemblockItem.Items.Add("A Valuable Combination");
|
||||||
|
prophecyItemblockItem.Items.Add("The Beautiful Guide");
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(prophecyItemblockItem);
|
||||||
var hasExplicitModBlockItem = new HasExplicitModBlockItem();
|
var hasExplicitModBlockItem = new HasExplicitModBlockItem();
|
||||||
hasExplicitModBlockItem.Items.Add("Guatelitzi's");
|
hasExplicitModBlockItem.Items.Add("Guatelitzi's");
|
||||||
hasExplicitModBlockItem.Items.Add("of Tacati");
|
hasExplicitModBlockItem.Items.Add("of Tacati");
|
||||||
|
@ -46,7 +46,7 @@ namespace Filtration.Parser.Services
|
|||||||
return itemFilterCommentBlock;
|
return itemFilterCommentBlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
// This method converts a string into a ItemFilterBlock. This is used for pasting ItemFilterBlocks
|
// This method converts a string into a ItemFilterBlock. This is used for pasting ItemFilterBlocks
|
||||||
// and reading ItemFilterScripts from a file.
|
// and reading ItemFilterScripts from a file.
|
||||||
public IItemFilterBlock TranslateStringToItemFilterBlock(string inputString, IItemFilterScript parentItemFilterScript, string originalString = "", bool initialiseBlockGroupHierarchyBuilder = false)
|
public IItemFilterBlock TranslateStringToItemFilterBlock(string inputString, IItemFilterScript parentItemFilterScript, string originalString = "", bool initialiseBlockGroupHierarchyBuilder = false)
|
||||||
{
|
{
|
||||||
@ -159,6 +159,11 @@ namespace Filtration.Parser.Services
|
|||||||
AddStringListItemToBlockItems<BaseTypeBlockItem>(block, trimmedLine);
|
AddStringListItemToBlockItems<BaseTypeBlockItem>(block, trimmedLine);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case "Prophecy":
|
||||||
|
{
|
||||||
|
AddStringListItemToBlockItems<ProphecyBlockItem>(block, trimmedLine);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case "Corrupted":
|
case "Corrupted":
|
||||||
{
|
{
|
||||||
AddBooleanItemToBlockItems<CorruptedBlockItem>(block, trimmedLine);
|
AddBooleanItemToBlockItems<CorruptedBlockItem>(block, trimmedLine);
|
||||||
@ -268,7 +273,7 @@ namespace Filtration.Parser.Services
|
|||||||
RemoveExistingBlockItemsOfType<CustomSoundBlockItem>(block);
|
RemoveExistingBlockItemsOfType<CustomSoundBlockItem>(block);
|
||||||
|
|
||||||
var match = Regex.Match(trimmedLine, @"\S+\s+(\S+)\s?(\d+)?");
|
var match = Regex.Match(trimmedLine, @"\S+\s+(\S+)\s?(\d+)?");
|
||||||
|
|
||||||
if (match.Success)
|
if (match.Success)
|
||||||
{
|
{
|
||||||
string firstValue = match.Groups[1].Value;
|
string firstValue = match.Groups[1].Value;
|
||||||
@ -329,12 +334,12 @@ namespace Filtration.Parser.Services
|
|||||||
{
|
{
|
||||||
// Only ever use the last Icon item encountered as multiples aren't valid.
|
// Only ever use the last Icon item encountered as multiples aren't valid.
|
||||||
RemoveExistingBlockItemsOfType<MapIconBlockItem>(block);
|
RemoveExistingBlockItemsOfType<MapIconBlockItem>(block);
|
||||||
|
|
||||||
// TODO: Get size, color, shape values programmatically
|
// TODO: Get size, color, shape values programmatically
|
||||||
var match = Regex.Match(trimmedLine,
|
var match = Regex.Match(trimmedLine,
|
||||||
@"\S+\s+(0|1|2)\s+(Red|Green|Blue|Brown|White|Yellow)\s+(Circle|Diamond|Hexagon|Square|Star|Triangle)\s*([#]?)(.*)",
|
@"\S+\s+(0|1|2)\s+(Red|Green|Blue|Brown|White|Yellow)\s+(Circle|Diamond|Hexagon|Square|Star|Triangle)\s*([#]?)(.*)",
|
||||||
RegexOptions.IgnoreCase);
|
RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
if (match.Success)
|
if (match.Success)
|
||||||
{
|
{
|
||||||
var blockItemValue = new MapIconBlockItem
|
var blockItemValue = new MapIconBlockItem
|
||||||
@ -359,10 +364,10 @@ namespace Filtration.Parser.Services
|
|||||||
{
|
{
|
||||||
// Only ever use the last BeamColor item encountered as multiples aren't valid.
|
// Only ever use the last BeamColor item encountered as multiples aren't valid.
|
||||||
RemoveExistingBlockItemsOfType<PlayEffectBlockItem>(block);
|
RemoveExistingBlockItemsOfType<PlayEffectBlockItem>(block);
|
||||||
|
|
||||||
// TODO: Get colors programmatically
|
// TODO: Get colors programmatically
|
||||||
var match = Regex.Match(trimmedLine, @"\S+\s+(Red|Green|Blue|Brown|White|Yellow)\s*(Temp)?", RegexOptions.IgnoreCase);
|
var match = Regex.Match(trimmedLine, @"\S+\s+(Red|Green|Blue|Brown|White|Yellow)\s*(Temp)?", RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
if (match.Success)
|
if (match.Success)
|
||||||
{
|
{
|
||||||
var blockItemValue = new PlayEffectBlockItem
|
var blockItemValue = new PlayEffectBlockItem
|
||||||
@ -383,7 +388,7 @@ namespace Filtration.Parser.Services
|
|||||||
RemoveExistingBlockItemsOfType<PositionalSoundBlockItem>(block);
|
RemoveExistingBlockItemsOfType<PositionalSoundBlockItem>(block);
|
||||||
|
|
||||||
var match = Regex.Match(trimmedLine, @"\S+\s+""([^\*\<\>\?|]+)""");
|
var match = Regex.Match(trimmedLine, @"\S+\s+""([^\*\<\>\?|]+)""");
|
||||||
|
|
||||||
if (match.Success)
|
if (match.Success)
|
||||||
{
|
{
|
||||||
var blockItemValue = new CustomSoundBlockItem
|
var blockItemValue = new CustomSoundBlockItem
|
||||||
@ -510,7 +515,7 @@ namespace Filtration.Parser.Services
|
|||||||
private static void AddNumericFilterPredicateItemToBlockItems<T>(IItemFilterBlock block, string inputString) where T : NumericFilterPredicateBlockItem
|
private static void AddNumericFilterPredicateItemToBlockItems<T>(IItemFilterBlock block, string inputString) where T : NumericFilterPredicateBlockItem
|
||||||
{
|
{
|
||||||
var blockItem = Activator.CreateInstance<T>();
|
var blockItem = Activator.CreateInstance<T>();
|
||||||
|
|
||||||
SetNumericFilterPredicateFromString(blockItem.FilterPredicate, inputString);
|
SetNumericFilterPredicateFromString(blockItem.FilterPredicate, inputString);
|
||||||
block.BlockItems.Add(blockItem);
|
block.BlockItems.Add(blockItem);
|
||||||
}
|
}
|
||||||
@ -637,10 +642,10 @@ namespace Filtration.Parser.Services
|
|||||||
blockItems.Add(blockItem);
|
blockItems.Add(blockItem);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AddBlockGroupToBlock(IItemFilterBlock block, string inputString)
|
private void AddBlockGroupToBlock(IItemFilterBlock block, string inputString)
|
||||||
{
|
{
|
||||||
var blockGroupText = GetTextAfterFirstComment(inputString);
|
var blockGroupText = GetTextAfterFirstComment(inputString);
|
||||||
@ -725,7 +730,7 @@ namespace Filtration.Parser.Services
|
|||||||
// Remove trailing newline
|
// Remove trailing newline
|
||||||
return commentWithHashes.TrimEnd('\r', '\n');
|
return commentWithHashes.TrimEnd('\r', '\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
// This method converts an ItemFilterBlock object into a string. This is used for copying a ItemFilterBlock
|
// This method converts an ItemFilterBlock object into a string. This is used for copying a ItemFilterBlock
|
||||||
// to the clipboard, and when saving a ItemFilterScript.
|
// to the clipboard, and when saving a ItemFilterScript.
|
||||||
// TODO: Private
|
// TODO: Private
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<UserControl x:Class="Filtration.UserControls.BlockItemControl"
|
<UserControl x:Class="Filtration.UserControls.BlockItemControl"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:userControls="clr-namespace:Filtration.UserControls"
|
xmlns:userControls="clr-namespace:Filtration.UserControls"
|
||||||
xmlns:commonConverters="clr-namespace:Filtration.Common.Converters;assembly=Filtration.Common"
|
xmlns:commonConverters="clr-namespace:Filtration.Common.Converters;assembly=Filtration.Common"
|
||||||
@ -11,7 +11,7 @@
|
|||||||
xmlns:enums="clr-namespace:Filtration.ObjectModel.Enums;assembly=Filtration.ObjectModel"
|
xmlns:enums="clr-namespace:Filtration.ObjectModel.Enums;assembly=Filtration.ObjectModel"
|
||||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||||
xmlns:views="clr-namespace:Filtration.Views"
|
xmlns:views="clr-namespace:Filtration.Views"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
d:DataContext="{d:DesignInstance Type=userControls:BlockItemControl}"
|
d:DataContext="{d:DesignInstance Type=userControls:BlockItemControl}"
|
||||||
d:DesignHeight="200" d:DesignWidth="190">
|
d:DesignHeight="200" d:DesignWidth="190">
|
||||||
<UserControl.Resources>
|
<UserControl.Resources>
|
||||||
@ -46,12 +46,12 @@
|
|||||||
<RadioButton IsChecked="{Binding BooleanValue, Converter={StaticResource BoolInverterConverter}}">False</RadioButton>
|
<RadioButton IsChecked="{Binding BooleanValue, Converter={StaticResource BoolInverterConverter}}">False</RadioButton>
|
||||||
</WrapPanel>
|
</WrapPanel>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
<!-- NumericFilterPredicate Template -->
|
<!-- NumericFilterPredicate Template -->
|
||||||
<DataTemplate DataType="{x:Type blockItemBaseTypes:NumericFilterPredicateBlockItem}">
|
<DataTemplate DataType="{x:Type blockItemBaseTypes:NumericFilterPredicateBlockItem}">
|
||||||
<userControls:NumericFilterPredicateControl Margin="5,5,5,5" NumericFilterPredicate="{Binding FilterPredicate}" Minimum="{Binding Minimum, Mode=OneTime}" Maximum="{Binding Maximum, Mode=OneTime}" />
|
<userControls:NumericFilterPredicateControl Margin="5,5,5,5" NumericFilterPredicate="{Binding FilterPredicate}" Minimum="{Binding Minimum, Mode=OneTime}" Maximum="{Binding Maximum, Mode=OneTime}" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
<!-- Rarity Template -->
|
<!-- Rarity Template -->
|
||||||
<DataTemplate DataType="{x:Type blockItemTypes:RarityBlockItem}">
|
<DataTemplate DataType="{x:Type blockItemTypes:RarityBlockItem}">
|
||||||
<StackPanel Orientation="Horizontal" Margin="5,5,5,5">
|
<StackPanel Orientation="Horizontal" Margin="5,5,5,5">
|
||||||
@ -70,12 +70,17 @@
|
|||||||
<DataTemplate DataType="{x:Type blockItemTypes:ClassBlockItem}">
|
<DataTemplate DataType="{x:Type blockItemTypes:ClassBlockItem}">
|
||||||
<userControls:EditableListBoxControl Margin="5,5,5,5" ItemsSource="{Binding Items}" AutoCompleteItemsSource="{Binding ElementName=TopLevelGrid, Path=DataContext.AutoCompleteItemClasses}" />
|
<userControls:EditableListBoxControl Margin="5,5,5,5" ItemsSource="{Binding Items}" AutoCompleteItemsSource="{Binding ElementName=TopLevelGrid, Path=DataContext.AutoCompleteItemClasses}" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
<!-- Base Type Template -->
|
<!-- Base Type Template -->
|
||||||
<DataTemplate DataType="{x:Type blockItemTypes:BaseTypeBlockItem}">
|
<DataTemplate DataType="{x:Type blockItemTypes:BaseTypeBlockItem}">
|
||||||
<userControls:EditableListBoxControl Margin="5,5,5,5" ItemsSource="{Binding Items}" AutoCompleteItemsSource="{Binding ElementName=TopLevelGrid, Path=DataContext.AutoCompleteItemBaseTypes}" />
|
<userControls:EditableListBoxControl Margin="5,5,5,5" ItemsSource="{Binding Items}" AutoCompleteItemsSource="{Binding ElementName=TopLevelGrid, Path=DataContext.AutoCompleteItemBaseTypes}" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
|
<!-- Prophecy Template -->
|
||||||
|
<DataTemplate DataType="{x:Type blockItemTypes:ProphecyBlockItem}">
|
||||||
|
<userControls:EditableListBoxControl Margin="5,5,5,5" ItemsSource="{Binding Items}" AutoCompleteItemsSource="{Binding ElementName=TopLevelGrid, Path=DataContext.AutoCompleteProphecies}" />
|
||||||
|
</DataTemplate>
|
||||||
|
|
||||||
<!-- Explicit Mods Template -->
|
<!-- Explicit Mods Template -->
|
||||||
<DataTemplate DataType="{x:Type blockItemTypes:HasExplicitModBlockItem}">
|
<DataTemplate DataType="{x:Type blockItemTypes:HasExplicitModBlockItem}">
|
||||||
<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}" />
|
||||||
@ -114,12 +119,12 @@
|
|||||||
<StackPanel>
|
<StackPanel>
|
||||||
<xctk:ColorPicker SelectedColor="{Binding Color}" AvailableColors="{Binding ElementName=BlockItemContentControl, Path=DataContext.AvailableColors }" ShowAvailableColors="True" AvailableColorsHeader="Path of Exile Colors"/>
|
<xctk:ColorPicker SelectedColor="{Binding Color}" AvailableColors="{Binding ElementName=BlockItemContentControl, Path=DataContext.AvailableColors }" ShowAvailableColors="True" AvailableColorsHeader="Path of Exile Colors"/>
|
||||||
<userControls:ThemeComponentSelectionControl ThemeComponent="{Binding ThemeComponent}"
|
<userControls:ThemeComponentSelectionControl ThemeComponent="{Binding ThemeComponent}"
|
||||||
|
|
||||||
Margin="0,2,0,2">
|
Margin="0,2,0,2">
|
||||||
<userControls:ThemeComponentSelectionControl.AvailableThemeComponents>
|
<userControls:ThemeComponentSelectionControl.AvailableThemeComponents>
|
||||||
<MultiBinding Converter="{StaticResource AvailableThemeComponentsConverter}">
|
<MultiBinding Converter="{StaticResource AvailableThemeComponentsConverter}">
|
||||||
<Binding Path="DataContext.Script.ThemeComponents" RelativeSource="{RelativeSource AncestorType={x:Type views:ItemFilterScriptView}}"/>
|
<Binding Path="DataContext.Script.ThemeComponents" RelativeSource="{RelativeSource AncestorType={x:Type views:ItemFilterScriptView}}"/>
|
||||||
<Binding Path="." />
|
<Binding Path="." />
|
||||||
</MultiBinding>
|
</MultiBinding>
|
||||||
</userControls:ThemeComponentSelectionControl.AvailableThemeComponents>
|
</userControls:ThemeComponentSelectionControl.AvailableThemeComponents>
|
||||||
</userControls:ThemeComponentSelectionControl>
|
</userControls:ThemeComponentSelectionControl>
|
||||||
@ -164,7 +169,7 @@
|
|||||||
</userControls:ThemeComponentSelectionControl>
|
</userControls:ThemeComponentSelectionControl>
|
||||||
</WrapPanel>
|
</WrapPanel>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
<!-- Positional Sound Template -->
|
<!-- Positional Sound Template -->
|
||||||
<DataTemplate DataType="{x:Type blockItemTypes:PositionalSoundBlockItem}">
|
<DataTemplate DataType="{x:Type blockItemTypes:PositionalSoundBlockItem}">
|
||||||
<WrapPanel HorizontalAlignment="Left">
|
<WrapPanel HorizontalAlignment="Left">
|
||||||
@ -225,7 +230,7 @@
|
|||||||
<Button Grid.Column="0" Grid.Row="0" Command="{Binding Path=DataContext.PlayCustomSoundCommand, RelativeSource={RelativeSource AncestorType={x:Type views:ItemFilterBlockView}}}" Width="20" Height="20" Background="Transparent" BorderBrush="Transparent">
|
<Button Grid.Column="0" Grid.Row="0" Command="{Binding Path=DataContext.PlayCustomSoundCommand, RelativeSource={RelativeSource AncestorType={x:Type views:ItemFilterBlockView}}}" Width="20" Height="20" Background="Transparent" BorderBrush="Transparent">
|
||||||
<Image Source="/Filtration;component/Resources/Icons/speaker_icon.png" VerticalAlignment="Center" HorizontalAlignment="Center" />
|
<Image Source="/Filtration;component/Resources/Icons/speaker_icon.png" VerticalAlignment="Center" HorizontalAlignment="Center" />
|
||||||
</Button>
|
</Button>
|
||||||
<ComboBox Grid.Column="1" Grid.Row="0" ItemsSource="{Binding Path=DataContext.CustomSoundsAvailable, UpdateSourceTrigger=PropertyChanged, RelativeSource={RelativeSource AncestorType={x:Type views:ItemFilterScriptView}}}"
|
<ComboBox Grid.Column="1" Grid.Row="0" ItemsSource="{Binding Path=DataContext.CustomSoundsAvailable, UpdateSourceTrigger=PropertyChanged, RelativeSource={RelativeSource AncestorType={x:Type views:ItemFilterScriptView}}}"
|
||||||
SelectedValue="{Binding Value, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource MetroComboBox}"/>
|
SelectedValue="{Binding Value, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource MetroComboBox}"/>
|
||||||
<Button Grid.Column="1" Grid.Row="0" Command="{Binding Path=DataContext.CustomSoundFileDialogCommand, RelativeSource={RelativeSource AncestorType={x:Type views:ItemFilterBlockView}}}"
|
<Button Grid.Column="1" Grid.Row="0" Command="{Binding Path=DataContext.CustomSoundFileDialogCommand, RelativeSource={RelativeSource AncestorType={x:Type views:ItemFilterBlockView}}}"
|
||||||
Width="20" Height="20" Background="Transparent" BorderBrush="Transparent" Margin="0,0,30,0" VerticalAlignment="Center" HorizontalAlignment="Right">
|
Width="20" Height="20" Background="Transparent" BorderBrush="Transparent" Margin="0,0,30,0" VerticalAlignment="Center" HorizontalAlignment="Right">
|
||||||
|
@ -104,13 +104,14 @@ namespace Filtration.ViewModels.DesignTime
|
|||||||
{
|
{
|
||||||
get { return Block.BlockItems.Where(b => !(b is IAudioVisualBlockItem)); }
|
get { return Block.BlockItems.Where(b => !(b is IAudioVisualBlockItem)); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<IItemFilterBlockItem> AudioVisualBlockItems { get; }
|
public IEnumerable<IItemFilterBlockItem> AudioVisualBlockItems { get; }
|
||||||
public bool AdvancedBlockGroup { get; }
|
public bool AdvancedBlockGroup { get; }
|
||||||
public bool AudioVisualBlockItemsGridVisible { get; set; }
|
public bool AudioVisualBlockItemsGridVisible { get; set; }
|
||||||
public bool DisplaySettingsPopupOpen { get; set; }
|
public bool DisplaySettingsPopupOpen { get; set; }
|
||||||
public IEnumerable<string> AutoCompleteItemClasses { get; }
|
public IEnumerable<string> AutoCompleteItemClasses { get; }
|
||||||
public IEnumerable<string> AutoCompleteItemBaseTypes { get; }
|
public IEnumerable<string> AutoCompleteItemBaseTypes { get; }
|
||||||
|
public IEnumerable<string> AutoCompleteProphecies { get; }
|
||||||
public IEnumerable<string> AutocompleteItemMods { get; }
|
public IEnumerable<string> AutocompleteItemMods { get; }
|
||||||
public List<Type> BlockItemTypesAvailable => new List<Type>
|
public List<Type> BlockItemTypesAvailable => new List<Type>
|
||||||
{
|
{
|
||||||
@ -125,6 +126,7 @@ namespace Filtration.ViewModels.DesignTime
|
|||||||
typeof (SocketGroupBlockItem),
|
typeof (SocketGroupBlockItem),
|
||||||
typeof (ClassBlockItem),
|
typeof (ClassBlockItem),
|
||||||
typeof (BaseTypeBlockItem),
|
typeof (BaseTypeBlockItem),
|
||||||
|
typeof (ProphecyBlockItem),
|
||||||
typeof (IdentifiedBlockItem),
|
typeof (IdentifiedBlockItem),
|
||||||
typeof (CorruptedBlockItem),
|
typeof (CorruptedBlockItem),
|
||||||
typeof (ElderItemBlockItem),
|
typeof (ElderItemBlockItem),
|
||||||
|
@ -50,6 +50,7 @@ namespace Filtration.ViewModels
|
|||||||
bool DisplaySettingsPopupOpen { get; set; }
|
bool DisplaySettingsPopupOpen { get; set; }
|
||||||
IEnumerable<string> AutoCompleteItemClasses { get; }
|
IEnumerable<string> AutoCompleteItemClasses { get; }
|
||||||
IEnumerable<string> AutoCompleteItemBaseTypes { get; }
|
IEnumerable<string> AutoCompleteItemBaseTypes { get; }
|
||||||
|
IEnumerable<string> AutoCompleteProphecies { get; }
|
||||||
IEnumerable<string> AutocompleteItemMods { get; }
|
IEnumerable<string> AutocompleteItemMods { get; }
|
||||||
List<Type> BlockItemTypesAvailable { get; }
|
List<Type> BlockItemTypesAvailable { get; }
|
||||||
List<Type> AudioVisualBlockItemTypesAvailable { get; }
|
List<Type> AudioVisualBlockItemTypesAvailable { get; }
|
||||||
@ -203,6 +204,8 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
public IEnumerable<string> AutoCompleteItemBaseTypes => _staticDataService.ItemBaseTypes;
|
public IEnumerable<string> AutoCompleteItemBaseTypes => _staticDataService.ItemBaseTypes;
|
||||||
|
|
||||||
|
public IEnumerable<string> AutoCompleteProphecies => new List<string>();
|
||||||
|
|
||||||
public IEnumerable<string> AutocompleteItemMods => _staticDataService.ItemMods;
|
public IEnumerable<string> AutocompleteItemMods => _staticDataService.ItemMods;
|
||||||
|
|
||||||
public List<Type> BlockItemTypesAvailable => new List<Type>
|
public List<Type> BlockItemTypesAvailable => new List<Type>
|
||||||
@ -218,6 +221,7 @@ namespace Filtration.ViewModels
|
|||||||
typeof (SocketGroupBlockItem),
|
typeof (SocketGroupBlockItem),
|
||||||
typeof (ClassBlockItem),
|
typeof (ClassBlockItem),
|
||||||
typeof (BaseTypeBlockItem),
|
typeof (BaseTypeBlockItem),
|
||||||
|
typeof (ProphecyBlockItem),
|
||||||
typeof (IdentifiedBlockItem),
|
typeof (IdentifiedBlockItem),
|
||||||
typeof (CorruptedBlockItem),
|
typeof (CorruptedBlockItem),
|
||||||
typeof (ElderItemBlockItem),
|
typeof (ElderItemBlockItem),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user