Merge pull request #49 from GlenCFL/master

Provide an update to fully support Path of Exile 3.1.
This commit is contained in:
Ben Wallis 2017-12-07 20:19:14 +00:00 committed by GitHub
commit b88730fb3a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
70 changed files with 2080 additions and 1117 deletions

1
.gitignore vendored
View File

@ -4,6 +4,7 @@
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
/.vs/
*.suo
*.user
*.userosscache

View File

@ -0,0 +1,50 @@
using System.Windows.Media;
namespace Filtration.ObjectModel.BlockItemBaseTypes
{
public abstract class StrIntBlockItem : BlockItemBase, IAudioVisualBlockItem
{
private string _value;
private int _secondValue;
protected StrIntBlockItem()
{
}
protected StrIntBlockItem(string value, int secondValue)
{
Value = value;
SecondValue = secondValue;
Value = value;
SecondValue = secondValue;
}
public override string OutputText => PrefixText + " " + Value + " " + SecondValue;
public override string SummaryText => string.Empty;
public override Color SummaryBackgroundColor => Colors.Transparent;
public override Color SummaryTextColor => Colors.Transparent;
public string Value
{
get { return _value; }
set
{
_value = value;
IsDirty = true;
OnPropertyChanged();
}
}
public int SecondValue
{
get { return _secondValue; }
set
{
_secondValue = value;
IsDirty = true;
OnPropertyChanged();
}
}
}
}

View File

@ -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 => 15;
public override int SortOrder => 18;
}
}

View File

@ -33,6 +33,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override Color SummaryBackgroundColor => Colors.MediumTurquoise;
public override Color SummaryTextColor => Colors.Black;
public override int SortOrder => 11;
public override int SortOrder => 16;
}
}

View File

@ -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 => 16;
public override int SortOrder => 19;
}
}

View File

@ -33,6 +33,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override Color SummaryBackgroundColor => Colors.MediumSeaGreen;
public override Color SummaryTextColor => Colors.White;
public override int SortOrder => 10;
public override int SortOrder => 15;
}
}

View File

@ -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 => 9;
public override int SortOrder => 13;
public override int Minimum => 0;
public override int Maximum => 100;
}

View File

@ -0,0 +1,23 @@
using System.Windows.Media;
using Filtration.ObjectModel.BlockItemBaseTypes;
namespace Filtration.ObjectModel.BlockItemTypes
{
public sealed class ElderItemBlockItem : BooleanBlockItem
{
public ElderItemBlockItem()
{
}
public ElderItemBlockItem(bool booleanValue) : base(booleanValue)
{
}
public override string PrefixText => "ElderItem";
public override string DisplayHeading => "Elder Item";
public override Color SummaryBackgroundColor => Colors.DarkGray;
public override Color SummaryTextColor => Colors.White;
public override int SortOrder => 6;
}
}

View File

@ -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 => 17;
public override int SortOrder => 20;
public override int Minimum => 11;
public override int Maximum => 45;
}

View File

@ -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 => 7;
public override int SortOrder => 10;
public override int Minimum => 0;
public override int Maximum => 6;
}

View File

@ -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 => 13;
public override int SortOrder => 12;
public override int Minimum => 0;
public override int Maximum => 100;
}

View File

@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string SummaryText => "Linked Sockets " + FilterPredicate;
public override Color SummaryBackgroundColor => Colors.Gold;
public override Color SummaryTextColor => Colors.Black;
public override int SortOrder => 0;
public override int SortOrder => 1;
public override int Minimum => 0;
public override int Maximum => 6;
}

View File

@ -0,0 +1,22 @@
using Filtration.ObjectModel.BlockItemBaseTypes;
namespace Filtration.ObjectModel.BlockItemTypes
{
public class PositionalSoundBlockItem : StrIntBlockItem
{
public PositionalSoundBlockItem()
{
Value = "1";
SecondValue = 79;
}
public PositionalSoundBlockItem(string value, int secondValue) : base(value, secondValue)
{
}
public override string PrefixText => "PlayAlertSoundPositional";
public override int MaximumAllowed => 1;
public override string DisplayHeading => "Play Positional Alert Sound";
public override int SortOrder => 22;
}
}

View File

@ -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 => 12;
public override int SortOrder => 14;
public override int Minimum => 0;
public override int Maximum => (int)ItemRarity.Unique;
}

View File

@ -0,0 +1,23 @@
using System.Windows.Media;
using Filtration.ObjectModel.BlockItemBaseTypes;
namespace Filtration.ObjectModel.BlockItemTypes
{
public sealed class ShapedMapBlockItem : BooleanBlockItem
{
public ShapedMapBlockItem()
{
}
public ShapedMapBlockItem(bool booleanValue) : base(booleanValue)
{
}
public override string PrefixText => "ShapedMap";
public override string DisplayHeading => "Shaped Map";
public override Color SummaryBackgroundColor => Colors.DarkGoldenrod;
public override Color SummaryTextColor => Colors.White;
public override int SortOrder => 8;
}
}

View File

@ -0,0 +1,23 @@
using System.Windows.Media;
using Filtration.ObjectModel.BlockItemBaseTypes;
namespace Filtration.ObjectModel.BlockItemTypes
{
public sealed class ShaperItemBlockItem : BooleanBlockItem
{
public ShaperItemBlockItem()
{
}
public ShaperItemBlockItem(bool booleanValue) : base(booleanValue)
{
}
public override string PrefixText => "ShaperItem";
public override string DisplayHeading => "Shaper Item";
public override Color SummaryBackgroundColor => Colors.DimGray;
public override Color SummaryTextColor => Colors.White;
public override int SortOrder => 7;
}
}

View File

@ -39,7 +39,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override Color SummaryBackgroundColor => Colors.GhostWhite;
public override Color SummaryTextColor => Colors.Black;
public override int SortOrder => 6;
public override int SortOrder => 9;
private SocketColor StringToSocketColor(char socketColorString)
{

View File

@ -2,21 +2,21 @@
namespace Filtration.ObjectModel.BlockItemTypes
{
public class SoundBlockItem : DualIntegerBlockItem
public class SoundBlockItem : StrIntBlockItem
{
public SoundBlockItem()
{
Value = 1;
Value = "1";
SecondValue = 79;
}
public SoundBlockItem(int value, int secondValue) : base(value, secondValue)
public SoundBlockItem(string value, int secondValue) : base(value, secondValue)
{
}
public override string PrefixText => "PlayAlertSound";
public override int MaximumAllowed => 1;
public override string DisplayHeading => "Play Alert Sound";
public override int SortOrder => 18;
public override int SortOrder => 21;
}
}

View File

@ -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 => 14;
public override int SortOrder => 17;
}
}

View File

@ -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 => 8;
public override int SortOrder => 11;
public override int Minimum => 0;
public override int Maximum => 2;
}

View File

@ -53,6 +53,7 @@
<Compile Include="BlockItemBaseTypes\BooleanBlockItem.cs" />
<Compile Include="BlockItemBaseTypes\ColorBlockItem.cs" />
<Compile Include="BlockItemBaseTypes\DualIntegerBlockItem.cs" />
<Compile Include="BlockItemBaseTypes\StringIntBlockItem.cs" />
<Compile Include="BlockItemBaseTypes\IntegerBlockItem.cs" />
<Compile Include="BlockItemBaseTypes\NumericFilterPredicateBlockItem.cs" />
<Compile Include="BlockItemBaseTypes\StringListBlockItem.cs" />
@ -60,6 +61,9 @@
<Compile Include="BlockItemTypes\BaseTypeBlockItem.cs" />
<Compile Include="BlockItemTypes\BorderColorBlockItem.cs" />
<Compile Include="BlockItemTypes\ClassBlockItem.cs" />
<Compile Include="BlockItemTypes\ShapedMapBlockItem.cs" />
<Compile Include="BlockItemTypes\ShaperItemBlockItem.cs" />
<Compile Include="BlockItemTypes\ElderItemBlockItem.cs" />
<Compile Include="BlockItemTypes\CorruptedBlockItem.cs" />
<Compile Include="BlockItemTypes\DropLevelBlockItem.cs" />
<Compile Include="BlockItemTypes\FontSizeBlockItem.cs" />
@ -71,6 +75,7 @@
<Compile Include="BlockItemTypes\RarityBlockItem.cs" />
<Compile Include="BlockItemTypes\SocketGroupBlockItem.cs" />
<Compile Include="BlockItemTypes\SocketsBlockItem.cs" />
<Compile Include="BlockItemTypes\PositionalSoundBlockItem.cs" />
<Compile Include="BlockItemTypes\SoundBlockItem.cs" />
<Compile Include="BlockItemTypes\TextColorBlockItem.cs" />
<Compile Include="BlockItemTypes\WidthBlockItem.cs" />
@ -119,10 +124,6 @@
<Compile Include="WindsorInstallers\CommandsInstaller.cs" />
<Compile Include="WindsorInstallers\ModelsInstaller.cs" />
</ItemGroup>
<ItemGroup />
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.

View File

@ -335,6 +335,57 @@ namespace Filtration.Parser.Tests.Services
Assert.IsTrue(blockItem.BooleanValue);
}
[Test]
public void TranslateStringToItemFilterBlock_ElderItem_ReturnsCorrectObject()
{
// Arrange
var inputString = "Show" + Environment.NewLine +
" ElderItem False";
// Act
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
// Assert
Assert.AreEqual(1, result.BlockItems.Count(b => b is ElderItemBlockItem));
var blockItem = result.BlockItems.OfType<ElderItemBlockItem>().First();
Assert.IsFalse(blockItem.BooleanValue);
}
[Test]
public void TranslateStringToItemFilterBlock_ShaperItem_ReturnsCorrectObject()
{
// Arrange
var inputString = "Show" + Environment.NewLine +
" ShaperItem True";
// Act
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
// Assert
Assert.AreEqual(1, result.BlockItems.Count(b => b is ShaperItemBlockItem));
var blockItem = result.BlockItems.OfType<ShaperItemBlockItem>().First();
Assert.IsTrue(blockItem.BooleanValue);
}
[Test]
public void TranslateStringToItemFilterBlock_ShapedMap_ReturnsCorrectObject()
{
// Arrange
var inputString = "Show" + Environment.NewLine +
" ShapedMap false";
// Act
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
// Assert
Assert.AreEqual(1, result.BlockItems.Count(b => b is ShapedMapBlockItem));
var blockItem = result.BlockItems.OfType<ShapedMapBlockItem>().First();
Assert.IsFalse(blockItem.BooleanValue);
}
[Test]
public void TranslateStringToItemFilterBlock_Identified_ReturnsCorrectObject()
{
@ -694,7 +745,7 @@ namespace Filtration.Parser.Tests.Services
// Assert
Assert.AreEqual(1, result.BlockItems.Count(b => b is SoundBlockItem));
var blockItem = result.BlockItems.OfType<SoundBlockItem>().First();
Assert.AreEqual(4, blockItem.Value);
Assert.AreEqual("4", blockItem.Value);
Assert.AreEqual(79, blockItem.SecondValue);
}
@ -712,7 +763,43 @@ namespace Filtration.Parser.Tests.Services
// Assert
Assert.AreEqual(1, result.BlockItems.Count(b => b is SoundBlockItem));
var blockItem = result.BlockItems.OfType<SoundBlockItem>().First();
Assert.AreEqual(2, blockItem.Value);
Assert.AreEqual("2", blockItem.Value);
Assert.AreEqual(95, blockItem.SecondValue);
}
[Test]
public void TranslateStringToItemFilterBlock_PlayAlertSoundPositionalWithoutVolume_ReturnsCorrectObject()
{
// Arrange
var inputString = "Show" + Environment.NewLine +
" PlayAlertSoundPositional 12";
// Act
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
// Assert
Assert.AreEqual(1, result.BlockItems.Count(b => b is PositionalSoundBlockItem));
var blockItem = result.BlockItems.OfType<PositionalSoundBlockItem>().First();
Assert.AreEqual("12", blockItem.Value);
Assert.AreEqual(79, blockItem.SecondValue);
}
[Test]
public void TranslateStringToItemFilterBlock_PlayAlertSoundPositionalWithVolume_ReturnsCorrectObject()
{
// Arrange
var inputString = "Show" + Environment.NewLine +
" PlayAlertSoundPositional 7 95";
// Act
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
// Assert
Assert.AreEqual(1, result.BlockItems.Count(b => b is PositionalSoundBlockItem));
var blockItem = result.BlockItems.OfType<PositionalSoundBlockItem>().First();
Assert.AreEqual("7", blockItem.Value);
Assert.AreEqual(95, blockItem.SecondValue);
}
@ -730,6 +817,9 @@ namespace Filtration.Parser.Tests.Services
" Rarity <= Unique" + Environment.NewLine +
" Identified True" + Environment.NewLine +
" Corrupted false" + Environment.NewLine +
" ElderItem true" + Environment.NewLine +
" ShaperItem False" + Environment.NewLine +
" ShapedMap TRUE" + Environment.NewLine +
@" Class ""My Item Class"" AnotherClass ""AndAnotherClass""" + Environment.NewLine +
@" BaseType MyBaseType ""Another BaseType""" + Environment.NewLine +
" JunkLine Let's ignore this one!" + Environment.NewLine +
@ -741,7 +831,7 @@ namespace Filtration.Parser.Tests.Services
" SetBackgroundColor 255 100 5" + Environment.NewLine +
" SetBorderColor 0 0 0" + Environment.NewLine +
" SetFontSize 50" + Environment.NewLine +
" PlayAlertSound 3";
" PlayAlertSound 3" + Environment.NewLine;
// Act
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
@ -758,6 +848,15 @@ namespace Filtration.Parser.Tests.Services
var identifiedBlockItem = result.BlockItems.OfType<IdentifiedBlockItem>().First();
Assert.IsTrue(identifiedBlockItem.BooleanValue);
var elderItemBlockItem = result.BlockItems.OfType<ElderItemBlockItem>().First();
Assert.IsTrue(elderItemBlockItem.BooleanValue);
var shaperItemBlockItem = result.BlockItems.OfType<ShaperItemBlockItem>().First();
Assert.IsFalse(shaperItemBlockItem.BooleanValue);
var shapedMapBlockItem = result.BlockItems.OfType<ShapedMapBlockItem>().First();
Assert.IsTrue(shapedMapBlockItem.BooleanValue);
var dropLevelblockItem = result.BlockItems.OfType<DropLevelBlockItem>().First();
Assert.AreEqual(FilterPredicateOperator.LessThan, dropLevelblockItem.FilterPredicate.PredicateOperator);
Assert.AreEqual(70, dropLevelblockItem.FilterPredicate.PredicateOperand);
@ -816,7 +915,7 @@ namespace Filtration.Parser.Tests.Services
Assert.AreEqual(50, fontSizeblockItem.Value);
var soundblockItem = result.BlockItems.OfType<SoundBlockItem>().First();
Assert.AreEqual(3, soundblockItem.Value);
Assert.AreEqual("3", soundblockItem.Value);
Assert.AreEqual(79, soundblockItem.SecondValue);
}
@ -906,7 +1005,7 @@ namespace Filtration.Parser.Tests.Services
// Assert
Assert.AreEqual(1, result.BlockItems.Count(b => b is SoundBlockItem));
var blockItem = result.BlockItems.OfType<SoundBlockItem>().First();
Assert.AreEqual(2, blockItem.Value);
Assert.AreEqual("2", blockItem.Value);
Assert.AreEqual(79, blockItem.SecondValue);
}
@ -1518,7 +1617,7 @@ namespace Filtration.Parser.Tests.Services
var expectedResult = "Show" + Environment.NewLine +
" PlayAlertSound 2 50";
_testUtility.TestBlock.BlockItems.Add(new SoundBlockItem(2, 50));
_testUtility.TestBlock.BlockItems.Add(new SoundBlockItem("2", 50));
// Act
var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock);
@ -1593,21 +1692,23 @@ namespace Filtration.Parser.Tests.Services
{
// Arrange
var expectedResult = "Show" + Environment.NewLine +
" LinkedSockets >= 4" + Environment.NewLine +
" Sockets <= 6" + Environment.NewLine +
" Quality > 2" + Environment.NewLine +
" Identified True" + Environment.NewLine +
" Corrupted False" + Environment.NewLine +
" ElderItem True" + Environment.NewLine +
" ShaperItem False" + Environment.NewLine +
" ShapedMap True" + Environment.NewLine +
" Height <= 6" + Environment.NewLine +
" Height >= 2" + Environment.NewLine +
" Width = 3" + Environment.NewLine +
" DropLevel > 56" + Environment.NewLine +
" Class \"Body Armour\" \"Gloves\" \"Belt\" \"Two Hand Axes\"" + Environment.NewLine +
" BaseType \"Greater Life Flask\" \"Simple Robe\" \"Full Wyrmscale\"" + Environment.NewLine +
" Rarity = Unique" + Environment.NewLine +
" ItemLevel > 70" + Environment.NewLine +
" ItemLevel <= 85" + Environment.NewLine +
" DropLevel > 56" + 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 +
" SetTextColor 255 89 0 56" + Environment.NewLine +
" SetBackgroundColor 0 0 0" + Environment.NewLine +
" SetBorderColor 255 1 254" + Environment.NewLine +
@ -1643,7 +1744,10 @@ namespace Filtration.Parser.Tests.Services
_testUtility.TestBlock.BlockItems.Add(new BackgroundColorBlockItem(new Color { A = 255, R = 0, G = 0, B = 0 }));
_testUtility.TestBlock.BlockItems.Add(new BorderColorBlockItem(new Color { A = 255, R = 255, G = 1, B = 254 }));
_testUtility.TestBlock.BlockItems.Add(new FontSizeBlockItem(50));
_testUtility.TestBlock.BlockItems.Add(new SoundBlockItem(6, 90));
_testUtility.TestBlock.BlockItems.Add(new SoundBlockItem("6", 90));
_testUtility.TestBlock.BlockItems.Add(new ElderItemBlockItem(true));
_testUtility.TestBlock.BlockItems.Add(new ShaperItemBlockItem(false));
_testUtility.TestBlock.BlockItems.Add(new ShapedMapBlockItem(true));
// Act
var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock);
@ -1679,7 +1783,7 @@ namespace Filtration.Parser.Tests.Services
var testInputString = "PlayAlertSound 7 280";
var testInputBlockItems = new ObservableCollection<IItemFilterBlockItem>();
var testInputBlockItem = new SoundBlockItem(12,30);
var testInputBlockItem = new SoundBlockItem("12",30);
testInputBlockItems.Add(testInputBlockItem);
// Act
@ -1689,7 +1793,7 @@ namespace Filtration.Parser.Tests.Services
var soundBlockItem = testInputBlockItems.First(b => b is SoundBlockItem) as SoundBlockItem;
Assert.IsNotNull(soundBlockItem);
Assert.AreNotSame(testInputBlockItem, soundBlockItem);
Assert.AreEqual(7, soundBlockItem.Value);
Assert.AreEqual("7", soundBlockItem.Value);
Assert.AreEqual(280, soundBlockItem.SecondValue);
}
@ -1746,7 +1850,7 @@ namespace Filtration.Parser.Tests.Services
var testInputTextColorBlockItem = new TextColorBlockItem(Colors.Red);
var testInputBackgroundColorBlockItem = new BackgroundColorBlockItem(Colors.Blue);
var testInputBorderColorBlockItem = new BorderColorBlockItem(Colors.Yellow);
var testInputSoundBlockItem = new SoundBlockItem(1, 1);
var testInputSoundBlockItem = new SoundBlockItem("1", 1);
testInputBlockItems.Add(testInputTextColorBlockItem);
testInputBlockItems.Add(testInputBackgroundColorBlockItem);
@ -1775,7 +1879,7 @@ namespace Filtration.Parser.Tests.Services
var soundBlockItem = testInputBlockItems.First(b => b is SoundBlockItem) as SoundBlockItem;
Assert.IsNotNull(soundBlockItem);
Assert.AreNotSame(testInputSoundBlockItem, soundBlockItem);
Assert.AreEqual(7, soundBlockItem.Value);
Assert.AreEqual("7", soundBlockItem.Value);
Assert.AreEqual(280, soundBlockItem.SecondValue);
}
@ -1808,7 +1912,7 @@ namespace Filtration.Parser.Tests.Services
var soundBlockItem = testInputBlockItems.First(b => b is SoundBlockItem) as SoundBlockItem;
Assert.IsNotNull(soundBlockItem);
Assert.AreEqual(7, soundBlockItem.Value);
Assert.AreEqual("7", soundBlockItem.Value);
Assert.AreEqual(280, soundBlockItem.SecondValue);
}

View File

@ -145,6 +145,21 @@ namespace Filtration.Parser.Services
AddBooleanItemToBlockItems<IdentifiedBlockItem>(block, trimmedLine);
break;
}
case "ElderItem":
{
AddBooleanItemToBlockItems<ElderItemBlockItem>(block, trimmedLine);
break;
}
case "ShaperItem":
{
AddBooleanItemToBlockItems<ShaperItemBlockItem>(block, trimmedLine);
break;
}
case "ShapedMap":
{
AddBooleanItemToBlockItems<ShapedMapBlockItem>(block, trimmedLine);
break;
}
case "Sockets":
{
AddNumericFilterPredicateItemToBlockItems<SocketsBlockItem>(block, trimmedLine);
@ -208,39 +223,46 @@ namespace Filtration.Parser.Services
break;
}
case "PlayAlertSound":
case "PlayAlertSoundPositional":
{
// Only ever use the last PlayAlertSound item encountered as multiples aren't valid.
RemoveExistingBlockItemsOfType<SoundBlockItem>(block);
RemoveExistingBlockItemsOfType<PositionalSoundBlockItem>(block);
var matches = Regex.Matches(trimmedLine, @"\s+(\d+)");
switch (matches.Count)
var match = Regex.Match(trimmedLine, @"\S+\s+(\S+)\s?(\d+)?");
if (match.Success)
{
case 1:
string firstValue = match.Groups[1].Value;
int secondValue;
if (match.Groups[2].Success)
{
if (matches[0].Success)
secondValue = Convert.ToInt16(match.Groups[2].Value);
}
else
{
secondValue = 79;
}
if (lineOption == "PlayAlertSound")
{
var blockItemValue = new SoundBlockItem
{
Value = Convert.ToInt16(matches[0].Value),
SecondValue = 79
Value = firstValue,
SecondValue = secondValue
};
block.BlockItems.Add(blockItemValue);
}
break;
}
case 2:
else
{
if (matches[0].Success && matches[1].Success)
var blockItemValue = new PositionalSoundBlockItem
{
var blockItemValue = new SoundBlockItem
{
Value = Convert.ToInt16(matches[0].Value),
SecondValue = Convert.ToInt16(matches[1].Value)
Value = firstValue,
SecondValue = secondValue
};
block.BlockItems.Add(blockItemValue);
}
break;
}
}
break;
}
@ -368,9 +390,9 @@ namespace Filtration.Parser.Services
{
case "PlayAlertSound":
{
var match = Regex.Match(line, @"\s+(\d+) (\d+)");
var match = Regex.Match(line, @"\s+(\S+) (\d+)");
if (!match.Success) break;
blockItems.Add(new SoundBlockItem(Convert.ToInt16(match.Groups[1].Value), Convert.ToInt16(match.Groups[2].Value)));
blockItems.Add(new SoundBlockItem(match.Groups[1].Value, Convert.ToInt16(match.Groups[2].Value)));
break;
}
case "SetTextColor":

View File

@ -15,6 +15,21 @@
<WarningLevel>4</WarningLevel>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<TargetFrameworkProfile />
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
@ -250,9 +265,6 @@
<Compile Include="Views\ToolPanes\BlockOutputPreviewView.xaml.cs">
<DependentUpon>BlockOutputPreviewView.xaml</DependentUpon>
</Compile>
<Compile Include="Views\ToolPanes\CommentBlockBrowserView.xaml.cs">
<DependentUpon>CommentBlockBrowserView.xaml</DependentUpon>
</Compile>
<Compile Include="Views\StartPageView.xaml.cs">
<DependentUpon>StartPageView.xaml</DependentUpon>
</Compile>
@ -408,9 +420,6 @@
<Resource Include="Resources\groundtile.png" />
</ItemGroup>
<ItemGroup>
<Content Include="Resources\AlertSounds\AlertSound8.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Resource Include="Resources\logo.png" />
<Resource Include="Resources\Icons\add_block_icon.png" />
<Resource Include="Resources\Icons\add_section_icon.png" />
@ -446,51 +455,87 @@
<Resource Include="Resources\Icons\ThemeComponentDelete.ico" />
<Resource Include="Resources\Icons\standby_disabled_icon.png" />
<Resource Include="Resources\Icons\standby_enabled_icon.png" />
<Resource Include="Resources\Icons\redo_icon.png" />
<Resource Include="Resources\Icons\undo_icon.png" />
<None Include="Resources\AlertSounds\AlertSound_01.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\AlertSounds\AlertSound_02.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\AlertSounds\AlertSound_03.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\AlertSounds\AlertSound_04.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\AlertSounds\AlertSound_05.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\AlertSounds\AlertSound_06.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\AlertSounds\AlertSound_07.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\AlertSounds\AlertSound_08.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\AlertSounds\AlertSound_09.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\AlertSounds\AlertSound_10.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\AlertSounds\AlertSound_11.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\AlertSounds\AlertSound_12.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\AlertSounds\AlertSound_13.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\AlertSounds\AlertSound_14.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\AlertSounds\AlertSound_15.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\AlertSounds\AlertSound_16.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\AlertSounds\SH22Alchemy.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\AlertSounds\SH22Blessed.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\AlertSounds\SH22Chaos.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\AlertSounds\SH22Divine.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\AlertSounds\SH22Exalted.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\AlertSounds\SH22Fusing.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\AlertSounds\SH22General.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\AlertSounds\SH22Mirror.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\AlertSounds\SH22Regal.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Resources\AlertSounds\SH22Vaal.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<Content Include="Resources\ItemBaseTypes.txt" />
<Content Include="Resources\ItemClasses.txt" />
</ItemGroup>
<ItemGroup>
<Content Include="Resources\AlertSounds\AlertSound9.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="Resources\AlertSounds\AlertSound7.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="Resources\AlertSounds\AlertSound6.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="Resources\AlertSounds\AlertSound4.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="Resources\AlertSounds\AlertSound5.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="Resources\AlertSounds\AlertSound2.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="Resources\AlertSounds\AlertSound3.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="Resources\AlertSounds\AlertSound1.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Filtration.Common\Filtration.Common.csproj">
<Project>{8cb44f28-2956-4c2a-9314-72727262edd4}</Project>
@ -517,7 +562,21 @@
<Name>Filtration.ThemeEditor</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup />
<ItemGroup>
<Folder Include="Translators\" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.6.1">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4.6.1 %28x86 and x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(XamlSpyInstallPath)MSBuild\FirstFloor.XamlSpy.WPF.targets" Condition="'$(XamlSpyInstallPath)' != '' and '$(Configuration)' == 'DEBUG'" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.

View File

@ -19,7 +19,7 @@ namespace Filtration.Properties {
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
@ -63,81 +63,144 @@ namespace Filtration.Properties {
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream AlertSound1 {
internal static System.IO.UnmanagedMemoryStream AlertSound_01 {
get {
return ResourceManager.GetStream("AlertSound1", resourceCulture);
return ResourceManager.GetStream("AlertSound_01", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream AlertSound2 {
internal static System.IO.UnmanagedMemoryStream AlertSound_02 {
get {
return ResourceManager.GetStream("AlertSound2", resourceCulture);
return ResourceManager.GetStream("AlertSound_02", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream AlertSound3 {
internal static System.IO.UnmanagedMemoryStream AlertSound_03 {
get {
return ResourceManager.GetStream("AlertSound3", resourceCulture);
return ResourceManager.GetStream("AlertSound_03", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream AlertSound4 {
internal static System.IO.UnmanagedMemoryStream AlertSound_04 {
get {
return ResourceManager.GetStream("AlertSound4", resourceCulture);
return ResourceManager.GetStream("AlertSound_04", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream AlertSound5 {
internal static System.IO.UnmanagedMemoryStream AlertSound_05 {
get {
return ResourceManager.GetStream("AlertSound5", resourceCulture);
return ResourceManager.GetStream("AlertSound_05", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream AlertSound6 {
internal static System.IO.UnmanagedMemoryStream AlertSound_06 {
get {
return ResourceManager.GetStream("AlertSound6", resourceCulture);
return ResourceManager.GetStream("AlertSound_06", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream AlertSound7 {
internal static System.IO.UnmanagedMemoryStream AlertSound_07 {
get {
return ResourceManager.GetStream("AlertSound7", resourceCulture);
return ResourceManager.GetStream("AlertSound_07", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream AlertSound8 {
internal static System.IO.UnmanagedMemoryStream AlertSound_08 {
get {
return ResourceManager.GetStream("AlertSound8", resourceCulture);
return ResourceManager.GetStream("AlertSound_08", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream AlertSound9 {
internal static System.IO.UnmanagedMemoryStream AlertSound_09 {
get {
return ResourceManager.GetStream("AlertSound9", resourceCulture);
return ResourceManager.GetStream("AlertSound_09", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream AlertSound_10 {
get {
return ResourceManager.GetStream("AlertSound_10", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream AlertSound_11 {
get {
return ResourceManager.GetStream("AlertSound_11", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream AlertSound_12 {
get {
return ResourceManager.GetStream("AlertSound_12", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream AlertSound_13 {
get {
return ResourceManager.GetStream("AlertSound_13", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream AlertSound_14 {
get {
return ResourceManager.GetStream("AlertSound_14", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream AlertSound_15 {
get {
return ResourceManager.GetStream("AlertSound_15", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream AlertSound_16 {
get {
return ResourceManager.GetStream("AlertSound_16", resourceCulture);
}
}
@ -160,5 +223,95 @@ namespace Filtration.Properties {
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream SH22Alchemy {
get {
return ResourceManager.GetStream("SH22Alchemy", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream SH22Blessed {
get {
return ResourceManager.GetStream("SH22Blessed", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream SH22Chaos {
get {
return ResourceManager.GetStream("SH22Chaos", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream SH22Divine {
get {
return ResourceManager.GetStream("SH22Divine", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream SH22Exalted {
get {
return ResourceManager.GetStream("SH22Exalted", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream SH22Fusing {
get {
return ResourceManager.GetStream("SH22Fusing", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream SH22General {
get {
return ResourceManager.GetStream("SH22General", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream SH22Mirror {
get {
return ResourceManager.GetStream("SH22Mirror", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream SH22Regal {
get {
return ResourceManager.GetStream("SH22Regal", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
/// </summary>
internal static System.IO.UnmanagedMemoryStream SH22Vaal {
get {
return ResourceManager.GetStream("SH22Vaal", resourceCulture);
}
}
}
}

View File

@ -118,32 +118,53 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="AlertSound1" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\AlertSound1.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="AlertSound_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\AlertSound_01.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="AlertSound2" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\AlertSound2.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="AlertSound_02" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\AlertSound_02.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="AlertSound3" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\AlertSound3.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="AlertSound_03" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\AlertSound_03.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="AlertSound4" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\AlertSound4.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="AlertSound_04" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\AlertSound_04.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="AlertSound5" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\AlertSound5.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="AlertSound_05" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\AlertSound_05.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="AlertSound6" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\AlertSound6.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="AlertSound_06" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\AlertSound_06.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="AlertSound7" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\AlertSound7.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="AlertSound_07" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\AlertSound_07.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="AlertSound8" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\AlertSound8.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="AlertSound_08" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\AlertSound_08.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="AlertSound9" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\AlertSound9.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="AlertSound_09" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\AlertSound_09.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="AlertSound_10" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\AlertSound_10.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="AlertSound_11" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\AlertSound_11.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="AlertSound_12" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\AlertSound_12.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="AlertSound_13" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\AlertSound_13.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="AlertSound_14" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\AlertSound_14.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="AlertSound_15" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\AlertSound_15.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="AlertSound_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\AlertSound_16.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="Fontin_SmallCaps" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Fontin-SmallCaps.ttf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
@ -151,4 +172,34 @@
<data name="groundtile" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\groundtile.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="SH22Alchemy" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\SH22Alchemy.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="SH22Blessed" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\SH22Blessed.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="SH22Chaos" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\SH22Chaos.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="SH22Divine" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\SH22Divine.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="SH22Exalted" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\SH22Exalted.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="SH22Fusing" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\SH22Fusing.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="SH22General" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\SH22General.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="SH22Mirror" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\SH22Mirror.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="SH22Regal" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\SH22Regal.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="SH22Vaal" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlertSounds\SH22Vaal.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,15 +1,18 @@
Abyss Jewel
Active Skill Gems
Amulets
Axe
Belts
Body Armours
Boots
Bows
Claws
Critical Utility Flasks
Currency
Daggers
Divination Card
Fishing Rods
Flasks
Gems
Gloves
Helmets
Hybrid Flasks
@ -18,23 +21,27 @@ Labyrinth Item
Labyrinth Map Item
Labyrinth Trinket
Large Relics
Leaguestone
Life Flasks
Mace
Mana Flasks
Map Fragments
Maps
Medium Relics
Misc Map Items
One Hand Axes
One Hand Maces
One Hand Swords
Pantheon Soul
Piece
Quest Items
Quivers
Rings
Sceptres
Shields
Small Relics
Stackable Currency
Staves
Support Skill Gems
Sword
Thrusting One Hand Swords
Two Hand Axes
Two Hand Maces

View File

@ -13,11 +13,11 @@
xmlns:views="clr-namespace:Filtration.Views"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance Type=userControls:BlockItemControl}"
d:DesignHeight="200" d:DesignWidth="160">
d:DesignHeight="200" d:DesignWidth="190">
<UserControl.Resources>
<commonConverters:BooleanInverterConverter x:Key="BooleanInverterConverter"></commonConverters:BooleanInverterConverter>
</UserControl.Resources>
<Border Style="{StaticResource BlockItemBorder}" Width="150">
<Border Style="{StaticResource BlockItemBorder}" Width="180">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
@ -115,6 +115,17 @@
<xctk:ShortUpDown Value="{Binding Path=SecondValue}" Minimum="1" Maximum="300" HorizontalAlignment="Right" ToolTip="Volume"/>
</WrapPanel>
</DataTemplate>
<!-- Positional Sound Template -->
<DataTemplate DataType="{x:Type blockItemTypes:PositionalSoundBlockItem}">
<WrapPanel HorizontalAlignment="Left">
<Button Command="{Binding Path=DataContext.PlayPositionalSoundCommand, 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" />
</Button>
<ComboBox ItemsSource="{Binding ElementName=BlockItemContentControl, Path=DataContext.SoundsAvailable}" SelectedValue="{Binding Value}" Style="{StaticResource MetroComboBox}" />
<xctk:ShortUpDown Value="{Binding Path=SecondValue}" Minimum="1" Maximum="300" HorizontalAlignment="Right" ToolTip="Volume"/>
</WrapPanel>
</DataTemplate>
</ContentControl.Resources>
</ContentControl>
</Grid>

View File

@ -82,7 +82,11 @@ namespace Filtration.UserControls
public ObservableCollection<ColorItem> AvailableColors => PathOfExileColors.DefaultColors;
public List<int> SoundsAvailable => new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
public List<string> SoundsAvailable => new List<string> {
"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16",
"ShGeneral", "ShBlessed", "ShChaos", "ShDivine", "ShExalted", "ShMirror", "ShAlchemy",
"ShFusing", "ShRegal", "ShVaal"
};
private void OnSetBlockColorCommmand()
{

View File

@ -56,6 +56,7 @@ namespace Filtration.ViewModels
RemoveFilterBlockItemCommand = new RelayCommand<IItemFilterBlockItem>(OnRemoveFilterBlockItemCommand);
SwitchBlockItemsViewCommand = new RelayCommand(OnSwitchBlockItemsViewCommand);
PlaySoundCommand = new RelayCommand(OnPlaySoundCommand, () => HasSound);
PlayPositionalSoundCommand = new RelayCommand(OnPlayPositionalSoundCommand, () => HasPositionalSound);
}
public override void Initialise(IItemFilterBlockBase itemFilterBlockBase, IItemFilterScriptViewModel parentScriptViewModel)
@ -97,6 +98,7 @@ namespace Filtration.ViewModels
public RelayCommand<Type> AddFilterBlockItemCommand { get; }
public RelayCommand<IItemFilterBlockItem> RemoveFilterBlockItemCommand { get; }
public RelayCommand PlaySoundCommand { get; }
public RelayCommand PlayPositionalSoundCommand { get; }
public RelayCommand SwitchBlockItemsViewCommand { get; }
public IItemFilterBlock Block { get; private set; }
@ -173,7 +175,10 @@ namespace Filtration.ViewModels
typeof (ClassBlockItem),
typeof (BaseTypeBlockItem),
typeof (IdentifiedBlockItem),
typeof (CorruptedBlockItem)
typeof (CorruptedBlockItem),
typeof (ElderItemBlockItem),
typeof (ShaperItemBlockItem),
typeof (ShapedMapBlockItem)
};
public List<Type> AudioVisualBlockItemTypesAvailable => new List<Type>
@ -182,7 +187,8 @@ namespace Filtration.ViewModels
typeof (BackgroundColorBlockItem),
typeof (BorderColorBlockItem),
typeof (FontSizeBlockItem),
typeof (SoundBlockItem)
typeof (SoundBlockItem),
typeof (PositionalSoundBlockItem)
};
public bool BlockEnabled
@ -224,6 +230,7 @@ namespace Filtration.ViewModels
public double DisplayFontSize => Block.DisplayFontSize/1.8;
public bool HasSound => Block.HasBlockItemOfType<SoundBlockItem>();
public bool HasPositionalSound => Block.HasBlockItemOfType<PositionalSoundBlockItem>();
public bool HasAudioVisualBlockItems => AudioVisualBlockItems.Any();
@ -331,12 +338,98 @@ namespace Filtration.ViewModels
return blockCount < blockItem.MaximumAllowed;
}
private string ComputeFilePartFromNumber(string identifier)
{
if (Int32.TryParse(identifier, out int x))
{
if (x <= 9)
{
return "AlertSound_0" + x + ".wav";
}
else
{
return "AlertSound_" + x + ".wav";
}
}
return "";
}
private string ComputeFilePartFromID(string identifier)
{
string filePart;
switch (identifier) {
case "ShGeneral":
filePart = "SH22General.wav";
break;
case "ShBlessed":
filePart = "SH22Blessed.wav";
break;
case "SH22Chaos":
filePart = "SH22Chaos.wav";
break;
case "ShDivine":
filePart = "SH22Divine.wav";
break;
case "ShExalted":
filePart = "SH22Exalted.wav";
break;
case "ShMirror":
filePart = "SH22Mirror.wav";
break;
case "ShAlchemy":
filePart = "SH22Alchemy.wav";
break;
case "ShFusing":
filePart = "SH22Fusing.wav";
break;
case "ShRegal":
filePart = "SH22Regal.wav";
break;
case "ShVaal":
filePart = "SH22Vaal.wav";
break;
default:
filePart = ComputeFilePartFromNumber(identifier);
break;
}
return filePart;
}
private void OnPlaySoundCommand()
{
var soundUri = "Resources/AlertSounds/AlertSound" + BlockItems.OfType<SoundBlockItem>().First().Value + ".wav";
_mediaPlayer.Open(new Uri(soundUri, UriKind.Relative));
var identifier = BlockItems.OfType<SoundBlockItem>().First().Value;
var prefix = "Resources/AlertSounds/";
var filePart = ComputeFilePartFromID(identifier);
if (filePart == "")
{
return;
}
else
{
_mediaPlayer.Open(new Uri(prefix + filePart, UriKind.Relative));
_mediaPlayer.Play();
}
}
private void OnPlayPositionalSoundCommand()
{
var identifier = BlockItems.OfType<PositionalSoundBlockItem>().First().Value;
var prefix = "Resources/AlertSounds/";
var filePart = ComputeFilePartFromID(identifier);
if (filePart == "")
{
return;
}
else
{
_mediaPlayer.Open(new Uri(prefix + filePart, UriKind.Relative));
_mediaPlayer.Play();
}
}
private void OnBlockItemChanged(object sender, EventArgs e)
{

View File

@ -141,6 +141,18 @@
ToolTip="Click to preview drop sound">
<Image Source="/Filtration;component/Resources/Icons/speaker_icon.png" VerticalAlignment="Center" HorizontalAlignment="Center" />
</Button>
<Button Command="{Binding PlayPositionalSoundCommand}"
Width="25"
Height="25"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Margin="0,0,3,0"
Visibility="{Binding HasPositionalSound, Converter={StaticResource BooleanVisibilityConverter}}"
Background="Transparent"
BorderBrush="Transparent"
ToolTip="Click to preview drop sound">
<Image Source="/Filtration;component/Resources/Icons/speaker_icon.png" VerticalAlignment="Center" HorizontalAlignment="Center" />
</Button>
<ToggleButton Margin="0,2,2,2"
Style="{StaticResource ChromelessToggleButton}"
x:Name="ItemPreviewButton"

View File

@ -38,9 +38,9 @@ namespace Filtration.Views
}
}
private void MainWindow_OnClosing(object sender, CancelEventArgs e)
private async void MainWindow_OnClosing(object sender, CancelEventArgs e)
{
var allDocumentsClosed = _mainWindowViewModel.CloseAllDocumentsAsync().Result;
var allDocumentsClosed = await _mainWindowViewModel.CloseAllDocumentsAsync();
if (!allDocumentsClosed)
{
e.Cancel = true;