52 Commits

Author SHA1 Message Date
Ben Wallis
85c215382b bumped version to 1.2.0 2019-04-10 17:39:15 +01:00
Ben Wallis
c44d7b6095 Changed version to 1.2.0-beta1 2019-03-18 17:49:21 +00:00
Ben Wallis
717a0a83a9 * Bumped version to 1.2.0
* Added enchantments to Enchantments.txt
* Updated nuspec
2019-03-18 17:48:16 +00:00
azakhi
1f9a1c5196 Support for Path of Exile 3.6 and Synthesis League (#131)
* Add new block types

* Add new base types
2019-03-18 17:27:21 +00:00
azakhi
dea0378a16 Fix Show/Hide parsing (#133)
* Fix Show/Hide parsing

* Improve disabled block test
2019-03-18 17:27:08 +00:00
azakhi
4862452188 Fix copied visuals not affecting preview (#129) 2019-03-11 16:44:40 +00:00
azakhi
db258de11e Change default border color to transparent (#128) 2019-03-11 16:43:28 +00:00
Ben Wallis
444f09751a Merge from master (missed 1.0.3 merge) 2018-12-06 21:45:46 +00:00
Ben Wallis
9356f55209 Merge branch 'develop' of https://github.com/ben-wallis/Filtration into develop 2018-12-06 21:44:24 +00:00
Ben Wallis
fb7bd8b81e Bumped version to 1.1.0 2018-12-06 21:38:57 +00:00
azakhi
72ed517929 Fix pasting theme (#124) 2018-12-06 21:26:40 +00:00
Ben Wallis
290547cbba Fixed cancel on exit not working 2018-12-06 21:20:42 +00:00
azakhi
065e56e0a6 Fix block style pasting (#123) 2018-12-06 20:18:05 +00:00
Ben Wallis
d686e6da39 * Added DisableDropSound icon for blocks with no other sound blocks
* Bumped version to 1.1.0-beta8
2018-12-06 18:01:42 +00:00
Ben Wallis
79398667b4 Fixed DisabledDefaultSound indicator not updating 2018-12-06 17:04:02 +00:00
Glen M
2424ab9195 Fix missing audio icons within block item controls. (#121) 2018-12-06 16:23:22 +00:00
azakhi
491f448f94 Fix theme editor scrolling (#120) 2018-12-06 15:35:21 +00:00
Glen M
2f49e85227 Add a DisableDropSound indicator. (#118)
* Add a DisableDropSound indicator.

* Improve the DisableDropSound indicator tooltip.
2018-12-06 15:15:46 +00:00
azakhi
dce0af7fd6 Fix null reference error on section search (#117) 2018-12-05 21:56:39 +00:00
Ben Wallis
208aeb39f6 Changed QualityBlockItem Maximum value to 99 2018-12-05 20:42:40 +00:00
Ben Wallis
79274df0fb Removed NotSet from ItemRarity enum 2018-12-05 20:39:20 +00:00
Ben Wallis
4052d6e020 Fixed ScrollViewer event handling special casing 2018-12-05 20:26:01 +00:00
Ben Wallis
7c0da57570 Fixed combobox scrolling in ItemFilterBlockView 2018-12-05 20:09:30 +00:00
Ben Wallis
557767f4dc Fixed MinimapIcon messagebox bug #116 2018-12-05 19:25:45 +00:00
Ben Wallis
ad1b46f975 Bumped version to 1.1.0-beta7 2018-12-05 17:42:42 +00:00
Ben Wallis
9f17d84a7f * Moved VisualTreeHelper and PathOfExileColors to Filtration.Common
* Replaced bindings of PathOfExileColors with x:Static
* Fixed Advanced tab of ColorPicker control in theme editor not being clickable
2018-12-05 17:40:59 +00:00
Ben Wallis
0fe21336e6 * Fixed duplicated tooltips for sound preview buttons
* If Filtration is not running in its expected installation directory it will not check for updates - this enables us to release a zip file release that won't fail an update check every time it's run
2018-12-05 17:06:27 +00:00
Ben Wallis
2ba1b8adac Added regression test for DisableDropSound block item parsing 2018-12-05 16:49:36 +00:00
Glen M
2415be089b Create a nil value type for DisableDropSound. (#114) 2018-12-05 16:42:59 +00:00
Ben Wallis
892b2f15f2 * Removed old unused user settings
* Fixed prompt for filter directory selection appearing incorrectly on startup
* Bumped version to 1.1.0-beta6
2018-12-05 13:03:51 +00:00
Ben Wallis
042e5b41f9 Removed test projects from SquirrelReleasify build config 2018-12-05 12:42:47 +00:00
Ben Wallis
5fc260dbb2 Bumped version to 1.1.0-beta5 2018-12-05 12:42:01 +00:00
Ben Wallis
3de33e9447 Added .log as excluded filetype for installer 2018-12-05 12:33:34 +00:00
Ben Wallis
37ad9ac42e Fixed AlertSounds not being included in installer 2018-12-05 12:32:28 +00:00
Glen M
fbd02702b0 Add enable/disable DropSound buttons. (#112)
* Add enable/disable DropSound buttons.

* Add undo/redo support for the DisableSound commands.
2018-12-05 12:31:47 +00:00
Ben Wallis
a20c988380 Bumped version to 1.1.0-beta4 2018-12-05 07:04:35 +00:00
Glen M
7ce5aaa861 Support for Path of Exile 3.5 and Betrayal league. (#108)
* Fix #107 by pulling SortOrder form an enum.
* Add initial support for the Prophecy block item.
* Update the static data.
* Hook Prophecy data into the static data service.
* Fill out the initial prophecy data.
2018-12-05 06:59:10 +00:00
Glen M
4b6cee9d94 Add a few missing item classes. (#106) 2018-12-04 19:30:25 +00:00
Ben Wallis
6fb0ec8084 Fixed EditableListBoxControl mouse wheel scrolling 2018-12-03 17:41:44 +00:00
Ben Wallis
a13dc44a7d Added comments 2018-12-03 16:31:19 +00:00
Ben Wallis
05b729edf8 Fixed ScrollViewer in ItemFilterBlockView handling mouse wheel events (#105) 2018-12-03 16:28:22 +00:00
Ben Wallis
876e98437e Shortened/fixed SummaryText for several block items 2018-12-02 21:51:19 +00:00
Ben Wallis
30e76e333c * Bumped version to 1.1.0-beta3
* Fixed Switch to Appearance/Regular Block Items text overlapping block item controls
* Added Enable/Disable toggle button to Appearance block items control
* Added horizontal scrollbar to block items view
* Moved Enable/Disable toggle button to separate user control(previously it was only visible when viewing Regular block items)
* Added DesignTimeItemFilterBlockViewModel
2018-12-02 21:36:01 +00:00
Glen M
f840fb69ad Throttle selections to improve Select All performance. (#104)
Throttle selections to improve Select All performance in ItemFilterScriptViewModel.
2018-12-02 16:30:50 +00:00
Ben Wallis
ae98c2d5de Bumped version to 1.1.0-beta2 2018-11-28 22:29:52 +00:00
Ben Wallis
cde2d692c9 Update README.md 2018-10-01 17:29:00 +01:00
Ben Wallis
c96aa472d9 Bumped version to 1.0.3 2018-10-01 17:23:38 +01:00
Ben Wallis
d4e8a72d47 Implemented Splat logging integration to enable Squirrel to write log files 2018-10-01 17:00:55 +01:00
Ben Wallis
4c826f42fd Bumped version to 1.0.3-beta2 2018-10-01 13:31:57 +01:00
azakhi
4022cf12a0 Fix crash caused by null selected blocks (#92)
* Fixed a crash caused by null selected blocks
2018-10-01 13:29:35 +01:00
Ben Wallis
8073948cfe Added missing AlertSound mp3 files to installer 2018-10-01 12:26:27 +01:00
Ben Wallis
f331bffee7 Update README.md 2018-09-30 14:04:44 +01:00
115 changed files with 3753 additions and 1193 deletions

View File

@@ -66,6 +66,24 @@
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
<Reference Include="WindowsBase" /> <Reference Include="WindowsBase" />
<Reference Include="Xceed.Wpf.AvalonDock, Version=3.4.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
<HintPath>..\packages\Extended.Wpf.Toolkit.3.4.0\lib\net40\Xceed.Wpf.AvalonDock.dll</HintPath>
</Reference>
<Reference Include="Xceed.Wpf.AvalonDock.Themes.Aero, Version=3.4.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
<HintPath>..\packages\Extended.Wpf.Toolkit.3.4.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.Aero.dll</HintPath>
</Reference>
<Reference Include="Xceed.Wpf.AvalonDock.Themes.Metro, Version=3.4.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
<HintPath>..\packages\Extended.Wpf.Toolkit.3.4.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.Metro.dll</HintPath>
</Reference>
<Reference Include="Xceed.Wpf.AvalonDock.Themes.VS2010, Version=3.4.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
<HintPath>..\packages\Extended.Wpf.Toolkit.3.4.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.VS2010.dll</HintPath>
</Reference>
<Reference Include="Xceed.Wpf.DataGrid, Version=3.4.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
<HintPath>..\packages\Extended.Wpf.Toolkit.3.4.0\lib\net40\Xceed.Wpf.DataGrid.dll</HintPath>
</Reference>
<Reference Include="Xceed.Wpf.Toolkit, Version=3.4.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
<HintPath>..\packages\Extended.Wpf.Toolkit.3.4.0\lib\net40\Xceed.Wpf.Toolkit.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="Converters\BooleanInverterConverter.cs" /> <Compile Include="Converters\BooleanInverterConverter.cs" />
@@ -80,6 +98,8 @@
<Compile Include="Services\FileSystemService.cs" /> <Compile Include="Services\FileSystemService.cs" />
<Compile Include="Services\MessageBoxService.cs" /> <Compile Include="Services\MessageBoxService.cs" />
<Compile Include="Utilities\LineReader.cs" /> <Compile Include="Utilities\LineReader.cs" />
<Compile Include="Utilities\PathOfExileColors.cs" />
<Compile Include="Utilities\VisualTreeUtility.cs" />
<Compile Include="ViewModels\PaneViewModel.cs" /> <Compile Include="ViewModels\PaneViewModel.cs" />
<Compile Include="WindsorInstallers\ServicesInstaller.cs" /> <Compile Include="WindsorInstallers\ServicesInstaller.cs" />
</ItemGroup> </ItemGroup>

View File

@@ -2,9 +2,9 @@
using System.Windows.Media; using System.Windows.Media;
using Xceed.Wpf.Toolkit; using Xceed.Wpf.Toolkit;
namespace Filtration.Views namespace Filtration.Common.Utilities
{ {
internal static class PathOfExileColors public static class PathOfExileColors
{ {
static PathOfExileColors() static PathOfExileColors()
{ {

View File

@@ -0,0 +1,26 @@
using System.Windows;
using System.Windows.Media;
namespace Filtration.Common.Utilities
{
public class VisualTreeUtility
{
public static T FindParent<T>(DependencyObject child)
where T : DependencyObject
{
//get parent item
var parentObject = VisualTreeHelper.GetParent(child);
//we've reached the end of the tree
if (parentObject == null) return null;
//check if the parent matches the type we're looking for
if (parentObject is T parent)
{
return parent;
}
return FindParent<T>(parentObject);
}
}
}

View File

@@ -3,5 +3,6 @@
<package id="Castle.Core" version="4.3.1" targetFramework="net461" /> <package id="Castle.Core" version="4.3.1" targetFramework="net461" />
<package id="Castle.Windsor" version="4.1.1" targetFramework="net461" /> <package id="Castle.Windsor" version="4.1.1" targetFramework="net461" />
<package id="CommonServiceLocator" version="2.0.4" targetFramework="net461" /> <package id="CommonServiceLocator" version="2.0.4" targetFramework="net461" />
<package id="Extended.Wpf.Toolkit" version="3.4.0" targetFramework="net461" />
<package id="MvvmLightLibs" version="5.4.1.1" targetFramework="net461" /> <package id="MvvmLightLibs" version="5.4.1.1" targetFramework="net461" />
</packages> </packages>

View File

@@ -8,7 +8,7 @@ namespace Filtration.Interface
{ {
bool IsScript { get; } bool IsScript { get; }
bool IsTheme { get; } bool IsTheme { get; }
Task Close(); Task<bool> Close();
RelayCommand CloseCommand { get; } RelayCommand CloseCommand { get; }
} }
} }

View File

@@ -1,39 +1,39 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<configuration> <configuration>
<runtime> <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="Xceed.Wpf.AvalonDock" publicKeyToken="3e4669d2f30244f4" culture="neutral" /> <assemblyIdentity name="Xceed.Wpf.AvalonDock" publicKeyToken="3e4669d2f30244f4" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.4.0.0" newVersion="3.4.0.0" /> <bindingRedirect oldVersion="0.0.0.0-3.4.0.0" newVersion="3.4.0.0" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="ControlzEx" publicKeyToken="f08b075e934b7045" culture="neutral" /> <assemblyIdentity name="ControlzEx" publicKeyToken="f08b075e934b7045" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.2.0.4" newVersion="2.2.0.4" /> <bindingRedirect oldVersion="0.0.0.0-2.2.0.4" newVersion="2.2.0.4" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="Xceed.Wpf.Toolkit" publicKeyToken="3e4669d2f30244f4" culture="neutral" /> <assemblyIdentity name="Xceed.Wpf.Toolkit" publicKeyToken="3e4669d2f30244f4" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.9.0.0" newVersion="2.9.0.0" /> <bindingRedirect oldVersion="0.0.0.0-2.9.0.0" newVersion="2.9.0.0" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" /> <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" /> <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="CommonServiceLocator" publicKeyToken="489b6accfaf20ef0" culture="neutral" /> <assemblyIdentity name="CommonServiceLocator" publicKeyToken="489b6accfaf20ef0" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.4.0" newVersion="2.0.4.0" /> <bindingRedirect oldVersion="0.0.0.0-2.0.4.0" newVersion="2.0.4.0" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" /> <bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="System.Windows.Interactivity" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <assemblyIdentity name="System.Windows.Interactivity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" /> <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" />
</dependentAssembly> </dependentAssembly>
</assemblyBinding> </assemblyBinding>
</runtime> </runtime>
</configuration> </configuration>

View File

@@ -41,8 +41,8 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
public override Color SummaryTextColor => Action == BlockAction.Show ? Colors.Black : Colors.White; public override Color SummaryTextColor => Action == BlockAction.Show ? Colors.Black : Colors.White;
public override int SortOrder => 0; public override BlockItemOrdering SortOrder => BlockItemOrdering.Action;
public void ToggleAction() public void ToggleAction()
{ {
Action = Action == BlockAction.Show ? BlockAction.Hide : BlockAction.Show; Action = Action == BlockAction.Show ? BlockAction.Hide : BlockAction.Show;

View File

@@ -2,6 +2,7 @@
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using System.Windows.Media; using System.Windows.Media;
using Filtration.ObjectModel.Annotations; using Filtration.ObjectModel.Annotations;
using Filtration.ObjectModel.Enums;
namespace Filtration.ObjectModel.BlockItemBaseTypes namespace Filtration.ObjectModel.BlockItemBaseTypes
{ {
@@ -16,7 +17,7 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
public abstract string SummaryText { get; } public abstract string SummaryText { get; }
public abstract Color SummaryBackgroundColor { get; } public abstract Color SummaryBackgroundColor { get; }
public abstract Color SummaryTextColor { get; } public abstract Color SummaryTextColor { get; }
public abstract int SortOrder { get; } public abstract BlockItemOrdering SortOrder { get; }
public string Comment { get; set; } public string Comment { get; set; }
public bool IsDirty public bool IsDirty
@@ -30,7 +31,7 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
} }
public event PropertyChangedEventHandler PropertyChanged; public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator] [NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{ {

View File

@@ -27,7 +27,7 @@
} }
public override string OutputText => PrefixText + " " + BooleanValue; public override string OutputText => PrefixText + " " + BooleanValue;
public override string SummaryText => PrefixText + " = " + BooleanValue; public override string SummaryText => DisplayHeading + " = " + BooleanValue;
public override int MaximumAllowed => 1; public override int MaximumAllowed => 1;
public void ToggleValue() public void ToggleValue()

View File

@@ -0,0 +1,16 @@
namespace Filtration.ObjectModel.BlockItemBaseTypes
{
public abstract class NilBlockItem : BlockItemBase
{
protected NilBlockItem()
{
}
public override string OutputText => PrefixText;
public override string SummaryText => DisplayHeading;
public override int MaximumAllowed => 1;
public abstract string Description { get; }
}
}

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

@@ -1,4 +1,5 @@
using System.Windows.Media; using System.Windows.Media;
using Filtration.ObjectModel.Enums;
using Filtration.ObjectModel.BlockItemBaseTypes; using Filtration.ObjectModel.BlockItemBaseTypes;
namespace Filtration.ObjectModel.BlockItemTypes namespace Filtration.ObjectModel.BlockItemTypes
@@ -17,6 +18,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string PrefixText => "SetBackgroundColor"; public override string PrefixText => "SetBackgroundColor";
public override int MaximumAllowed => 1; public override int MaximumAllowed => 1;
public override string DisplayHeading => "Background Color"; public override string DisplayHeading => "Background Color";
public override int SortOrder => 23; public override BlockItemOrdering SortOrder => BlockItemOrdering.SetBackgroundColor;
} }
} }

View File

@@ -1,6 +1,7 @@
using System.Linq; using System.Linq;
using System.Windows.Media; using System.Windows.Media;
using Filtration.ObjectModel.BlockItemBaseTypes; using Filtration.ObjectModel.BlockItemBaseTypes;
using Filtration.ObjectModel.Enums;
namespace Filtration.ObjectModel.BlockItemTypes namespace Filtration.ObjectModel.BlockItemTypes
{ {
@@ -16,23 +17,23 @@ namespace Filtration.ObjectModel.BlockItemTypes
{ {
if (Items.Count > 0 && Items.Count < 4) if (Items.Count > 0 && Items.Count < 4)
{ {
return "Item Base Types: " + return "Base Types: " +
Items.Aggregate(string.Empty, (current, i) => current + i + ", ").TrimEnd(' ').TrimEnd(','); Items.Aggregate(string.Empty, (current, i) => current + i + ", ").TrimEnd(' ').TrimEnd(',');
} }
if (Items.Count >= 4) if (Items.Count >= 4)
{ {
var remaining = Items.Count - 3; var remaining = Items.Count - 3;
return "Item Base Types: " + Items.Take(3) return "Base Types: " + Items.Take(3)
.Aggregate(string.Empty, (current, i) => current + i + ", ") .Aggregate(string.Empty, (current, i) => current + i + ", ")
.TrimEnd(' ') .TrimEnd(' ')
.TrimEnd(',') + " (+" + remaining + " more)"; .TrimEnd(',') + " (+" + remaining + " more)";
} }
return "Item Base Types: (none)"; return "Base Types: (none)";
} }
} }
public override Color SummaryBackgroundColor => Colors.MediumTurquoise; public override Color SummaryBackgroundColor => Colors.MediumTurquoise;
public override Color SummaryTextColor => Colors.Black; public override Color SummaryTextColor => Colors.Black;
public override int SortOrder => 20; public override BlockItemOrdering SortOrder => BlockItemOrdering.BaseType;
} }
} }

View File

@@ -1,5 +1,6 @@
using System.Windows.Media; using System.Windows.Media;
using Filtration.ObjectModel.BlockItemBaseTypes; using Filtration.ObjectModel.BlockItemBaseTypes;
using Filtration.ObjectModel.Enums;
namespace Filtration.ObjectModel.BlockItemTypes namespace Filtration.ObjectModel.BlockItemTypes
{ {
@@ -17,6 +18,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string PrefixText => "SetBorderColor"; public override string PrefixText => "SetBorderColor";
public override int MaximumAllowed => 1; public override int MaximumAllowed => 1;
public override string DisplayHeading => "Border Color"; public override string DisplayHeading => "Border Color";
public override int SortOrder => 24; public override BlockItemOrdering SortOrder => BlockItemOrdering.SetBorderColor;
} }
} }

View File

@@ -1,6 +1,7 @@
using System.Linq; using System.Linq;
using System.Windows.Media; using System.Windows.Media;
using Filtration.ObjectModel.BlockItemBaseTypes; using Filtration.ObjectModel.BlockItemBaseTypes;
using Filtration.ObjectModel.Enums;
namespace Filtration.ObjectModel.BlockItemTypes namespace Filtration.ObjectModel.BlockItemTypes
{ {
@@ -16,23 +17,23 @@ namespace Filtration.ObjectModel.BlockItemTypes
{ {
if (Items.Count > 0 && Items.Count < 4) if (Items.Count > 0 && Items.Count < 4)
{ {
return "Item Classes: " + return "Classes: " +
Items.Aggregate(string.Empty, (current, i) => current + i + ", ").TrimEnd(' ').TrimEnd(','); Items.Aggregate(string.Empty, (current, i) => current + i + ", ").TrimEnd(' ').TrimEnd(',');
} }
if (Items.Count >= 4) if (Items.Count >= 4)
{ {
var remaining = Items.Count - 3; var remaining = Items.Count - 3;
return "Item Classes: " + Items.Take(3) return "Classes: " + Items.Take(3)
.Aggregate(string.Empty, (current, i) => current + i + ", ") .Aggregate(string.Empty, (current, i) => current + i + ", ")
.TrimEnd(' ') .TrimEnd(' ')
.TrimEnd(',') + " (+" + remaining + " more)"; .TrimEnd(',') + " (+" + remaining + " more)";
} }
return "Item Classes: (none)"; return "Classes: (none)";
} }
} }
public override Color SummaryBackgroundColor => Colors.MediumSeaGreen; public override Color SummaryBackgroundColor => Colors.MediumSeaGreen;
public override Color SummaryTextColor => Colors.White; public override Color SummaryTextColor => Colors.White;
public override int SortOrder => 19; public override BlockItemOrdering SortOrder => BlockItemOrdering.Class;
} }
} }

View File

@@ -1,5 +1,6 @@
using System.Windows.Media; using System.Windows.Media;
using Filtration.ObjectModel.BlockItemBaseTypes; using Filtration.ObjectModel.BlockItemBaseTypes;
using Filtration.ObjectModel.Enums;
namespace Filtration.ObjectModel.BlockItemTypes namespace Filtration.ObjectModel.BlockItemTypes
{ {
@@ -17,7 +18,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string DisplayHeading => "Corrupted"; public override string DisplayHeading => "Corrupted";
public override Color SummaryBackgroundColor => Colors.DarkRed; public override Color SummaryBackgroundColor => Colors.DarkRed;
public override Color SummaryTextColor => Colors.White; public override Color SummaryTextColor => Colors.White;
public override int SortOrder => 5; public override BlockItemOrdering SortOrder => BlockItemOrdering.Corrupted;
} }
} }

View File

@@ -1,4 +1,5 @@
using Filtration.ObjectModel.BlockItemBaseTypes; using Filtration.ObjectModel.BlockItemBaseTypes;
using Filtration.ObjectModel.Enums;
namespace Filtration.ObjectModel.BlockItemTypes namespace Filtration.ObjectModel.BlockItemTypes
{ {
@@ -16,6 +17,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string PrefixText => "CustomAlertSound"; public override string PrefixText => "CustomAlertSound";
public override int MaximumAllowed => 1; public override int MaximumAllowed => 1;
public override string DisplayHeading => "Custom Alert Sound"; public override string DisplayHeading => "Custom Alert Sound";
public override int SortOrder => 31; public override BlockItemOrdering SortOrder => BlockItemOrdering.CustomAlertSound;
} }
} }

View File

@@ -1,23 +1,20 @@
using System.Windows.Media; using System.Windows.Media;
using Filtration.ObjectModel.BlockItemBaseTypes; using Filtration.ObjectModel.BlockItemBaseTypes;
using Filtration.ObjectModel.Enums;
namespace Filtration.ObjectModel.BlockItemTypes namespace Filtration.ObjectModel.BlockItemTypes
{ {
public sealed class DisableDropSoundBlockItem : BooleanBlockItem, IAudioVisualBlockItem public sealed class DisableDropSoundBlockItem : NilBlockItem, IAudioVisualBlockItem
{ {
public DisableDropSoundBlockItem() public DisableDropSoundBlockItem() : base()
{
}
public DisableDropSoundBlockItem(bool booleanValue) : base(booleanValue)
{ {
} }
public override string PrefixText => "DisableDropSound"; public override string PrefixText => "DisableDropSound";
public override string DisplayHeading => "Disable Drop Sound"; public override string DisplayHeading => "Disable Drop Sound";
public override string Description => "Default drop sound disabled.";
public override Color SummaryBackgroundColor => Colors.Transparent; public override Color SummaryBackgroundColor => Colors.Transparent;
public override Color SummaryTextColor => Colors.Transparent; public override Color SummaryTextColor => Colors.Transparent;
public override int SortOrder => 28; public override BlockItemOrdering SortOrder => BlockItemOrdering.DisableDropSound;
} }
} }

View File

@@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string SummaryText => "Drop Level " + FilterPredicate; public override string SummaryText => "Drop Level " + FilterPredicate;
public override Color SummaryBackgroundColor => Colors.DodgerBlue; public override Color SummaryBackgroundColor => Colors.DodgerBlue;
public override Color SummaryTextColor => Colors.White; public override Color SummaryTextColor => Colors.White;
public override int SortOrder => 15; public override BlockItemOrdering SortOrder => BlockItemOrdering.DropLevel;
public override int Minimum => 0; public override int Minimum => 0;
public override int Maximum => 100; public override int Maximum => 100;
} }

View File

@@ -1,5 +1,6 @@
using System.Windows.Media; using System.Windows.Media;
using Filtration.ObjectModel.BlockItemBaseTypes; using Filtration.ObjectModel.BlockItemBaseTypes;
using Filtration.ObjectModel.Enums;
namespace Filtration.ObjectModel.BlockItemTypes namespace Filtration.ObjectModel.BlockItemTypes
{ {
@@ -17,7 +18,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string DisplayHeading => "Elder Item"; public override string DisplayHeading => "Elder Item";
public override Color SummaryBackgroundColor => Colors.DarkGray; public override Color SummaryBackgroundColor => Colors.DarkGray;
public override Color SummaryTextColor => Colors.White; public override Color SummaryTextColor => Colors.White;
public override int SortOrder => 6; public override BlockItemOrdering SortOrder => BlockItemOrdering.ElderItem;
} }
} }

View File

@@ -1,5 +1,6 @@
using System.Windows.Media; using System.Windows.Media;
using Filtration.ObjectModel.BlockItemBaseTypes; using Filtration.ObjectModel.BlockItemBaseTypes;
using Filtration.ObjectModel.Enums;
namespace Filtration.ObjectModel.BlockItemTypes namespace Filtration.ObjectModel.BlockItemTypes
{ {
@@ -17,7 +18,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string DisplayHeading => "Elder Map"; public override string DisplayHeading => "Elder Map";
public override Color SummaryBackgroundColor => Colors.DarkGoldenrod; public override Color SummaryBackgroundColor => Colors.DarkGoldenrod;
public override Color SummaryTextColor => Colors.White; public override Color SummaryTextColor => Colors.White;
public override int SortOrder => 10; public override BlockItemOrdering SortOrder => BlockItemOrdering.ElderMap;
} }
} }

View File

@@ -1,4 +1,5 @@
using Filtration.ObjectModel.BlockItemBaseTypes; using Filtration.ObjectModel.BlockItemBaseTypes;
using Filtration.ObjectModel.Enums;
namespace Filtration.ObjectModel.BlockItemTypes namespace Filtration.ObjectModel.BlockItemTypes
{ {
@@ -16,7 +17,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string PrefixText => "SetFontSize"; public override string PrefixText => "SetFontSize";
public override int MaximumAllowed => 1; public override int MaximumAllowed => 1;
public override string DisplayHeading => "Font Size"; public override string DisplayHeading => "Font Size";
public override int SortOrder => 25; public override BlockItemOrdering SortOrder => BlockItemOrdering.SetFontSize;
public override int Minimum => 11; public override int Minimum => 11;
public override int Maximum => 45; public override int Maximum => 45;
} }

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

@@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string SummaryText => "Gem Level " + FilterPredicate; public override string SummaryText => "Gem Level " + FilterPredicate;
public override Color SummaryBackgroundColor => Colors.DarkSlateGray; public override Color SummaryBackgroundColor => Colors.DarkSlateGray;
public override Color SummaryTextColor => Colors.White; public override Color SummaryTextColor => Colors.White;
public override int SortOrder => 16; public override BlockItemOrdering SortOrder => BlockItemOrdering.GemLevel;
public override int Minimum => 0; public override int Minimum => 0;
public override int Maximum => 21; public override int Maximum => 21;
} }

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

@@ -1,6 +1,7 @@
using System.Linq; using System.Linq;
using System.Windows.Media; using System.Windows.Media;
using Filtration.ObjectModel.BlockItemBaseTypes; using Filtration.ObjectModel.BlockItemBaseTypes;
using Filtration.ObjectModel.Enums;
namespace Filtration.ObjectModel.BlockItemTypes namespace Filtration.ObjectModel.BlockItemTypes
{ {
@@ -16,23 +17,23 @@ namespace Filtration.ObjectModel.BlockItemTypes
{ {
if (Items.Count > 0 && Items.Count < 4) if (Items.Count > 0 && Items.Count < 4)
{ {
return "Item Explicit Mods: " + return "Explicit Mods: " +
Items.Aggregate(string.Empty, (current, i) => current + i + ", ").TrimEnd(' ').TrimEnd(','); Items.Aggregate(string.Empty, (current, i) => current + i + ", ").TrimEnd(' ').TrimEnd(',');
} }
if (Items.Count >= 4) if (Items.Count >= 4)
{ {
var remaining = Items.Count - 3; var remaining = Items.Count - 3;
return "Item Explicit Mods: " + Items.Take(3) return "Explicit Mods: " + Items.Take(3)
.Aggregate(string.Empty, (current, i) => current + i + ", ") .Aggregate(string.Empty, (current, i) => current + i + ", ")
.TrimEnd(' ') .TrimEnd(' ')
.TrimEnd(',') + " (+" + remaining + " more)"; .TrimEnd(',') + " (+" + remaining + " more)";
} }
return "Item Explicit Mods: (none)"; return "Explicit Mods: (none)";
} }
} }
public override Color SummaryBackgroundColor => Colors.MidnightBlue; public override Color SummaryBackgroundColor => Colors.MidnightBlue;
public override Color SummaryTextColor => Colors.White; public override Color SummaryTextColor => Colors.White;
public override int SortOrder => 21; public override BlockItemOrdering SortOrder => BlockItemOrdering.HasExplicitMod;
} }
} }

View File

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

View File

@@ -1,5 +1,6 @@
using System.Windows.Media; using System.Windows.Media;
using Filtration.ObjectModel.BlockItemBaseTypes; using Filtration.ObjectModel.BlockItemBaseTypes;
using Filtration.ObjectModel.Enums;
namespace Filtration.ObjectModel.BlockItemTypes namespace Filtration.ObjectModel.BlockItemTypes
{ {
@@ -17,7 +18,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string DisplayHeading => "Identified"; public override string DisplayHeading => "Identified";
public override Color SummaryBackgroundColor => Colors.DarkSlateGray; public override Color SummaryBackgroundColor => Colors.DarkSlateGray;
public override Color SummaryTextColor => Colors.White; public override Color SummaryTextColor => Colors.White;
public override int SortOrder => 4; public override BlockItemOrdering SortOrder => BlockItemOrdering.Identified;
} }
} }

View File

@@ -13,14 +13,14 @@ namespace Filtration.ObjectModel.BlockItemTypes
public ItemLevelBlockItem(FilterPredicateOperator predicateOperator, int predicateOperand) : base (predicateOperator, predicateOperand) public ItemLevelBlockItem(FilterPredicateOperator predicateOperator, int predicateOperand) : base (predicateOperator, predicateOperand)
{ {
} }
public override string PrefixText => "ItemLevel"; public override string PrefixText => "ItemLevel";
public override int MaximumAllowed => 2; public override int MaximumAllowed => 2;
public override string DisplayHeading => "Item Level"; public override string DisplayHeading => "Item Level";
public override string SummaryText => "Item Level " + FilterPredicate; public override string SummaryText => "Item Level " + FilterPredicate;
public override Color SummaryBackgroundColor => Colors.DarkSlateGray; public override Color SummaryBackgroundColor => Colors.DarkSlateGray;
public override Color SummaryTextColor => Colors.White; public override Color SummaryTextColor => Colors.White;
public override int SortOrder => 14; public override BlockItemOrdering SortOrder => BlockItemOrdering.ItemLevel;
public override int Minimum => 0; public override int Minimum => 0;
public override int Maximum => 100; public override int Maximum => 100;
} }

View File

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

View File

@@ -19,6 +19,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string PrefixText => "MinimapIcon"; public override string PrefixText => "MinimapIcon";
public override int MaximumAllowed => 1; public override int MaximumAllowed => 1;
public override string DisplayHeading => "Minimap Icon"; public override string DisplayHeading => "Minimap Icon";
public override int SortOrder => 29; public override BlockItemOrdering SortOrder => BlockItemOrdering.MinimapIcon;
} }
} }

View File

@@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string SummaryText => "Map Tier " + FilterPredicate; public override string SummaryText => "Map Tier " + FilterPredicate;
public override Color SummaryBackgroundColor => Colors.DarkSlateGray; public override Color SummaryBackgroundColor => Colors.DarkSlateGray;
public override Color SummaryTextColor => Colors.White; public override Color SummaryTextColor => Colors.White;
public override int SortOrder => 8; public override BlockItemOrdering SortOrder => BlockItemOrdering.MapTier;
public override int Minimum => 1; public override int Minimum => 1;
public override int Maximum => 16; public override int Maximum => 16;
} }

View File

@@ -18,6 +18,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string PrefixText => "PlayEffect"; public override string PrefixText => "PlayEffect";
public override int MaximumAllowed => 1; public override int MaximumAllowed => 1;
public override string DisplayHeading => "Play Effect"; public override string DisplayHeading => "Play Effect";
public override int SortOrder => 30; public override BlockItemOrdering SortOrder => BlockItemOrdering.PlayEffect;
} }
} }

View File

@@ -1,4 +1,5 @@
using Filtration.ObjectModel.BlockItemBaseTypes; using Filtration.ObjectModel.BlockItemBaseTypes;
using Filtration.ObjectModel.Enums;
namespace Filtration.ObjectModel.BlockItemTypes namespace Filtration.ObjectModel.BlockItemTypes
{ {
@@ -17,6 +18,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string PrefixText => "PlayAlertSoundPositional"; public override string PrefixText => "PlayAlertSoundPositional";
public override int MaximumAllowed => 1; public override int MaximumAllowed => 1;
public override string DisplayHeading => "Play Positional Alert Sound"; public override string DisplayHeading => "Play Positional Alert Sound";
public override int SortOrder => 27; public override BlockItemOrdering SortOrder => BlockItemOrdering.PlayAlertSoundPositional;
} }
} }

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 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;
}
}

View File

@@ -9,7 +9,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
public QualityBlockItem() public QualityBlockItem()
{ {
} }
public QualityBlockItem(FilterPredicateOperator predicateOperator, int predicateOperand) public QualityBlockItem(FilterPredicateOperator predicateOperator, int predicateOperand)
: base(predicateOperator, predicateOperand) : base(predicateOperator, predicateOperand)
{ {
@@ -21,8 +21,8 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string SummaryText => "Quality " + FilterPredicate; public override string SummaryText => "Quality " + FilterPredicate;
public override Color SummaryBackgroundColor => Colors.DarkOrange; public override Color SummaryBackgroundColor => Colors.DarkOrange;
public override Color SummaryTextColor => Colors.White; public override Color SummaryTextColor => Colors.White;
public override int SortOrder => 3; public override BlockItemOrdering SortOrder => BlockItemOrdering.Quality;
public override int Minimum => 0; public override int Minimum => 0;
public override int Maximum => 30; public override int Maximum => 99;
} }
} }

View File

@@ -30,7 +30,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
((ItemRarity) FilterPredicate.PredicateOperand).GetAttributeDescription(); ((ItemRarity) FilterPredicate.PredicateOperand).GetAttributeDescription();
public override Color SummaryBackgroundColor => Colors.LightCoral; public override Color SummaryBackgroundColor => Colors.LightCoral;
public override Color SummaryTextColor => Colors.White; public override Color SummaryTextColor => Colors.White;
public override int SortOrder => 18; public override BlockItemOrdering SortOrder => BlockItemOrdering.Rarity;
public override int Minimum => 0; public override int Minimum => 0;
public override int Maximum => (int)ItemRarity.Unique; public override int Maximum => (int)ItemRarity.Unique;
} }

View File

@@ -1,5 +1,6 @@
using System.Windows.Media; using System.Windows.Media;
using Filtration.ObjectModel.BlockItemBaseTypes; using Filtration.ObjectModel.BlockItemBaseTypes;
using Filtration.ObjectModel.Enums;
namespace Filtration.ObjectModel.BlockItemTypes namespace Filtration.ObjectModel.BlockItemTypes
{ {
@@ -17,7 +18,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string DisplayHeading => "Shaped Map"; public override string DisplayHeading => "Shaped Map";
public override Color SummaryBackgroundColor => Colors.DarkGoldenrod; public override Color SummaryBackgroundColor => Colors.DarkGoldenrod;
public override Color SummaryTextColor => Colors.White; public override Color SummaryTextColor => Colors.White;
public override int SortOrder => 9; public override BlockItemOrdering SortOrder => BlockItemOrdering.ShapedMap;
} }
} }

View File

@@ -1,5 +1,6 @@
using System.Windows.Media; using System.Windows.Media;
using Filtration.ObjectModel.BlockItemBaseTypes; using Filtration.ObjectModel.BlockItemBaseTypes;
using Filtration.ObjectModel.Enums;
namespace Filtration.ObjectModel.BlockItemTypes namespace Filtration.ObjectModel.BlockItemTypes
{ {
@@ -17,7 +18,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string DisplayHeading => "Shaper Item"; public override string DisplayHeading => "Shaper Item";
public override Color SummaryBackgroundColor => Colors.DimGray; public override Color SummaryBackgroundColor => Colors.DimGray;
public override Color SummaryTextColor => Colors.White; public override Color SummaryTextColor => Colors.White;
public override int SortOrder => 7; public override BlockItemOrdering SortOrder => BlockItemOrdering.ShaperItem;
} }
} }

View File

@@ -11,7 +11,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
{ {
public SocketGroupBlockItem() public SocketGroupBlockItem()
{ {
} }
public override string PrefixText => "SocketGroup"; public override string PrefixText => "SocketGroup";
@@ -39,7 +39,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override Color SummaryBackgroundColor => Colors.GhostWhite; public override Color SummaryBackgroundColor => Colors.GhostWhite;
public override Color SummaryTextColor => Colors.Black; public override Color SummaryTextColor => Colors.Black;
public override int SortOrder => 11; public override BlockItemOrdering SortOrder => BlockItemOrdering.SocketGroup;
private SocketColor StringToSocketColor(char socketColorString) private SocketColor StringToSocketColor(char socketColorString)
{ {

View File

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

View File

@@ -1,4 +1,5 @@
using Filtration.ObjectModel.BlockItemBaseTypes; using Filtration.ObjectModel.BlockItemBaseTypes;
using Filtration.ObjectModel.Enums;
namespace Filtration.ObjectModel.BlockItemTypes namespace Filtration.ObjectModel.BlockItemTypes
{ {
@@ -17,6 +18,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string PrefixText => "PlayAlertSound"; public override string PrefixText => "PlayAlertSound";
public override int MaximumAllowed => 1; public override int MaximumAllowed => 1;
public override string DisplayHeading => "Play Alert Sound"; public override string DisplayHeading => "Play Alert Sound";
public override int SortOrder => 26; public override BlockItemOrdering SortOrder => BlockItemOrdering.PlayAlertSound;
} }
} }

View File

@@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string SummaryText => "Stack Size " + FilterPredicate; public override string SummaryText => "Stack Size " + FilterPredicate;
public override Color SummaryBackgroundColor => Colors.DarkSlateGray; public override Color SummaryBackgroundColor => Colors.DarkSlateGray;
public override Color SummaryTextColor => Colors.White; public override Color SummaryTextColor => Colors.White;
public override int SortOrder => 17; public override BlockItemOrdering SortOrder => BlockItemOrdering.StackSize;
public override int Minimum => 0; public override int Minimum => 0;
public override int Maximum => 1000; public override int Maximum => 1000;
} }

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

@@ -18,6 +18,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string PrefixText => "SetTextColor"; public override string PrefixText => "SetTextColor";
public override int MaximumAllowed => 1; public override int MaximumAllowed => 1;
public override string DisplayHeading => "Text Color"; public override string DisplayHeading => "Text Color";
public override int SortOrder => 22; public override BlockItemOrdering SortOrder => BlockItemOrdering.SetTextColor;
} }
} }

View File

@@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
public override string SummaryText => "Width " + FilterPredicate; public override string SummaryText => "Width " + FilterPredicate;
public override Color SummaryBackgroundColor => Colors.MediumPurple; public override Color SummaryBackgroundColor => Colors.MediumPurple;
public override Color SummaryTextColor => Colors.White; public override Color SummaryTextColor => Colors.White;
public override int SortOrder => 13; public override BlockItemOrdering SortOrder => BlockItemOrdering.Width;
public override int Minimum => 0; public override int Minimum => 0;
public override int Maximum => 2; public override int Maximum => 2;
} }

View File

@@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections.ObjectModel;
namespace Filtration.ObjectModel.Commands.ItemFilterScript
{
public class AddBlockItemToBlocksCommand : IUndoableCommand
{
private readonly List<Tuple<ObservableCollection<IItemFilterBlockItem>, IItemFilterBlockItem>> _input;
public AddBlockItemToBlocksCommand(List<Tuple<ObservableCollection<IItemFilterBlockItem>, IItemFilterBlockItem>> input)
{
_input = input;
}
public void Execute()
{
foreach (var v in _input)
{
var blockItems = v.Item1;
var item = v.Item2;
blockItems.Add(item);
}
}
public void Undo()
{
foreach (var v in _input)
{
var blockItems = v.Item1;
var item = v.Item2;
blockItems.Remove(item);
}
}
public void Redo() => Execute();
}
}

View File

@@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections.ObjectModel;
namespace Filtration.ObjectModel.Commands.ItemFilterScript
{
public class RemoveBlockItemFromBlocksCommand : IUndoableCommand
{
private readonly List<Tuple<ObservableCollection<IItemFilterBlockItem>, IItemFilterBlockItem>> _input;
public RemoveBlockItemFromBlocksCommand(List<Tuple<ObservableCollection<IItemFilterBlockItem>, IItemFilterBlockItem>> input)
{
_input = input;
}
public void Execute()
{
foreach (var pair in _input)
{
var blockItems = pair.Item1;
var blockItem = pair.Item2;
for (var i = 0; i < blockItems.Count; i++)
{
if (blockItems[i] == blockItem)
{
blockItems.RemoveAt(i--);
}
}
}
}
public void Undo()
{
foreach (var pair in _input)
{
var blockItems = pair.Item1;
var blockItem = pair.Item2;
blockItems.Add(blockItem);
}
}
public void Redo() => Execute();
}
}

View File

@@ -0,0 +1,45 @@
using System.ComponentModel;
namespace Filtration.ObjectModel.Enums
{
public enum BlockItemOrdering
{
Action,
LinkedSockets,
Sockets,
Quality,
Identified,
Corrupted,
ElderItem,
ShaperItem,
SynthesisedItem,
FracturedItem,
AnyEnchantment,
MapTier,
ShapedMap,
ElderMap,
SocketGroup,
Height,
Width,
ItemLevel,
DropLevel,
GemLevel,
StackSize,
Rarity,
Class,
BaseType,
Prophecy,
HasExplicitMod,
HasEnchantment,
SetTextColor,
SetBackgroundColor,
SetBorderColor,
SetFontSize,
PlayAlertSound,
PlayAlertSoundPositional,
DisableDropSound,
MinimapIcon,
PlayEffect,
CustomAlertSound
}
}

View File

@@ -8,6 +8,7 @@
Rarity, Rarity,
Class, Class,
BaseType, BaseType,
Prophecy,
Sockets, Sockets,
LinkedSockets, LinkedSockets,
SocketGroup, SocketGroup,

View File

@@ -4,8 +4,6 @@ namespace Filtration.ObjectModel.Enums
{ {
public enum ItemRarity public enum ItemRarity
{ {
[Description("Not Set")]
NotSet,
[Description("Normal")] [Description("Normal")]
Normal, Normal,
[Description("Magic")] [Description("Magic")]

View File

@@ -16,23 +16,20 @@ namespace Filtration.ObjectModel.Extensions
} }
case ItemRarity.Normal: case ItemRarity.Normal:
{ {
return PathOfExileNamedColors.Colors[PathOfExileNamedColor.WhiteItem]; return PathOfExileNamedColors.Colors[PathOfExileNamedColor.WhiteItem];
} }
case ItemRarity.Rare: case ItemRarity.Rare:
{ {
return PathOfExileNamedColors.Colors[PathOfExileNamedColor.RareItem]; return PathOfExileNamedColors.Colors[PathOfExileNamedColor.RareItem];
} }
case ItemRarity.Unique: case ItemRarity.Unique:
{ {
return PathOfExileNamedColors.Colors[PathOfExileNamedColor.UniqueItem]; return PathOfExileNamedColors.Colors[PathOfExileNamedColor.UniqueItem];
}
case ItemRarity.NotSet:
{
return PathOfExileNamedColors.Colors[PathOfExileNamedColor.QuestItem];
} }
default: default:
{
throw new ArgumentOutOfRangeException(nameof(itemRarity), itemRarity, null); throw new ArgumentOutOfRangeException(nameof(itemRarity), itemRarity, null);
}
} }
} }
} }

View File

@@ -75,13 +75,17 @@
<Compile Include="BlockItemBaseTypes\DualIntegerBlockItem.cs" /> <Compile Include="BlockItemBaseTypes\DualIntegerBlockItem.cs" />
<Compile Include="BlockItemBaseTypes\EffectColorBlockItem.cs" /> <Compile Include="BlockItemBaseTypes\EffectColorBlockItem.cs" />
<Compile Include="BlockItemBaseTypes\IconBlockItem.cs" /> <Compile Include="BlockItemBaseTypes\IconBlockItem.cs" />
<Compile Include="BlockItemBaseTypes\NilBlockItem.cs" />
<Compile Include="BlockItemBaseTypes\StringBlockItem.cs" /> <Compile Include="BlockItemBaseTypes\StringBlockItem.cs" />
<Compile Include="BlockItemBaseTypes\StrIntBlockItem.cs" /> <Compile Include="BlockItemBaseTypes\StrIntBlockItem.cs" />
<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" />
@@ -92,7 +96,9 @@
<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\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" />
@@ -113,16 +119,19 @@
<Compile Include="BlockItemTypes\WidthBlockItem.cs" /> <Compile Include="BlockItemTypes\WidthBlockItem.cs" />
<Compile Include="Commands\CommandManager.cs" /> <Compile Include="Commands\CommandManager.cs" />
<Compile Include="Commands\ICommand.cs" /> <Compile Include="Commands\ICommand.cs" />
<Compile Include="Commands\ItemFilterScript\AddBlockItemToBlocksCommand.cs" />
<Compile Include="Commands\ItemFilterScript\MoveBlocksToIndexCommand.cs" /> <Compile Include="Commands\ItemFilterScript\MoveBlocksToIndexCommand.cs" />
<Compile Include="Commands\ItemFilterScript\MoveBlocksToBottomCommand.cs" /> <Compile Include="Commands\ItemFilterScript\MoveBlocksToBottomCommand.cs" />
<Compile Include="Commands\ItemFilterScript\AddCommentBlockCommand.cs" /> <Compile Include="Commands\ItemFilterScript\AddCommentBlockCommand.cs" />
<Compile Include="Commands\ItemFilterScript\MoveBlocksToTopCommand.cs" /> <Compile Include="Commands\ItemFilterScript\MoveBlocksToTopCommand.cs" />
<Compile Include="Commands\ItemFilterScript\PasteBlocksCommand.cs" /> <Compile Include="Commands\ItemFilterScript\PasteBlocksCommand.cs" />
<Compile Include="Commands\ItemFilterScript\RemoveBlockItemFromBlocksCommand.cs" />
<Compile Include="Commands\ItemFilterScript\RemoveBlocksCommand.cs" /> <Compile Include="Commands\ItemFilterScript\RemoveBlocksCommand.cs" />
<Compile Include="Commands\ItemFilterScript\SetScriptDescriptionCommand.cs" /> <Compile Include="Commands\ItemFilterScript\SetScriptDescriptionCommand.cs" />
<Compile Include="Commands\ItemFilterScript\AddBlockCommand.cs" /> <Compile Include="Commands\ItemFilterScript\AddBlockCommand.cs" />
<Compile Include="Commands\IUndoableCommand.cs" /> <Compile Include="Commands\IUndoableCommand.cs" />
<Compile Include="Enums\BlockAction.cs" /> <Compile Include="Enums\BlockAction.cs" />
<Compile Include="Enums\BlockItemOrdering.cs" />
<Compile Include="Enums\BlockItemType.cs" /> <Compile Include="Enums\BlockItemType.cs" />
<Compile Include="Enums\EffectColor.cs" /> <Compile Include="Enums\EffectColor.cs" />
<Compile Include="Enums\FilterPredicateOperator.cs" /> <Compile Include="Enums\FilterPredicateOperator.cs" />

View File

@@ -1,5 +1,6 @@
using System.ComponentModel; using System.ComponentModel;
using System.Windows.Media; using System.Windows.Media;
using Filtration.ObjectModel.Enums;
namespace Filtration.ObjectModel namespace Filtration.ObjectModel
{ {
@@ -12,7 +13,7 @@ namespace Filtration.ObjectModel
Color SummaryBackgroundColor { get; } Color SummaryBackgroundColor { get; }
Color SummaryTextColor { get; } Color SummaryTextColor { get; }
int MaximumAllowed { get; } int MaximumAllowed { get; }
int SortOrder { get; } BlockItemOrdering SortOrder { get; }
bool IsDirty { get; } bool IsDirty { get; }
string Comment { get; set; } string Comment { get; set; }
} }

View File

@@ -121,10 +121,8 @@ namespace Filtration.ObjectModel
return PathOfExileNamedColors.Colors[PathOfExileNamedColor.QuestItem]; return PathOfExileNamedColors.Colors[PathOfExileNamedColor.QuestItem];
} }
return ItemRarity != ItemRarity.NotSet ? ItemRarity.DefaultRarityTextColor() : PathOfExileNamedColors.Colors[PathOfExileNamedColor.WhiteItem]; return ItemRarity.DefaultRarityTextColor();
} }
} }
} }
} }

View File

@@ -279,7 +279,7 @@ namespace Filtration.ObjectModel
get get
{ {
var borderColorBlockItem = BlockItems.OfType<BorderColorBlockItem>().FirstOrDefault(); var borderColorBlockItem = BlockItems.OfType<BorderColorBlockItem>().FirstOrDefault();
return borderColorBlockItem?.Color ?? new Color { A = 240, R = 0, G = 0, B = 0 }; return borderColorBlockItem?.Color ?? new Color { A = 0, R = 255, G = 255, B = 255 };
} }
} }

View File

@@ -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()
{ {
@@ -900,7 +919,7 @@ namespace Filtration.Parser.Tests.Services
{ {
// Arrange // Arrange
var inputString = "Show" + Environment.NewLine + var inputString = "Show" + Environment.NewLine +
" DisableDropSound True"; " DisableDropSound # Test";
// Act // Act
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript); var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
@@ -909,7 +928,22 @@ namespace Filtration.Parser.Tests.Services
Assert.AreEqual(1, result.BlockItems.Count(b => b is DisableDropSoundBlockItem)); Assert.AreEqual(1, result.BlockItems.Count(b => b is DisableDropSoundBlockItem));
var blockItem = result.BlockItems.OfType<DisableDropSoundBlockItem>().First(); var blockItem = result.BlockItems.OfType<DisableDropSoundBlockItem>().First();
Assert.IsTrue(blockItem.BooleanValue); Assert.AreEqual(blockItem.Comment, " Test");
}
[Test]
public void TranslateStringToItemFilterBlock_DisableDropSound_IncorrectBooleanValue_ReturnsCorrectObject()
{
// Arrange
var inputString = "Show" + Environment.NewLine +
" DisableDropSound True";
// Act
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
// Assert
Assert.AreEqual(1, result.BlockItems.Count(b => b is DisableDropSoundBlockItem));
} }
[Test] [Test]
@@ -934,6 +968,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 +
@@ -945,7 +980,7 @@ namespace Filtration.Parser.Tests.Services
" SetBorderColor 0 0 0" + Environment.NewLine + " SetBorderColor 0 0 0" + Environment.NewLine +
" SetFontSize 50" + Environment.NewLine + " SetFontSize 50" + Environment.NewLine +
" PlayAlertSound 3" + Environment.NewLine + " PlayAlertSound 3" + Environment.NewLine +
" DisableDropSound False" + Environment.NewLine + " DisableDropSound # False" + Environment.NewLine +
" CustomAlertSound \"test.mp3\" # customSoundTheme" + Environment.NewLine + " CustomAlertSound \"test.mp3\" # customSoundTheme" + Environment.NewLine +
" MinimapIcon 2 Green Triangle # iconTheme" + Environment.NewLine + " MinimapIcon 2 Green Triangle # iconTheme" + Environment.NewLine +
" PlayEffect Green Temp # effectTheme" + Environment.NewLine; " PlayEffect Green Temp # effectTheme" + Environment.NewLine;
@@ -1008,6 +1043,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);
@@ -1050,7 +1090,7 @@ namespace Filtration.Parser.Tests.Services
Assert.AreEqual(0, result.BlockItems.OfType<SoundBlockItem>().Count()); Assert.AreEqual(0, result.BlockItems.OfType<SoundBlockItem>().Count());
var disableDropSoundBlockItem = result.BlockItems.OfType<DisableDropSoundBlockItem>().First(); var disableDropSoundBlockItem = result.BlockItems.OfType<DisableDropSoundBlockItem>().First();
Assert.IsFalse(disableDropSoundBlockItem.BooleanValue); Assert.AreEqual(disableDropSoundBlockItem.Comment, " False");
var customSoundBlockItem = result.BlockItems.OfType<CustomSoundBlockItem>().First(); var customSoundBlockItem = result.BlockItems.OfType<CustomSoundBlockItem>().First();
Assert.AreEqual("test.mp3", customSoundBlockItem.Value); Assert.AreEqual("test.mp3", customSoundBlockItem.Value);
@@ -1707,6 +1747,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,13 +2073,14 @@ 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 +
" SetBorderColor 255 1 254" + Environment.NewLine + " SetBorderColor 255 1 254" + Environment.NewLine +
" SetFontSize 50" + Environment.NewLine + " SetFontSize 50" + Environment.NewLine +
" PlayAlertSound 6 90" + Environment.NewLine + " PlayAlertSound 6 90" + Environment.NewLine +
" DisableDropSound True" + Environment.NewLine + " DisableDropSound" + Environment.NewLine +
" MinimapIcon 1 Blue Circle" + Environment.NewLine + " MinimapIcon 1 Blue Circle" + Environment.NewLine +
" PlayEffect Red Temp" + Environment.NewLine + " PlayEffect Red Temp" + Environment.NewLine +
" CustomAlertSound \"test.mp3\""; " CustomAlertSound \"test.mp3\"";
@@ -2046,6 +2107,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");
@@ -2069,7 +2135,7 @@ namespace Filtration.Parser.Tests.Services
_testUtility.TestBlock.BlockItems.Add(new MapTierBlockItem(FilterPredicateOperator.LessThan, 10)); _testUtility.TestBlock.BlockItems.Add(new MapTierBlockItem(FilterPredicateOperator.LessThan, 10));
_testUtility.TestBlock.BlockItems.Add(new MapIconBlockItem(IconSize.Medium, IconColor.Blue, IconShape.Circle)); _testUtility.TestBlock.BlockItems.Add(new MapIconBlockItem(IconSize.Medium, IconColor.Blue, IconShape.Circle));
_testUtility.TestBlock.BlockItems.Add(new PlayEffectBlockItem(EffectColor.Red, true)); _testUtility.TestBlock.BlockItems.Add(new PlayEffectBlockItem(EffectColor.Red, true));
_testUtility.TestBlock.BlockItems.Add(new DisableDropSoundBlockItem(true)); _testUtility.TestBlock.BlockItems.Add(new DisableDropSoundBlockItem());
// Act // Act
var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock); var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock);

View File

@@ -322,7 +322,13 @@ namespace Filtration.Parser.Tests.Services
Environment.NewLine + Environment.NewLine +
"Show" + Environment.NewLine + "Show" + Environment.NewLine +
" ItemLevel > 20" + Environment.NewLine + " ItemLevel > 20" + Environment.NewLine +
" SetTextColor 255 255 0"; " SetTextColor 255 255 0" + Environment.NewLine +
Environment.NewLine +
"#Show $Recipes->Glassblower->15% %D1" + Environment.NewLine +
"# SetTextColor 255 255 0" + Environment.NewLine +
Environment.NewLine +
"#Hide simple text without any special character" + Environment.NewLine +
"# SetTextColor 255 255 0";
var blockTranslator = new ItemFilterBlockTranslator(Mock.Of<IBlockGroupHierarchyBuilder>()); var blockTranslator = new ItemFilterBlockTranslator(Mock.Of<IBlockGroupHierarchyBuilder>());
@@ -332,15 +338,21 @@ namespace Filtration.Parser.Tests.Services
var result = translator.TranslateStringToItemFilterScript(testInputScript); var result = translator.TranslateStringToItemFilterScript(testInputScript);
// Assert // Assert
Assert.AreEqual(3, result.ItemFilterBlocks.Count); Assert.AreEqual(5, result.ItemFilterBlocks.Count);
var firstBlock = result.ItemFilterBlocks.OfType<ItemFilterBlock>().First(); var firstBlock = result.ItemFilterBlocks.OfType<ItemFilterBlock>().First();
var secondBlock = result.ItemFilterBlocks.OfType<ItemFilterBlock>().Skip(1).First(); var secondBlock = result.ItemFilterBlocks.OfType<ItemFilterBlock>().Skip(1).First();
var thirdBlock = result.ItemFilterBlocks.OfType<ItemFilterBlock>().Skip(2).First(); var thirdBlock = result.ItemFilterBlocks.OfType<ItemFilterBlock>().Skip(2).First();
var fourthBlock = result.ItemFilterBlocks.OfType<ItemFilterBlock>().Skip(3).First();
var fifthBlock = result.ItemFilterBlocks.OfType<ItemFilterBlock>().Skip(4).First();
Assert.AreEqual(3, firstBlock.BlockItems.Count); Assert.AreEqual(3, firstBlock.BlockItems.Count);
Assert.AreEqual(5, secondBlock.BlockItems.Count); Assert.AreEqual(5, secondBlock.BlockItems.Count);
Assert.AreEqual(3, thirdBlock.BlockItems.Count); Assert.AreEqual(3, thirdBlock.BlockItems.Count);
Assert.AreEqual(2, fourthBlock.BlockItems.Count);
Assert.AreEqual(2, fifthBlock.BlockItems.Count);
Assert.AreEqual(false, fourthBlock.Enabled);
Assert.AreEqual(false, fifthBlock.Enabled);
} }
[Test] [Test]

View File

@@ -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);
@@ -179,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);
@@ -268,7 +288,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;
@@ -312,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);
@@ -322,19 +347,19 @@ namespace Filtration.Parser.Services
// Only ever use the last DisableDropSound item encountered as multiples aren't valid. // Only ever use the last DisableDropSound item encountered as multiples aren't valid.
RemoveExistingBlockItemsOfType<DisableDropSoundBlockItem>(block); RemoveExistingBlockItemsOfType<DisableDropSoundBlockItem>(block);
AddBooleanItemToBlockItems<DisableDropSoundBlockItem>(block, trimmedLine); AddNilItemToBlockItems<DisableDropSoundBlockItem>(block, trimmedLine);
break; break;
} }
case "MinimapIcon": case "MinimapIcon":
{ {
// 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
@@ -344,12 +369,6 @@ namespace Filtration.Parser.Services
Shape = EnumHelper.GetEnumValueFromDescription<IconShape>(match.Groups[3].Value) Shape = EnumHelper.GetEnumValueFromDescription<IconShape>(match.Groups[3].Value)
}; };
var themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.Icon, match.Groups[5].Value.Trim(),
blockItemValue.Size, blockItemValue.Color, blockItemValue.Shape);
if(match.Groups[4].Value == "#" && !string.IsNullOrWhiteSpace(match.Groups[5].Value))
{
blockItemValue.ThemeComponent = themeComponent;
}
block.BlockItems.Add(blockItemValue); block.BlockItems.Add(blockItemValue);
themeComponentType = (int)ThemeComponentType.Icon; themeComponentType = (int)ThemeComponentType.Icon;
} }
@@ -359,10 +378,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 +402,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
@@ -507,10 +526,17 @@ namespace Filtration.Parser.Services
} }
} }
private static void AddNilItemToBlockItems<T>(IItemFilterBlock block, string inputString) where T : NilBlockItem
{
var blockItem = Activator.CreateInstance<T>();
blockItem.Comment = GetTextAfterFirstComment(inputString);
block.BlockItems.Add(blockItem);
}
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);
} }
@@ -561,12 +587,17 @@ namespace Filtration.Parser.Services
var trimmedLine = line.Trim(); var trimmedLine = line.Trim();
if (trimmedLine.IndexOf('#') > 0) if (trimmedLine.IndexOf('#') > 0)
{ {
blockComment = trimmedLine.Substring(trimmedLine.IndexOf('#') + 1); blockComment = trimmedLine.Substring(trimmedLine.IndexOf('#') + 1).Trim();
trimmedLine = trimmedLine.Substring(0, trimmedLine.IndexOf('#')).Trim(); trimmedLine = trimmedLine.Substring(0, trimmedLine.IndexOf('#')).Trim();
} }
switch (matches.Value) switch (matches.Value)
{ {
case "DisableDropSound":
{
blockItems.Add(new DisableDropSoundBlockItem());
break;
}
case "PlayAlertSound": case "PlayAlertSound":
{ {
var match = Regex.Match(trimmedLine, @"\s+(\S+) (\d+)"); var match = Regex.Match(trimmedLine, @"\s+(\S+) (\d+)");
@@ -581,6 +612,20 @@ namespace Filtration.Parser.Services
blockItems.Add(blockItem); blockItems.Add(blockItem);
break; break;
} }
case "PlayAlertSoundPositional":
{
var match = Regex.Match(trimmedLine, @"\s+(\S+) (\d+)");
if (!match.Success) break;
var blockItem = new PositionalSoundBlockItem(match.Groups[1].Value, Convert.ToInt16(match.Groups[2].Value));
if(_masterComponentCollection != null && !string.IsNullOrWhiteSpace(blockComment))
{
ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.AlertSound,
blockComment, blockItem.Value, blockItem.SecondValue);
blockItem.ThemeComponent = themeComponent;
}
blockItems.Add(blockItem);
break;
}
case "SetTextColor": case "SetTextColor":
{ {
var result = Regex.Matches(trimmedLine, @"([\w\s]*)"); var result = Regex.Matches(trimmedLine, @"([\w\s]*)");
@@ -637,10 +682,60 @@ namespace Filtration.Parser.Services
blockItems.Add(blockItem); blockItems.Add(blockItem);
break; break;
} }
} case "MinimapIcon":
{
// TODO: Get size, color, shape values programmatically
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*([#]?)(.*)",
RegexOptions.IgnoreCase);
if (match.Success)
{
var blockItemValue = new MapIconBlockItem
{
Size = (IconSize)short.Parse(match.Groups[1].Value),
Color = EnumHelper.GetEnumValueFromDescription<IconColor>(match.Groups[2].Value),
Shape = EnumHelper.GetEnumValueFromDescription<IconShape>(match.Groups[3].Value)
};
blockItems.Add(blockItemValue);
}
break;
}
case "PlayEffect":
{
// TODO: Get colors programmatically
var match = Regex.Match(trimmedLine, @"\S+\s+(Red|Green|Blue|Brown|White|Yellow)\s*(Temp)?", RegexOptions.IgnoreCase);
if (match.Success)
{
var blockItemValue = new PlayEffectBlockItem
{
Color = EnumHelper.GetEnumValueFromDescription<EffectColor>(match.Groups[1].Value),
Temporary = match.Groups[2].Value.Trim().ToLower() == "temp"
};
blockItems.Add(blockItemValue);
}
break;
}
case "CustomAlertSound":
{
var match = Regex.Match(trimmedLine, @"\S+\s+""([^\*\<\>\?|]+)""");
if (match.Success)
{
var blockItemValue = new CustomSoundBlockItem
{
Value = match.Groups[1].Value
};
blockItems.Add(blockItemValue);
}
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 +820,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

View File

@@ -61,8 +61,7 @@ namespace Filtration.Parser.Services
lines[i] = lines[i].Trim(); lines[i] = lines[i].Trim();
if(!lines[i].StartsWith("#")) if(!lines[i].StartsWith("#"))
{ {
string curLine = Regex.Replace(lines[i], @"\s+", ""); if ((lines[i].StartsWith("Show") || lines[i].StartsWith("Hide")) && (lines[i].Length == 4 || lines[i][4] == ' ')) // found
if ((curLine.StartsWith("Show") || curLine.StartsWith("Hide")) && (curLine.Length == 4 || curLine[4] == '#')) // found
{ {
inBlock[i] = true; inBlock[i] = true;
break; break;
@@ -98,8 +97,8 @@ namespace Filtration.Parser.Services
{ {
if (!inDisabledBlock && lines[i].StartsWith("#")) if (!inDisabledBlock && lines[i].StartsWith("#"))
{ {
string curLine = Regex.Replace(lines[i].Substring(1), @"\s+", ""); string curLine = lines[i].Substring(1).Trim();
if ((curLine.StartsWith("Show") || curLine.StartsWith("Hide")) && (curLine.Length == 4 || curLine[4] == '#') && !inBlock[i]) if ((curLine.StartsWith("Show") || curLine.StartsWith("Hide")) && (curLine.Length == 4 || curLine[4] == ' ') && !inBlock[i])
{ {
inDisabledBlock = true; inDisabledBlock = true;
lines[i] = lines[i].Substring(1).TrimStart(' '); lines[i] = lines[i].Substring(1).TrimStart(' ');

View File

@@ -40,7 +40,12 @@
<Reference Include="FluentAssertions, Version=5.5.3.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL"> <Reference Include="FluentAssertions, Version=5.5.3.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
<HintPath>..\packages\FluentAssertions.5.5.3\lib\net45\FluentAssertions.dll</HintPath> <HintPath>..\packages\FluentAssertions.5.5.3\lib\net45\FluentAssertions.dll</HintPath>
</Reference> </Reference>
<Reference Include="Microsoft.WindowsAPICodePack.Shell, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null" /> <Reference Include="Microsoft.WindowsAPICodePack, Version=1.1.2.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\WindowsAPICodePack-Core.1.1.2\lib\Microsoft.WindowsAPICodePack.dll</HintPath>
</Reference>
<Reference Include="Microsoft.WindowsAPICodePack.Shell, Version=1.1.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\WindowsAPICodePack-Shell.1.1.1\lib\Microsoft.WindowsAPICodePack.Shell.dll</HintPath>
</Reference>
<Reference Include="Moq, Version=4.10.0.0, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL"> <Reference Include="Moq, Version=4.10.0.0, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL">
<HintPath>..\packages\Moq.4.10.0\lib\net45\Moq.dll</HintPath> <HintPath>..\packages\Moq.4.10.0\lib\net45\Moq.dll</HintPath>
</Reference> </Reference>

View File

@@ -1,9 +1,4 @@
using System; using Filtration.Common.Services;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Filtration.Common.Services;
using Filtration.Services; using Filtration.Services;
using Microsoft.WindowsAPICodePack.Dialogs; using Microsoft.WindowsAPICodePack.Dialogs;
using Moq; using Moq;

View File

@@ -1,43 +1,43 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<configuration> <configuration>
<runtime> <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="Xceed.Wpf.AvalonDock" publicKeyToken="3e4669d2f30244f4" culture="neutral" /> <assemblyIdentity name="Xceed.Wpf.AvalonDock" publicKeyToken="3e4669d2f30244f4" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.4.0.0" newVersion="3.4.0.0" /> <bindingRedirect oldVersion="0.0.0.0-3.4.0.0" newVersion="3.4.0.0" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="ControlzEx" publicKeyToken="f08b075e934b7045" culture="neutral" /> <assemblyIdentity name="ControlzEx" publicKeyToken="f08b075e934b7045" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.2.0.4" newVersion="2.2.0.4" /> <bindingRedirect oldVersion="0.0.0.0-2.2.0.4" newVersion="2.2.0.4" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="Castle.Core" publicKeyToken="407dd0808d44fbdc" culture="neutral" /> <assemblyIdentity name="Castle.Core" publicKeyToken="407dd0808d44fbdc" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="Xceed.Wpf.Toolkit" publicKeyToken="3e4669d2f30244f4" culture="neutral" /> <assemblyIdentity name="Xceed.Wpf.Toolkit" publicKeyToken="3e4669d2f30244f4" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.9.0.0" newVersion="2.9.0.0" /> <bindingRedirect oldVersion="0.0.0.0-2.9.0.0" newVersion="2.9.0.0" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="CommonServiceLocator" publicKeyToken="489b6accfaf20ef0" culture="neutral" /> <assemblyIdentity name="CommonServiceLocator" publicKeyToken="489b6accfaf20ef0" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.4.0" newVersion="2.0.4.0" /> <bindingRedirect oldVersion="0.0.0.0-2.0.4.0" newVersion="2.0.4.0" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" /> <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" /> <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" /> <bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="System.Windows.Interactivity" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <assemblyIdentity name="System.Windows.Interactivity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" /> <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" />
</dependentAssembly> </dependentAssembly>
</assemblyBinding> </assemblyBinding>
</runtime> </runtime>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /></startup></configuration> <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /></startup></configuration>

View File

@@ -7,4 +7,6 @@
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.2" targetFramework="net461" /> <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.2" targetFramework="net461" />
<package id="System.Threading.Tasks.Extensions" version="4.5.1" targetFramework="net461" /> <package id="System.Threading.Tasks.Extensions" version="4.5.1" targetFramework="net461" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net461" /> <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
<package id="WindowsAPICodePack-Core" version="1.1.2" targetFramework="net461" />
<package id="WindowsAPICodePack-Shell" version="1.1.1" targetFramework="net461" />
</packages> </packages>

View File

@@ -158,6 +158,9 @@
<None Include="app.config" /> <None Include="app.config" />
<None Include="packages.config" /> <None Include="packages.config" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<WCFMetadata Include="Connected Services\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- 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. Other similar extension points exist, see Microsoft.Common.targets.

View File

@@ -186,10 +186,11 @@ namespace Filtration.ThemeEditor.ViewModels
} }
#pragma warning disable 1998 #pragma warning disable 1998
public async Task Close() public async Task<bool> Close()
#pragma warning restore 1998 #pragma warning restore 1998
{ {
Messenger.Default.Send(new ThemeClosedMessage {ClosedViewModel = this}); Messenger.Default.Send(new ThemeClosedMessage {ClosedViewModel = this});
return true;
} }
private void OnAddThemeComponentCommand(ThemeComponentType themeComponentType) private void OnAddThemeComponentCommand(ThemeComponentType themeComponentType)

View File

@@ -9,6 +9,7 @@
xmlns:views="clr-namespace:Filtration.ThemeEditor.Views" xmlns:views="clr-namespace:Filtration.ThemeEditor.Views"
xmlns:extensions="clr-namespace:Filtration.Common.Extensions;assembly=Filtration.Common" xmlns:extensions="clr-namespace:Filtration.Common.Extensions;assembly=Filtration.Common"
xmlns:enums="clr-namespace:Filtration.ObjectModel.Enums;assembly=Filtration.ObjectModel" xmlns:enums="clr-namespace:Filtration.ObjectModel.Enums;assembly=Filtration.ObjectModel"
xmlns:utilities="clr-namespace:Filtration.Common.Utilities;assembly=Filtration.Common"
mc:Ignorable="d" mc:Ignorable="d"
d:DataContext="{d:DesignInstance Type=themeEditor:ThemeComponent}" d:DataContext="{d:DesignInstance Type=themeEditor:ThemeComponent}"
d:DesignHeight="100" d:DesignWidth="200"> d:DesignHeight="100" d:DesignWidth="200">
@@ -63,8 +64,8 @@
<ContentControl Grid.Row="2" Content="{Binding Mode=OneWay}"> <ContentControl Grid.Row="2" Content="{Binding Mode=OneWay}">
<ContentControl.Resources> <ContentControl.Resources>
<!-- Color Theme Template --> <!-- Color Theme Template -->
<DataTemplate DataType="{x:Type themeEditor:ColorThemeComponent}"> <DataTemplate DataType="{x:Type themeEditor:ColorThemeComponent}">
<xctk:ColorPicker SelectedColor="{Binding Color}" /> <xctk:ColorPicker SelectedColor="{Binding Color}" AvailableColors="{x:Static utilities:PathOfExileColors.DefaultColors}" ShowAvailableColors="True" AvailableColorsHeader="Path of Exile Colors" MouseDown="ColorPicker_OnMouseDown" />
</DataTemplate> </DataTemplate>
<!-- Integer Theme Template --> <!-- Integer Theme Template -->

View File

@@ -1,4 +1,6 @@
namespace Filtration.ThemeEditor.Views using System.Windows.Input;
namespace Filtration.ThemeEditor.Views
{ {
public partial class ThemeComponentControl public partial class ThemeComponentControl
{ {
@@ -6,5 +8,13 @@
{ {
InitializeComponent(); InitializeComponent();
} }
private void ColorPicker_OnMouseDown(object sender, MouseButtonEventArgs e)
{
// For some reason if we don't mark OnMouseDown events as handled for this control
// it ignores them and they end up getting picked up by the parent ListBoxItem instead,
// resulting in the Advanced tab not being clickable.
e.Handled = true;
}
} }
} }

View File

@@ -29,50 +29,48 @@
</ResourceDictionary> </ResourceDictionary>
</UserControl.Resources> </UserControl.Resources>
<Grid Margin="10"> <Grid Margin="10">
<ScrollViewer HorizontalScrollBarVisibility="Disabled"> <ListView ItemsSource="{Binding Source={StaticResource ComponentsViewSource}}"
<ListView ItemsSource="{Binding Source={StaticResource ComponentsViewSource}}"
SelectedItem="{Binding SelectedThemeComponent}" SelectedItem="{Binding SelectedThemeComponent}"
Margin="5" Margin="5"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"> ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListView.Resources> <ListView.Resources>
<Style TargetType="ListViewItem"> <Style TargetType="ListViewItem">
<Setter Property="FocusVisualStyle" Value="{x:Null}" /> <Setter Property="FocusVisualStyle" Value="{x:Null}" />
<Setter Property="Template"> <Setter Property="Template">
<Setter.Value> <Setter.Value>
<ControlTemplate TargetType="ListViewItem"> <ControlTemplate TargetType="ListViewItem">
<Border Name="Border" BorderBrush="Black" Background="White" BorderThickness="1" CornerRadius="3" Margin="2" SnapsToDevicePixels="true"> <Border Name="Border" BorderBrush="Black" Background="White" BorderThickness="1" CornerRadius="3" Margin="2" SnapsToDevicePixels="true">
<ContentPresenter /> <ContentPresenter />
</Border> </Border>
<ControlTemplate.Triggers> <ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="true"> <Trigger Property="IsSelected" Value="true">
<Setter TargetName="Border" Property="Background" Value="#A9BDD8"/> <Setter TargetName="Border" Property="Background" Value="#A9BDD8"/>
</Trigger> </Trigger>
</ControlTemplate.Triggers> </ControlTemplate.Triggers>
</ControlTemplate> </ControlTemplate>
</Setter.Value> </Setter.Value>
</Setter> </Setter>
</Style> </Style>
</ListView.Resources> </ListView.Resources>
<ListView.ItemsPanel> <ListView.ItemsPanel>
<ItemsPanelTemplate> <ItemsPanelTemplate>
<WrapPanel /> <WrapPanel />
</ItemsPanelTemplate> </ItemsPanelTemplate>
</ListView.ItemsPanel> </ListView.ItemsPanel>
<ListView.GroupStyle> <ListView.GroupStyle>
<GroupStyle> <GroupStyle>
<GroupStyle.HeaderTemplate> <GroupStyle.HeaderTemplate>
<DataTemplate> <DataTemplate>
<TextBlock Margin="7,5,0,0" FontWeight="Bold" FontSize="15" Text="{Binding Path=Name, Converter={StaticResource ThemeComponentTypeToStringConverter}}"/> <TextBlock Margin="7,5,0,0" FontWeight="Bold" FontSize="15" Text="{Binding Path=Name, Converter={StaticResource ThemeComponentTypeToStringConverter}}"/>
</DataTemplate> </DataTemplate>
</GroupStyle.HeaderTemplate> </GroupStyle.HeaderTemplate>
</GroupStyle> </GroupStyle>
</ListView.GroupStyle> </ListView.GroupStyle>
<ListView.ItemTemplate> <ListView.ItemTemplate>
<DataTemplate> <DataTemplate>
<views:ThemeComponentControl DataContext="{Binding}" Margin="10,5,10,5" /> <views:ThemeComponentControl DataContext="{Binding}" Margin="10,5,10,5" />
</DataTemplate> </DataTemplate>
</ListView.ItemTemplate> </ListView.ItemTemplate>
</ListView> </ListView>
</ScrollViewer>
</Grid> </Grid>
</UserControl> </UserControl>

View File

@@ -1,445 +1,438 @@
 
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15 # Visual Studio 15
VisualStudioVersion = 15.1 VisualStudioVersion = 15.1
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration", "Filtration\Filtration.csproj", "{55E0A34C-E039-43D7-A024-A4045401CDDA}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration", "Filtration\Filtration.csproj", "{55E0A34C-E039-43D7-A024-A4045401CDDA}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.Tests", "Filtration.Tests\Filtration.Tests.csproj", "{E0693972-72C5-4E05-A9C5-A5943E4015C6}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.Tests", "Filtration.Tests\Filtration.Tests.csproj", "{E0693972-72C5-4E05-A9C5-A5943E4015C6}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.ObjectModel", "Filtration.ObjectModel\Filtration.ObjectModel.csproj", "{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.ObjectModel", "Filtration.ObjectModel\Filtration.ObjectModel.csproj", "{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.ObjectModel.Tests", "Filtration.ObjectModel.Tests\Filtration.ObjectModel.Tests.csproj", "{537BE676-2FF6-4995-B05B-9CFACE852EC9}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.ObjectModel.Tests", "Filtration.ObjectModel.Tests\Filtration.ObjectModel.Tests.csproj", "{537BE676-2FF6-4995-B05B-9CFACE852EC9}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.ThemeEditor", "Filtration.ThemeEditor\Filtration.ThemeEditor.csproj", "{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.ThemeEditor", "Filtration.ThemeEditor\Filtration.ThemeEditor.csproj", "{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.ThemeEditor.Tests", "Filtration.ThemeEditor.Tests\Filtration.ThemeEditor.Tests.csproj", "{450AC313-BF25-4BFD-A066-9F39F026FDCF}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.ThemeEditor.Tests", "Filtration.ThemeEditor.Tests\Filtration.ThemeEditor.Tests.csproj", "{450AC313-BF25-4BFD-A066-9F39F026FDCF}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.Interface", "Filtration.Interface\Filtration.Interface.csproj", "{0F333344-7695-47B2-B0E6-172E4DE74819}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.Interface", "Filtration.Interface\Filtration.Interface.csproj", "{0F333344-7695-47B2-B0E6-172E4DE74819}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.Common", "Filtration.Common\Filtration.Common.csproj", "{8CB44F28-2956-4C2A-9314-72727262EDD4}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.Common", "Filtration.Common\Filtration.Common.csproj", "{8CB44F28-2956-4C2A-9314-72727262EDD4}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.Common.Tests", "Filtration.Common.Tests\Filtration.Common.Tests.csproj", "{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.Common.Tests", "Filtration.Common.Tests\Filtration.Common.Tests.csproj", "{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.ItemFilterPreview", "Filtration.ItemFilterPreview\Filtration.ItemFilterPreview.csproj", "{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.ItemFilterPreview", "Filtration.ItemFilterPreview\Filtration.ItemFilterPreview.csproj", "{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.ItemFilterPreview.Tests", "Filtration.ItemFilterPreview.Tests\Filtration.ItemFilterPreview.Tests.csproj", "{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.ItemFilterPreview.Tests", "Filtration.ItemFilterPreview.Tests\Filtration.ItemFilterPreview.Tests.csproj", "{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.Parser", "Filtration.Parser\Filtration.Parser.csproj", "{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.Parser", "Filtration.Parser\Filtration.Parser.csproj", "{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.Parser.Interface", "Filtration.Parser.Interface\Filtration.Parser.Interface.csproj", "{46383F20-02DF-48B4-B092-9088FA4ACD5A}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.Parser.Interface", "Filtration.Parser.Interface\Filtration.Parser.Interface.csproj", "{46383F20-02DF-48B4-B092-9088FA4ACD5A}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.Parser.Tests", "Filtration.Parser.Tests\Filtration.Parser.Tests.csproj", "{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.Parser.Tests", "Filtration.Parser.Tests\Filtration.Parser.Tests.csproj", "{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.ItemFilterPreview.Data", "Filtration.ItemFilterPreview.Data\Filtration.ItemFilterPreview.Data.csproj", "{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.ItemFilterPreview.Data", "Filtration.ItemFilterPreview.Data\Filtration.ItemFilterPreview.Data.csproj", "{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.ItemFilterPreview.Data.Tests", "Filtration.ItemFilterPreview.Data.Tests\Filtration.ItemFilterPreview.Data.Tests.csproj", "{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.ItemFilterPreview.Data.Tests", "Filtration.ItemFilterPreview.Data.Tests\Filtration.ItemFilterPreview.Data.Tests.csproj", "{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
Debug|ARM = Debug|ARM Debug|ARM = Debug|ARM
Debug|x64 = Debug|x64 Debug|x64 = Debug|x64
Debug|x86 = Debug|x86 Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU Release|Any CPU = Release|Any CPU
Release|ARM = Release|ARM Release|ARM = Release|ARM
Release|x64 = Release|x64 Release|x64 = Release|x64
Release|x86 = Release|x86 Release|x86 = Release|x86
SquirrelReleasify|Any CPU = SquirrelReleasify|Any CPU SquirrelReleasify|Any CPU = SquirrelReleasify|Any CPU
SquirrelReleasify|ARM = SquirrelReleasify|ARM SquirrelReleasify|ARM = SquirrelReleasify|ARM
SquirrelReleasify|x64 = SquirrelReleasify|x64 SquirrelReleasify|x64 = SquirrelReleasify|x64
SquirrelReleasify|x86 = SquirrelReleasify|x86 SquirrelReleasify|x86 = SquirrelReleasify|x86
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|Any CPU.Build.0 = Debug|Any CPU {55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|ARM.ActiveCfg = Debug|Any CPU {55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|ARM.ActiveCfg = Debug|Any CPU
{55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|ARM.Build.0 = Debug|Any CPU {55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|ARM.Build.0 = Debug|Any CPU
{55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|x64.ActiveCfg = Debug|Any CPU {55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|x64.ActiveCfg = Debug|Any CPU
{55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|x64.Build.0 = Debug|Any CPU {55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|x64.Build.0 = Debug|Any CPU
{55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|x86.ActiveCfg = Debug|Any CPU {55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|x86.ActiveCfg = Debug|Any CPU
{55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|x86.Build.0 = Debug|Any CPU {55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|x86.Build.0 = Debug|Any CPU
{55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|Any CPU.ActiveCfg = Release|Any CPU {55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|Any CPU.Build.0 = Release|Any CPU {55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|Any CPU.Build.0 = Release|Any CPU
{55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|ARM.ActiveCfg = Release|Any CPU {55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|ARM.ActiveCfg = Release|Any CPU
{55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|ARM.Build.0 = Release|Any CPU {55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|ARM.Build.0 = Release|Any CPU
{55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|x64.ActiveCfg = Release|Any CPU {55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|x64.ActiveCfg = Release|Any CPU
{55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|x64.Build.0 = Release|Any CPU {55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|x64.Build.0 = Release|Any CPU
{55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|x86.ActiveCfg = Release|Any CPU {55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|x86.ActiveCfg = Release|Any CPU
{55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|x86.Build.0 = Release|Any CPU {55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|x86.Build.0 = Release|Any CPU
{55E0A34C-E039-43D7-A024-A4045401CDDA}.SquirrelReleasify|Any CPU.ActiveCfg = Releasify|Any CPU {55E0A34C-E039-43D7-A024-A4045401CDDA}.SquirrelReleasify|Any CPU.ActiveCfg = Releasify|Any CPU
{55E0A34C-E039-43D7-A024-A4045401CDDA}.SquirrelReleasify|Any CPU.Build.0 = Releasify|Any CPU {55E0A34C-E039-43D7-A024-A4045401CDDA}.SquirrelReleasify|Any CPU.Build.0 = Releasify|Any CPU
{55E0A34C-E039-43D7-A024-A4045401CDDA}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU {55E0A34C-E039-43D7-A024-A4045401CDDA}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
{55E0A34C-E039-43D7-A024-A4045401CDDA}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU {55E0A34C-E039-43D7-A024-A4045401CDDA}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
{55E0A34C-E039-43D7-A024-A4045401CDDA}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU {55E0A34C-E039-43D7-A024-A4045401CDDA}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
{55E0A34C-E039-43D7-A024-A4045401CDDA}.SquirrelReleasify|x64.Build.0 = Release|Any CPU {55E0A34C-E039-43D7-A024-A4045401CDDA}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
{55E0A34C-E039-43D7-A024-A4045401CDDA}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU {55E0A34C-E039-43D7-A024-A4045401CDDA}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
{55E0A34C-E039-43D7-A024-A4045401CDDA}.SquirrelReleasify|x86.Build.0 = Release|Any CPU {55E0A34C-E039-43D7-A024-A4045401CDDA}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|Any CPU.Build.0 = Debug|Any CPU {E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|ARM.ActiveCfg = Debug|Any CPU {E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|ARM.ActiveCfg = Debug|Any CPU
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|ARM.Build.0 = Debug|Any CPU {E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|ARM.Build.0 = Debug|Any CPU
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|x64.ActiveCfg = Debug|Any CPU {E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|x64.ActiveCfg = Debug|Any CPU
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|x64.Build.0 = Debug|Any CPU {E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|x64.Build.0 = Debug|Any CPU
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|x86.ActiveCfg = Debug|Any CPU {E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|x86.ActiveCfg = Debug|Any CPU
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|x86.Build.0 = Debug|Any CPU {E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|x86.Build.0 = Debug|Any CPU
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|Any CPU.ActiveCfg = Release|Any CPU {E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|Any CPU.Build.0 = Release|Any CPU {E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|Any CPU.Build.0 = Release|Any CPU
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|ARM.ActiveCfg = Release|Any CPU {E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|ARM.ActiveCfg = Release|Any CPU
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|ARM.Build.0 = Release|Any CPU {E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|ARM.Build.0 = Release|Any CPU
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|x64.ActiveCfg = Release|Any CPU {E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|x64.ActiveCfg = Release|Any CPU
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|x64.Build.0 = Release|Any CPU {E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|x64.Build.0 = Release|Any CPU
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|x86.ActiveCfg = Release|Any CPU {E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|x86.ActiveCfg = Release|Any CPU
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|x86.Build.0 = Release|Any CPU {E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|x86.Build.0 = Release|Any CPU
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU {E0693972-72C5-4E05-A9C5-A5943E4015C6}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU {E0693972-72C5-4E05-A9C5-A5943E4015C6}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU {E0693972-72C5-4E05-A9C5-A5943E4015C6}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU {E0693972-72C5-4E05-A9C5-A5943E4015C6}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU {E0693972-72C5-4E05-A9C5-A5943E4015C6}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.SquirrelReleasify|x64.Build.0 = Release|Any CPU {E0693972-72C5-4E05-A9C5-A5943E4015C6}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU {E0693972-72C5-4E05-A9C5-A5943E4015C6}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.SquirrelReleasify|x86.Build.0 = Release|Any CPU {4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|Any CPU.Build.0 = Debug|Any CPU {4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|ARM.ActiveCfg = Debug|Any CPU
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|ARM.ActiveCfg = Debug|Any CPU {4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|ARM.Build.0 = Debug|Any CPU
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|ARM.Build.0 = Debug|Any CPU {4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|x64.ActiveCfg = Debug|Any CPU
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|x64.ActiveCfg = Debug|Any CPU {4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|x64.Build.0 = Debug|Any CPU
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|x64.Build.0 = Debug|Any CPU {4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|x86.ActiveCfg = Debug|Any CPU
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|x86.ActiveCfg = Debug|Any CPU {4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|x86.Build.0 = Debug|Any CPU
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|x86.Build.0 = Debug|Any CPU {4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|Any CPU.ActiveCfg = Release|Any CPU {4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|Any CPU.Build.0 = Release|Any CPU
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|Any CPU.Build.0 = Release|Any CPU {4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|ARM.ActiveCfg = Release|Any CPU
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|ARM.ActiveCfg = Release|Any CPU {4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|ARM.Build.0 = Release|Any CPU
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|ARM.Build.0 = Release|Any CPU {4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|x64.ActiveCfg = Release|Any CPU
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|x64.ActiveCfg = Release|Any CPU {4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|x64.Build.0 = Release|Any CPU
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|x64.Build.0 = Release|Any CPU {4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|x86.ActiveCfg = Release|Any CPU
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|x86.ActiveCfg = Release|Any CPU {4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|x86.Build.0 = Release|Any CPU
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|x86.Build.0 = Release|Any CPU {4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU {4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU {4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU {4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU {4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU {4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.SquirrelReleasify|x64.Build.0 = Release|Any CPU {4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU {4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.SquirrelReleasify|x86.Build.0 = Release|Any CPU {537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|Any CPU.Build.0 = Debug|Any CPU {537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|ARM.ActiveCfg = Debug|Any CPU
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|ARM.ActiveCfg = Debug|Any CPU {537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|ARM.Build.0 = Debug|Any CPU
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|ARM.Build.0 = Debug|Any CPU {537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|x64.ActiveCfg = Debug|Any CPU
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|x64.ActiveCfg = Debug|Any CPU {537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|x64.Build.0 = Debug|Any CPU
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|x64.Build.0 = Debug|Any CPU {537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|x86.ActiveCfg = Debug|Any CPU
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|x86.ActiveCfg = Debug|Any CPU {537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|x86.Build.0 = Debug|Any CPU
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|x86.Build.0 = Debug|Any CPU {537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|Any CPU.ActiveCfg = Release|Any CPU {537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|Any CPU.Build.0 = Release|Any CPU
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|Any CPU.Build.0 = Release|Any CPU {537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|ARM.ActiveCfg = Release|Any CPU
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|ARM.ActiveCfg = Release|Any CPU {537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|ARM.Build.0 = Release|Any CPU
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|ARM.Build.0 = Release|Any CPU {537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|x64.ActiveCfg = Release|Any CPU
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|x64.ActiveCfg = Release|Any CPU {537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|x64.Build.0 = Release|Any CPU
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|x64.Build.0 = Release|Any CPU {537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|x86.ActiveCfg = Release|Any CPU
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|x86.ActiveCfg = Release|Any CPU {537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|x86.Build.0 = Release|Any CPU
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|x86.Build.0 = Release|Any CPU {537BE676-2FF6-4995-B05B-9CFACE852EC9}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU {537BE676-2FF6-4995-B05B-9CFACE852EC9}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU {537BE676-2FF6-4995-B05B-9CFACE852EC9}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU {537BE676-2FF6-4995-B05B-9CFACE852EC9}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU {537BE676-2FF6-4995-B05B-9CFACE852EC9}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU {537BE676-2FF6-4995-B05B-9CFACE852EC9}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.SquirrelReleasify|x64.Build.0 = Release|Any CPU {537BE676-2FF6-4995-B05B-9CFACE852EC9}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU {41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.SquirrelReleasify|x86.Build.0 = Release|Any CPU {41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|Any CPU.Build.0 = Debug|Any CPU
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|ARM.ActiveCfg = Debug|Any CPU
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|Any CPU.Build.0 = Debug|Any CPU {41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|ARM.Build.0 = Debug|Any CPU
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|ARM.ActiveCfg = Debug|Any CPU {41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|x64.ActiveCfg = Debug|Any CPU
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|ARM.Build.0 = Debug|Any CPU {41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|x64.Build.0 = Debug|Any CPU
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|x64.ActiveCfg = Debug|Any CPU {41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|x86.ActiveCfg = Debug|Any CPU
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|x64.Build.0 = Debug|Any CPU {41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|x86.Build.0 = Debug|Any CPU
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|x86.ActiveCfg = Debug|Any CPU {41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|Any CPU.ActiveCfg = Release|Any CPU
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|x86.Build.0 = Debug|Any CPU {41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|Any CPU.Build.0 = Release|Any CPU
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|Any CPU.ActiveCfg = Release|Any CPU {41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|ARM.ActiveCfg = Release|Any CPU
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|Any CPU.Build.0 = Release|Any CPU {41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|ARM.Build.0 = Release|Any CPU
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|ARM.ActiveCfg = Release|Any CPU {41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|x64.ActiveCfg = Release|Any CPU
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|ARM.Build.0 = Release|Any CPU {41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|x64.Build.0 = Release|Any CPU
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|x64.ActiveCfg = Release|Any CPU {41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|x86.ActiveCfg = Release|Any CPU
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|x64.Build.0 = Release|Any CPU {41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|x86.Build.0 = Release|Any CPU
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|x86.ActiveCfg = Release|Any CPU {41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|x86.Build.0 = Release|Any CPU {41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU {41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU {41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU {41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU {41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU {41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.SquirrelReleasify|x64.Build.0 = Release|Any CPU {41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU {450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.SquirrelReleasify|x86.Build.0 = Release|Any CPU {450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|ARM.ActiveCfg = Debug|Any CPU
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|Any CPU.Build.0 = Debug|Any CPU {450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|ARM.Build.0 = Debug|Any CPU
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|ARM.ActiveCfg = Debug|Any CPU {450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|x64.ActiveCfg = Debug|Any CPU
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|ARM.Build.0 = Debug|Any CPU {450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|x64.Build.0 = Debug|Any CPU
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|x64.ActiveCfg = Debug|Any CPU {450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|x86.ActiveCfg = Debug|Any CPU
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|x64.Build.0 = Debug|Any CPU {450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|x86.Build.0 = Debug|Any CPU
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|x86.ActiveCfg = Debug|Any CPU {450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|x86.Build.0 = Debug|Any CPU {450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|Any CPU.Build.0 = Release|Any CPU
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|Any CPU.ActiveCfg = Release|Any CPU {450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|ARM.ActiveCfg = Release|Any CPU
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|Any CPU.Build.0 = Release|Any CPU {450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|ARM.Build.0 = Release|Any CPU
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|ARM.ActiveCfg = Release|Any CPU {450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|x64.ActiveCfg = Release|Any CPU
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|ARM.Build.0 = Release|Any CPU {450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|x64.Build.0 = Release|Any CPU
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|x64.ActiveCfg = Release|Any CPU {450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|x86.ActiveCfg = Release|Any CPU
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|x64.Build.0 = Release|Any CPU {450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|x86.Build.0 = Release|Any CPU
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|x86.ActiveCfg = Release|Any CPU {450AC313-BF25-4BFD-A066-9F39F026FDCF}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|x86.Build.0 = Release|Any CPU {450AC313-BF25-4BFD-A066-9F39F026FDCF}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU {450AC313-BF25-4BFD-A066-9F39F026FDCF}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU {450AC313-BF25-4BFD-A066-9F39F026FDCF}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU {450AC313-BF25-4BFD-A066-9F39F026FDCF}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU {450AC313-BF25-4BFD-A066-9F39F026FDCF}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU {450AC313-BF25-4BFD-A066-9F39F026FDCF}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.SquirrelReleasify|x64.Build.0 = Release|Any CPU {0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU {0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|Any CPU.Build.0 = Debug|Any CPU
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.SquirrelReleasify|x86.Build.0 = Release|Any CPU {0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|ARM.ActiveCfg = Debug|Any CPU
{0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|ARM.Build.0 = Debug|Any CPU
{0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|Any CPU.Build.0 = Debug|Any CPU {0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|x64.ActiveCfg = Debug|Any CPU
{0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|ARM.ActiveCfg = Debug|Any CPU {0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|x64.Build.0 = Debug|Any CPU
{0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|ARM.Build.0 = Debug|Any CPU {0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|x86.ActiveCfg = Debug|Any CPU
{0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|x64.ActiveCfg = Debug|Any CPU {0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|x86.Build.0 = Debug|Any CPU
{0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|x64.Build.0 = Debug|Any CPU {0F333344-7695-47B2-B0E6-172E4DE74819}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|x86.ActiveCfg = Debug|Any CPU {0F333344-7695-47B2-B0E6-172E4DE74819}.Release|Any CPU.Build.0 = Release|Any CPU
{0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|x86.Build.0 = Debug|Any CPU {0F333344-7695-47B2-B0E6-172E4DE74819}.Release|ARM.ActiveCfg = Release|Any CPU
{0F333344-7695-47B2-B0E6-172E4DE74819}.Release|Any CPU.ActiveCfg = Release|Any CPU {0F333344-7695-47B2-B0E6-172E4DE74819}.Release|ARM.Build.0 = Release|Any CPU
{0F333344-7695-47B2-B0E6-172E4DE74819}.Release|Any CPU.Build.0 = Release|Any CPU {0F333344-7695-47B2-B0E6-172E4DE74819}.Release|x64.ActiveCfg = Release|Any CPU
{0F333344-7695-47B2-B0E6-172E4DE74819}.Release|ARM.ActiveCfg = Release|Any CPU {0F333344-7695-47B2-B0E6-172E4DE74819}.Release|x64.Build.0 = Release|Any CPU
{0F333344-7695-47B2-B0E6-172E4DE74819}.Release|ARM.Build.0 = Release|Any CPU {0F333344-7695-47B2-B0E6-172E4DE74819}.Release|x86.ActiveCfg = Release|Any CPU
{0F333344-7695-47B2-B0E6-172E4DE74819}.Release|x64.ActiveCfg = Release|Any CPU {0F333344-7695-47B2-B0E6-172E4DE74819}.Release|x86.Build.0 = Release|Any CPU
{0F333344-7695-47B2-B0E6-172E4DE74819}.Release|x64.Build.0 = Release|Any CPU {0F333344-7695-47B2-B0E6-172E4DE74819}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
{0F333344-7695-47B2-B0E6-172E4DE74819}.Release|x86.ActiveCfg = Release|Any CPU {0F333344-7695-47B2-B0E6-172E4DE74819}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU
{0F333344-7695-47B2-B0E6-172E4DE74819}.Release|x86.Build.0 = Release|Any CPU {0F333344-7695-47B2-B0E6-172E4DE74819}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
{0F333344-7695-47B2-B0E6-172E4DE74819}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU {0F333344-7695-47B2-B0E6-172E4DE74819}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
{0F333344-7695-47B2-B0E6-172E4DE74819}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU {0F333344-7695-47B2-B0E6-172E4DE74819}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
{0F333344-7695-47B2-B0E6-172E4DE74819}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU {0F333344-7695-47B2-B0E6-172E4DE74819}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
{0F333344-7695-47B2-B0E6-172E4DE74819}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU {0F333344-7695-47B2-B0E6-172E4DE74819}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
{0F333344-7695-47B2-B0E6-172E4DE74819}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU {0F333344-7695-47B2-B0E6-172E4DE74819}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
{0F333344-7695-47B2-B0E6-172E4DE74819}.SquirrelReleasify|x64.Build.0 = Release|Any CPU {8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0F333344-7695-47B2-B0E6-172E4DE74819}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU {8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0F333344-7695-47B2-B0E6-172E4DE74819}.SquirrelReleasify|x86.Build.0 = Release|Any CPU {8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|ARM.ActiveCfg = Debug|Any CPU
{8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|ARM.Build.0 = Debug|Any CPU
{8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|Any CPU.Build.0 = Debug|Any CPU {8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|x64.ActiveCfg = Debug|Any CPU
{8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|ARM.ActiveCfg = Debug|Any CPU {8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|x64.Build.0 = Debug|Any CPU
{8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|ARM.Build.0 = Debug|Any CPU {8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|x86.ActiveCfg = Debug|Any CPU
{8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|x64.ActiveCfg = Debug|Any CPU {8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|x86.Build.0 = Debug|Any CPU
{8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|x64.Build.0 = Debug|Any CPU {8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|x86.ActiveCfg = Debug|Any CPU {8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|Any CPU.Build.0 = Release|Any CPU
{8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|x86.Build.0 = Debug|Any CPU {8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|ARM.ActiveCfg = Release|Any CPU
{8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|Any CPU.ActiveCfg = Release|Any CPU {8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|ARM.Build.0 = Release|Any CPU
{8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|Any CPU.Build.0 = Release|Any CPU {8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|x64.ActiveCfg = Release|Any CPU
{8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|ARM.ActiveCfg = Release|Any CPU {8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|x64.Build.0 = Release|Any CPU
{8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|ARM.Build.0 = Release|Any CPU {8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|x86.ActiveCfg = Release|Any CPU
{8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|x64.ActiveCfg = Release|Any CPU {8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|x86.Build.0 = Release|Any CPU
{8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|x64.Build.0 = Release|Any CPU {8CB44F28-2956-4C2A-9314-72727262EDD4}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
{8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|x86.ActiveCfg = Release|Any CPU {8CB44F28-2956-4C2A-9314-72727262EDD4}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU
{8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|x86.Build.0 = Release|Any CPU {8CB44F28-2956-4C2A-9314-72727262EDD4}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
{8CB44F28-2956-4C2A-9314-72727262EDD4}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU {8CB44F28-2956-4C2A-9314-72727262EDD4}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
{8CB44F28-2956-4C2A-9314-72727262EDD4}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU {8CB44F28-2956-4C2A-9314-72727262EDD4}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
{8CB44F28-2956-4C2A-9314-72727262EDD4}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU {8CB44F28-2956-4C2A-9314-72727262EDD4}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
{8CB44F28-2956-4C2A-9314-72727262EDD4}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU {8CB44F28-2956-4C2A-9314-72727262EDD4}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
{8CB44F28-2956-4C2A-9314-72727262EDD4}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU {8CB44F28-2956-4C2A-9314-72727262EDD4}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
{8CB44F28-2956-4C2A-9314-72727262EDD4}.SquirrelReleasify|x64.Build.0 = Release|Any CPU {1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8CB44F28-2956-4C2A-9314-72727262EDD4}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU {1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8CB44F28-2956-4C2A-9314-72727262EDD4}.SquirrelReleasify|x86.Build.0 = Release|Any CPU {1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|ARM.ActiveCfg = Debug|Any CPU
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|ARM.Build.0 = Debug|Any CPU
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|Any CPU.Build.0 = Debug|Any CPU {1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|x64.ActiveCfg = Debug|Any CPU
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|ARM.ActiveCfg = Debug|Any CPU {1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|x64.Build.0 = Debug|Any CPU
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|ARM.Build.0 = Debug|Any CPU {1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|x86.ActiveCfg = Debug|Any CPU
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|x64.ActiveCfg = Debug|Any CPU {1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|x86.Build.0 = Debug|Any CPU
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|x64.Build.0 = Debug|Any CPU {1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|x86.ActiveCfg = Debug|Any CPU {1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|Any CPU.Build.0 = Release|Any CPU
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|x86.Build.0 = Debug|Any CPU {1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|ARM.ActiveCfg = Release|Any CPU
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|Any CPU.ActiveCfg = Release|Any CPU {1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|ARM.Build.0 = Release|Any CPU
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|Any CPU.Build.0 = Release|Any CPU {1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|x64.ActiveCfg = Release|Any CPU
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|ARM.ActiveCfg = Release|Any CPU {1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|x64.Build.0 = Release|Any CPU
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|ARM.Build.0 = Release|Any CPU {1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|x86.ActiveCfg = Release|Any CPU
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|x64.ActiveCfg = Release|Any CPU {1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|x86.Build.0 = Release|Any CPU
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|x64.Build.0 = Release|Any CPU {1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|x86.ActiveCfg = Release|Any CPU {1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|x86.Build.0 = Release|Any CPU {1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU {1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU {1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU {1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU {1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU {3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.SquirrelReleasify|x64.Build.0 = Release|Any CPU {3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU {3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|ARM.ActiveCfg = Debug|Any CPU
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.SquirrelReleasify|x86.Build.0 = Release|Any CPU {3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|ARM.Build.0 = Debug|Any CPU
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|x64.ActiveCfg = Debug|Any CPU
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|Any CPU.Build.0 = Debug|Any CPU {3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|x64.Build.0 = Debug|Any CPU
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|ARM.ActiveCfg = Debug|Any CPU {3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|x86.ActiveCfg = Debug|Any CPU
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|ARM.Build.0 = Debug|Any CPU {3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|x86.Build.0 = Debug|Any CPU
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|x64.ActiveCfg = Debug|Any CPU {3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|x64.Build.0 = Debug|Any CPU {3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|Any CPU.Build.0 = Release|Any CPU
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|x86.ActiveCfg = Debug|Any CPU {3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|ARM.ActiveCfg = Release|Any CPU
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|x86.Build.0 = Debug|Any CPU {3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|ARM.Build.0 = Release|Any CPU
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|Any CPU.ActiveCfg = Release|Any CPU {3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|x64.ActiveCfg = Release|Any CPU
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|Any CPU.Build.0 = Release|Any CPU {3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|x64.Build.0 = Release|Any CPU
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|ARM.ActiveCfg = Release|Any CPU {3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|x86.ActiveCfg = Release|Any CPU
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|ARM.Build.0 = Release|Any CPU {3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|x86.Build.0 = Release|Any CPU
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|x64.ActiveCfg = Release|Any CPU {3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|x64.Build.0 = Release|Any CPU {3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|x86.ActiveCfg = Release|Any CPU {3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|x86.Build.0 = Release|Any CPU {3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU {3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU {3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU {3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU {3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU {58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.SquirrelReleasify|x64.Build.0 = Release|Any CPU {58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU {58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|ARM.ActiveCfg = Debug|Any CPU
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.SquirrelReleasify|x86.Build.0 = Release|Any CPU {58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|ARM.Build.0 = Debug|Any CPU
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|x64.ActiveCfg = Debug|Any CPU
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|Any CPU.Build.0 = Debug|Any CPU {58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|x64.Build.0 = Debug|Any CPU
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|ARM.ActiveCfg = Debug|Any CPU {58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|x86.ActiveCfg = Debug|Any CPU
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|ARM.Build.0 = Debug|Any CPU {58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|x86.Build.0 = Debug|Any CPU
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|x64.ActiveCfg = Debug|Any CPU {58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|Any CPU.ActiveCfg = Release|Any CPU
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|x64.Build.0 = Debug|Any CPU {58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|Any CPU.Build.0 = Release|Any CPU
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|x86.ActiveCfg = Debug|Any CPU {58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|ARM.ActiveCfg = Release|Any CPU
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|x86.Build.0 = Debug|Any CPU {58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|ARM.Build.0 = Release|Any CPU
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|Any CPU.ActiveCfg = Release|Any CPU {58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|x64.ActiveCfg = Release|Any CPU
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|Any CPU.Build.0 = Release|Any CPU {58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|x64.Build.0 = Release|Any CPU
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|ARM.ActiveCfg = Release|Any CPU {58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|x86.ActiveCfg = Release|Any CPU
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|ARM.Build.0 = Release|Any CPU {58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|x86.Build.0 = Release|Any CPU
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|x64.ActiveCfg = Release|Any CPU {58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|x64.Build.0 = Release|Any CPU {58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|x86.ActiveCfg = Release|Any CPU {58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|x86.Build.0 = Release|Any CPU {58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU {58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU {58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU {58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU {10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU {10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Debug|Any CPU.Build.0 = Debug|Any CPU
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.SquirrelReleasify|x64.Build.0 = Release|Any CPU {10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Debug|ARM.ActiveCfg = Debug|Any CPU
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU {10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Debug|ARM.Build.0 = Debug|Any CPU
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.SquirrelReleasify|x86.Build.0 = Release|Any CPU {10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Debug|x64.ActiveCfg = Debug|Any CPU
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Debug|x64.Build.0 = Debug|Any CPU
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Debug|Any CPU.Build.0 = Debug|Any CPU {10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Debug|x86.ActiveCfg = Debug|Any CPU
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Debug|ARM.ActiveCfg = Debug|Any CPU {10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Debug|x86.Build.0 = Debug|Any CPU
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Debug|ARM.Build.0 = Debug|Any CPU {10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Release|Any CPU.ActiveCfg = Release|Any CPU
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Debug|x64.ActiveCfg = Debug|Any CPU {10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Release|Any CPU.Build.0 = Release|Any CPU
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Debug|x64.Build.0 = Debug|Any CPU {10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Release|ARM.ActiveCfg = Release|Any CPU
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Debug|x86.ActiveCfg = Debug|Any CPU {10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Release|ARM.Build.0 = Release|Any CPU
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Debug|x86.Build.0 = Debug|Any CPU {10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Release|x64.ActiveCfg = Release|Any CPU
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Release|Any CPU.ActiveCfg = Release|Any CPU {10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Release|x64.Build.0 = Release|Any CPU
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Release|Any CPU.Build.0 = Release|Any CPU {10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Release|x86.ActiveCfg = Release|Any CPU
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Release|ARM.ActiveCfg = Release|Any CPU {10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Release|x86.Build.0 = Release|Any CPU
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Release|ARM.Build.0 = Release|Any CPU {10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Release|x64.ActiveCfg = Release|Any CPU {10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Release|x64.Build.0 = Release|Any CPU {10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Release|x86.ActiveCfg = Release|Any CPU {10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Release|x86.Build.0 = Release|Any CPU {10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU {10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU {10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU {10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU {46383F20-02DF-48B4-B092-9088FA4ACD5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU {46383F20-02DF-48B4-B092-9088FA4ACD5A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.SquirrelReleasify|x64.Build.0 = Release|Any CPU {46383F20-02DF-48B4-B092-9088FA4ACD5A}.Debug|ARM.ActiveCfg = Debug|Any CPU
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU {46383F20-02DF-48B4-B092-9088FA4ACD5A}.Debug|ARM.Build.0 = Debug|Any CPU
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.SquirrelReleasify|x86.Build.0 = Release|Any CPU {46383F20-02DF-48B4-B092-9088FA4ACD5A}.Debug|x64.ActiveCfg = Debug|Any CPU
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {46383F20-02DF-48B4-B092-9088FA4ACD5A}.Debug|x64.Build.0 = Debug|Any CPU
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.Debug|Any CPU.Build.0 = Debug|Any CPU {46383F20-02DF-48B4-B092-9088FA4ACD5A}.Debug|x86.ActiveCfg = Debug|Any CPU
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.Debug|ARM.ActiveCfg = Debug|Any CPU {46383F20-02DF-48B4-B092-9088FA4ACD5A}.Debug|x86.Build.0 = Debug|Any CPU
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.Debug|ARM.Build.0 = Debug|Any CPU {46383F20-02DF-48B4-B092-9088FA4ACD5A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.Debug|x64.ActiveCfg = Debug|Any CPU {46383F20-02DF-48B4-B092-9088FA4ACD5A}.Release|Any CPU.Build.0 = Release|Any CPU
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.Debug|x64.Build.0 = Debug|Any CPU {46383F20-02DF-48B4-B092-9088FA4ACD5A}.Release|ARM.ActiveCfg = Release|Any CPU
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.Debug|x86.ActiveCfg = Debug|Any CPU {46383F20-02DF-48B4-B092-9088FA4ACD5A}.Release|ARM.Build.0 = Release|Any CPU
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.Debug|x86.Build.0 = Debug|Any CPU {46383F20-02DF-48B4-B092-9088FA4ACD5A}.Release|x64.ActiveCfg = Release|Any CPU
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.Release|Any CPU.ActiveCfg = Release|Any CPU {46383F20-02DF-48B4-B092-9088FA4ACD5A}.Release|x64.Build.0 = Release|Any CPU
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.Release|Any CPU.Build.0 = Release|Any CPU {46383F20-02DF-48B4-B092-9088FA4ACD5A}.Release|x86.ActiveCfg = Release|Any CPU
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.Release|ARM.ActiveCfg = Release|Any CPU {46383F20-02DF-48B4-B092-9088FA4ACD5A}.Release|x86.Build.0 = Release|Any CPU
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.Release|ARM.Build.0 = Release|Any CPU {46383F20-02DF-48B4-B092-9088FA4ACD5A}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.Release|x64.ActiveCfg = Release|Any CPU {46383F20-02DF-48B4-B092-9088FA4ACD5A}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.Release|x64.Build.0 = Release|Any CPU {46383F20-02DF-48B4-B092-9088FA4ACD5A}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.Release|x86.ActiveCfg = Release|Any CPU {46383F20-02DF-48B4-B092-9088FA4ACD5A}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.Release|x86.Build.0 = Release|Any CPU {46383F20-02DF-48B4-B092-9088FA4ACD5A}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU {46383F20-02DF-48B4-B092-9088FA4ACD5A}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU {46383F20-02DF-48B4-B092-9088FA4ACD5A}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU {46383F20-02DF-48B4-B092-9088FA4ACD5A}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU {1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU {1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.SquirrelReleasify|x64.Build.0 = Release|Any CPU {1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Debug|ARM.ActiveCfg = Debug|Any CPU
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU {1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Debug|ARM.Build.0 = Debug|Any CPU
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.SquirrelReleasify|x86.Build.0 = Release|Any CPU {1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Debug|x64.ActiveCfg = Debug|Any CPU
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Debug|x64.Build.0 = Debug|Any CPU
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Debug|Any CPU.Build.0 = Debug|Any CPU {1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Debug|x86.ActiveCfg = Debug|Any CPU
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Debug|ARM.ActiveCfg = Debug|Any CPU {1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Debug|x86.Build.0 = Debug|Any CPU
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Debug|ARM.Build.0 = Debug|Any CPU {1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Debug|x64.ActiveCfg = Debug|Any CPU {1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Release|Any CPU.Build.0 = Release|Any CPU
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Debug|x64.Build.0 = Debug|Any CPU {1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Release|ARM.ActiveCfg = Release|Any CPU
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Debug|x86.ActiveCfg = Debug|Any CPU {1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Release|ARM.Build.0 = Release|Any CPU
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Debug|x86.Build.0 = Debug|Any CPU {1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Release|x64.ActiveCfg = Release|Any CPU
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Release|Any CPU.ActiveCfg = Release|Any CPU {1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Release|x64.Build.0 = Release|Any CPU
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Release|Any CPU.Build.0 = Release|Any CPU {1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Release|x86.ActiveCfg = Release|Any CPU
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Release|ARM.ActiveCfg = Release|Any CPU {1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Release|x86.Build.0 = Release|Any CPU
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Release|ARM.Build.0 = Release|Any CPU {1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Release|x64.ActiveCfg = Release|Any CPU {1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Release|x64.Build.0 = Release|Any CPU {1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Release|x86.ActiveCfg = Release|Any CPU {1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Release|x86.Build.0 = Release|Any CPU {1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU {1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU {1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU {855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU {855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU {855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Debug|ARM.ActiveCfg = Debug|Any CPU
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.SquirrelReleasify|x64.Build.0 = Release|Any CPU {855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Debug|ARM.Build.0 = Debug|Any CPU
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU {855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Debug|x64.ActiveCfg = Debug|Any CPU
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.SquirrelReleasify|x86.Build.0 = Release|Any CPU {855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Debug|x64.Build.0 = Debug|Any CPU
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Debug|x86.ActiveCfg = Debug|Any CPU
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Debug|Any CPU.Build.0 = Debug|Any CPU {855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Debug|x86.Build.0 = Debug|Any CPU
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Debug|ARM.ActiveCfg = Debug|Any CPU {855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Release|Any CPU.ActiveCfg = Release|Any CPU
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Debug|ARM.Build.0 = Debug|Any CPU {855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Release|Any CPU.Build.0 = Release|Any CPU
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Debug|x64.ActiveCfg = Debug|Any CPU {855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Release|ARM.ActiveCfg = Release|Any CPU
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Debug|x64.Build.0 = Debug|Any CPU {855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Release|ARM.Build.0 = Release|Any CPU
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Debug|x86.ActiveCfg = Debug|Any CPU {855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Release|x64.ActiveCfg = Release|Any CPU
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Debug|x86.Build.0 = Debug|Any CPU {855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Release|x64.Build.0 = Release|Any CPU
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Release|Any CPU.ActiveCfg = Release|Any CPU {855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Release|x86.ActiveCfg = Release|Any CPU
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Release|Any CPU.Build.0 = Release|Any CPU {855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Release|x86.Build.0 = Release|Any CPU
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Release|ARM.ActiveCfg = Release|Any CPU {855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Release|ARM.Build.0 = Release|Any CPU {855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Release|x64.ActiveCfg = Release|Any CPU {855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Release|x64.Build.0 = Release|Any CPU {855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Release|x86.ActiveCfg = Release|Any CPU {855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Release|x86.Build.0 = Release|Any CPU {855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU {855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU {855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU {7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU {7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU {7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Debug|ARM.ActiveCfg = Debug|Any CPU
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.SquirrelReleasify|x64.Build.0 = Release|Any CPU {7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Debug|ARM.Build.0 = Debug|Any CPU
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU {7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Debug|x64.ActiveCfg = Debug|Any CPU
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.SquirrelReleasify|x86.Build.0 = Release|Any CPU {7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Debug|x64.Build.0 = Debug|Any CPU
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Debug|x86.ActiveCfg = Debug|Any CPU
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Debug|Any CPU.Build.0 = Debug|Any CPU {7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Debug|x86.Build.0 = Debug|Any CPU
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Debug|ARM.ActiveCfg = Debug|Any CPU {7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Debug|ARM.Build.0 = Debug|Any CPU {7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Release|Any CPU.Build.0 = Release|Any CPU
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Debug|x64.ActiveCfg = Debug|Any CPU {7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Release|ARM.ActiveCfg = Release|Any CPU
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Debug|x64.Build.0 = Debug|Any CPU {7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Release|ARM.Build.0 = Release|Any CPU
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Debug|x86.ActiveCfg = Debug|Any CPU {7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Release|x64.ActiveCfg = Release|Any CPU
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Debug|x86.Build.0 = Debug|Any CPU {7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Release|x64.Build.0 = Release|Any CPU
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Release|Any CPU.ActiveCfg = Release|Any CPU {7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Release|x86.ActiveCfg = Release|Any CPU
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Release|Any CPU.Build.0 = Release|Any CPU {7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Release|x86.Build.0 = Release|Any CPU
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Release|ARM.ActiveCfg = Release|Any CPU {7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Release|ARM.Build.0 = Release|Any CPU {7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Release|x64.ActiveCfg = Release|Any CPU {7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Release|x64.Build.0 = Release|Any CPU {7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Release|x86.ActiveCfg = Release|Any CPU {7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Release|x86.Build.0 = Release|Any CPU {7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU {7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU EndGlobalSection
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU GlobalSection(SolutionProperties) = preSolution
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU HideSolutionNode = FALSE
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU EndGlobalSection
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.SquirrelReleasify|x64.Build.0 = Release|Any CPU GlobalSection(ExtensibilityGlobals) = postSolution
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU SolutionGuid = {8A170BBA-F99C-4192-9467-A5669B1DE126}
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.SquirrelReleasify|x86.Build.0 = Release|Any CPU EndGlobalSection
EndGlobalSection EndGlobal
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {8A170BBA-F99C-4192-9467-A5669B1DE126}
EndGlobalSection
EndGlobal

View File

@@ -1,95 +1,67 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<configuration> <configuration>
<configSections> <configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="Filtration.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" /> <section name="Filtration.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup> </sectionGroup>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> </configSections>
<section name="Filtration.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> <startup>
</sectionGroup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</configSections> </startup>
<startup> <userSettings>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> <Filtration.Properties.Settings>
</startup> <setting name="DefaultFilterDirectory" serializeAs="String">
<userSettings> <value />
<Filtration.Properties.Settings> </setting>
<setting name="DefaultFilterDirectory" serializeAs="String"> <setting name="ExtraLineBetweenBlocks" serializeAs="String">
<value /> <value>True</value>
</setting> </setting>
<setting name="ExtraLineBetweenBlocks" serializeAs="String"> <setting name="DownloadPrereleaseUpdates" serializeAs="String">
<value>True</value> <value>False</value>
</setting> </setting>
<setting name="SuppressUpdatesUpToVersionMajorPart" serializeAs="String"> <setting name="ShowSectionBrowser" serializeAs="String">
<value>0</value> <value>True</value>
</setting> </setting>
<setting name="SuppressUpdates" serializeAs="String"> <setting name="ShowBlockGroupBrowser" serializeAs="String">
<value>False</value> <value>True</value>
</setting> </setting>
<setting name="SuppressUpdatesUpToVersionMinorPart" serializeAs="String"> <setting name="ShowBlockOutputPreview" serializeAs="String">
<value>0</value> <value>True</value>
</setting> </setting>
<setting name="StaticDataLastUpdated" serializeAs="String"> <setting name="ShowAdvanced" serializeAs="String">
<value>2016-01-01</value> <value>False</value>
</setting> </setting>
<setting name="DownloadPrereleaseUpdates" serializeAs="String"> <setting name="WindowState" serializeAs="String">
<value>False</value> <value>Normal</value>
</setting> </setting>
<setting name="ShowSectionBrowser" serializeAs="String"> <setting name="WindowWidth" serializeAs="String">
<value>True</value> <value>1200</value>
</setting> </setting>
<setting name="ShowBlockGroupBrowser" serializeAs="String"> <setting name="WindowHeight" serializeAs="String">
<value>True</value> <value>800</value>
</setting> </setting>
<setting name="ShowBlockOutputPreview" serializeAs="String"> <setting name="LastOpenScripts" serializeAs="String">
<value>True</value> <value />
</setting> </setting>
<setting name="ShowAdvanced" serializeAs="String"> <setting name="BlocksExpandedOnOpen" serializeAs="String">
<value>False</value> <value>True</value>
</setting> </setting>
<setting name="WindowState" serializeAs="String"> </Filtration.Properties.Settings>
<value>Normal</value> </userSettings>
</setting> <runtime>
<setting name="WindowWidth" serializeAs="String"> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<value>1200</value> <dependentAssembly>
</setting> <assemblyIdentity name="Xceed.Wpf.AvalonDock" publicKeyToken="3e4669d2f30244f4" culture="neutral" />
<setting name="WindowHeight" serializeAs="String"> <bindingRedirect oldVersion="0.0.0.0-3.4.0.0" newVersion="3.4.0.0" />
<value>800</value> </dependentAssembly>
</setting> <dependentAssembly>
<setting name="LastOpenScripts" serializeAs="String"> <assemblyIdentity name="CommonServiceLocator" publicKeyToken="489b6accfaf20ef0" culture="neutral" />
<value /> <bindingRedirect oldVersion="0.0.0.0-2.0.4.0" newVersion="2.0.4.0" />
</setting> </dependentAssembly>
<setting name="BlocksExpandedOnOpen" serializeAs="String"> <dependentAssembly>
<value>True</value> <assemblyIdentity name="System.Windows.Interactivity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
</setting> <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</Filtration.Properties.Settings> </dependentAssembly>
</userSettings> </assemblyBinding>
<runtime> </runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> </configuration>
<dependentAssembly>
<assemblyIdentity name="Xceed.Wpf.AvalonDock" publicKeyToken="3e4669d2f30244f4" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.4.0.0" newVersion="3.4.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="CommonServiceLocator" publicKeyToken="489b6accfaf20ef0" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.4.0" newVersion="2.0.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Windows.Interactivity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<applicationSettings>
<Filtration.Properties.Settings>
<setting name="ItemBaseTypesStaticDataUrl" serializeAs="String">
<value>http://ben-wallis.github.io/Filtration/ItemBaseTypes.txt</value>
</setting>
<setting name="ItemClassesStaticDataUrl" serializeAs="String">
<value>http://ben-wallis.github.io/Filtration/ItemClasses.txt</value>
</setting>
<setting name="UpdateDataUrl" serializeAs="String">
<value>http://ben-wallis.github.io/Filtration/filtration_version.xml</value>
</setting>
</Filtration.Properties.Settings>
</applicationSettings>
</configuration>

View File

@@ -0,0 +1,31 @@
using System;
using System.Globalization;
using System.Windows.Data;
using System.Windows.Media.Imaging;
namespace Filtration.Converters
{
public class DisabledDefaultSoundConverter : IValueConverter
{
private static readonly BitmapImage _soundIcon;
private static readonly BitmapImage _soundDDSIcon;
static DisabledDefaultSoundConverter()
{
var soundUri = new Uri("pack://application:,,,/Filtration;component/Resources/Icons/sound.png", UriKind.Absolute);
var soundDDSUri = new Uri("pack://application:,,,/Filtration;component/Resources/Icons/sound_dds.png", UriKind.Absolute);
_soundIcon = new BitmapImage(soundUri);
_soundDDSIcon = new BitmapImage(soundDDSUri);
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (bool)value ? _soundDDSIcon : _soundIcon;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return ReferenceEquals(value, _soundDDSIcon);
}
}
}

View File

@@ -0,0 +1,38 @@
using System;
using System.Globalization;
using System.Windows;
using System.Windows.Data;
namespace Filtration.Converters
{
class DisabledDefaultSoundTooltipConverter : IMultiValueConverter
{
private static readonly string appendage = "\nNote: the default drop sound is disabled for this block.";
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (values[0] == DependencyProperty.UnsetValue ||
values[1] == DependencyProperty.UnsetValue)
{
return string.Empty;
}
var baseText = (string)(values[0]);
var hasDisabledDefaultSound = (bool)(values[1]);
if (hasDisabledDefaultSound)
{
return $"{baseText}{appendage}";
}
else
{
return baseText;
}
}
public object[] ConvertBack(object value, Type[] targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

View File

@@ -76,6 +76,9 @@
<Reference Include="DeltaCompressionDotNet.PatchApi, Version=1.1.0.0, Culture=neutral, PublicKeyToken=3e8888ee913ed789, processorArchitecture=MSIL"> <Reference Include="DeltaCompressionDotNet.PatchApi, Version=1.1.0.0, Culture=neutral, PublicKeyToken=3e8888ee913ed789, processorArchitecture=MSIL">
<HintPath>..\packages\DeltaCompressionDotNet.1.1.0\lib\net20\DeltaCompressionDotNet.PatchApi.dll</HintPath> <HintPath>..\packages\DeltaCompressionDotNet.1.1.0\lib\net20\DeltaCompressionDotNet.PatchApi.dll</HintPath>
</Reference> </Reference>
<Reference Include="DynamicData, Version=6.7.0.2529, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\DynamicData.6.7.0.2529\lib\net46\DynamicData.dll</HintPath>
</Reference>
<Reference Include="Fluent, Version=6.1.0.326, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Fluent, Version=6.1.0.326, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Fluent.Ribbon.6.1.0.326\lib\net45\Fluent.dll</HintPath> <HintPath>..\packages\Fluent.Ribbon.6.1.0.326\lib\net45\Fluent.dll</HintPath>
</Reference> </Reference>
@@ -130,6 +133,9 @@
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Drawing" /> <Reference Include="System.Drawing" />
<Reference Include="System.IO.Compression" /> <Reference Include="System.IO.Compression" />
<Reference Include="System.Reactive, Version=4.0.0.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL">
<HintPath>..\packages\System.Reactive.4.0.0\lib\net46\System.Reactive.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.Remoting" /> <Reference Include="System.Runtime.Remoting" />
<Reference Include="System.Runtime.Serialization" /> <Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" /> <Reference Include="System.ServiceModel" />
@@ -138,6 +144,7 @@
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath> <HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.Web" /> <Reference Include="System.Web" />
<Reference Include="System.Windows" />
<Reference Include="System.Windows.Controls.Input.Toolkit, Version=3.5.40128.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <Reference Include="System.Windows.Controls.Input.Toolkit, Version=3.5.40128.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\WPFToolkit.3.5.50211.1\lib\System.Windows.Controls.Input.Toolkit.dll</HintPath> <HintPath>..\packages\WPFToolkit.3.5.50211.1\lib\System.Windows.Controls.Input.Toolkit.dll</HintPath>
@@ -203,6 +210,8 @@
<Compile Include="Converters\BooleanToBlockActionInverseConverter.cs" /> <Compile Include="Converters\BooleanToBlockActionInverseConverter.cs" />
<Compile Include="Converters\BooleanToBlockActionConverter.cs" /> <Compile Include="Converters\BooleanToBlockActionConverter.cs" />
<Compile Include="Converters\BlockItemToRemoveEnabledVisibilityConverter.cs" /> <Compile Include="Converters\BlockItemToRemoveEnabledVisibilityConverter.cs" />
<Compile Include="Converters\DisabledDefaultSoundConverter.cs" />
<Compile Include="Converters\DisabledDefaultSoundTooltipConverter.cs" />
<Compile Include="Converters\MinimapIconToCroppedBitmapConverter.cs" /> <Compile Include="Converters\MinimapIconToCroppedBitmapConverter.cs" />
<Compile Include="Converters\HashSignRemovalConverter.cs" /> <Compile Include="Converters\HashSignRemovalConverter.cs" />
<Compile Include="Converters\ItemRarityConverter.cs" /> <Compile Include="Converters\ItemRarityConverter.cs" />
@@ -231,12 +240,17 @@
<Compile Include="UserControls\EditableListBoxControl.xaml.cs"> <Compile Include="UserControls\EditableListBoxControl.xaml.cs">
<DependentUpon>EditableListBoxControl.xaml</DependentUpon> <DependentUpon>EditableListBoxControl.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="UserControls\EnableDisableToggleButton.xaml.cs">
<DependentUpon>EnableDisableToggleButton.xaml</DependentUpon>
</Compile>
<Compile Include="UserControls\ItemPreviewControl.xaml.cs"> <Compile Include="UserControls\ItemPreviewControl.xaml.cs">
<DependentUpon>ItemPreviewControl.xaml</DependentUpon> <DependentUpon>ItemPreviewControl.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="UserControls\ThemeComponentSelectionControl.xaml.cs"> <Compile Include="UserControls\ThemeComponentSelectionControl.xaml.cs">
<DependentUpon>ThemeComponentSelectionControl.xaml</DependentUpon> <DependentUpon>ThemeComponentSelectionControl.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="ViewModels\DesignTime\DesignTimeItemFilterBlockViewModel.cs" />
<Compile Include="Utility\SplatNLogAdapter.cs" />
<Compile Include="ViewModels\DesignTime\DesignTimeSettingsPageViewModel.cs" /> <Compile Include="ViewModels\DesignTime\DesignTimeSettingsPageViewModel.cs" />
<Compile Include="Views\AttachedProperties\SelectedItemsAttachedProperty.cs" /> <Compile Include="Views\AttachedProperties\SelectedItemsAttachedProperty.cs" />
<Compile Include="Utility\RoutedCommandHandler.cs" /> <Compile Include="Utility\RoutedCommandHandler.cs" />
@@ -267,7 +281,6 @@
</Compile> </Compile>
<Compile Include="Views\Behaviors\BindableSelectedItemBehavior.cs" /> <Compile Include="Views\Behaviors\BindableSelectedItemBehavior.cs" />
<Compile Include="Views\BindingProxy.cs" /> <Compile Include="Views\BindingProxy.cs" />
<Compile Include="Views\PathOfExileColors.cs" />
<Compile Include="Views\SettingsPageView.xaml.cs"> <Compile Include="Views\SettingsPageView.xaml.cs">
<DependentUpon>SettingsPageView.xaml</DependentUpon> <DependentUpon>SettingsPageView.xaml</DependentUpon>
</Compile> </Compile>
@@ -275,6 +288,10 @@
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</Page> </Page>
<Page Include="UserControls\EnableDisableToggleButton.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="UserControls\ThemeComponentSelectionControl.xaml"> <Page Include="UserControls\ThemeComponentSelectionControl.xaml">
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
@@ -446,6 +463,12 @@
<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.png" />
<Resource Include="Resources\Icons\speaker_icon.png" />
<Resource Include="Resources\Icons\sound_dds.png" />
<EmbeddedResource Include="Resources\Prophecies.txt" />
<EmbeddedResource Include="Resources\ItemMods.txt" /> <EmbeddedResource Include="Resources\ItemMods.txt" />
<Resource Include="Resources\loading_spinner.gif" /> <Resource Include="Resources\loading_spinner.gif" />
<EmbeddedResource Include="Properties\Resources.resx"> <EmbeddedResource Include="Properties\Resources.resx">
@@ -489,7 +512,7 @@
<Resource Include="Resources\Icons\open_icon.png" /> <Resource Include="Resources\Icons\open_icon.png" />
<Resource Include="Resources\Icons\arrow_down_large_icon.png" /> <Resource Include="Resources\Icons\arrow_down_large_icon.png" />
<Resource Include="Resources\Icons\arrow_up_large_icon.png" /> <Resource Include="Resources\Icons\arrow_up_large_icon.png" />
<Resource Include="Resources\Icons\speaker_icon.png" /> <Resource Include="Resources\Icons\sound.png" />
<Resource Include="Resources\Icons\play_icon.png" /> <Resource Include="Resources\Icons\play_icon.png" />
<Resource Include="Resources\Icons\arrow_top_icon.png" /> <Resource Include="Resources\Icons\arrow_top_icon.png" />
<Resource Include="Resources\Icons\arrow_bottom_icon.png" /> <Resource Include="Resources\Icons\arrow_bottom_icon.png" />

View File

@@ -8,18 +8,17 @@
<authors>Ben Wallis</authors> <authors>Ben Wallis</authors>
<description>A Path of Exile loot filter script editor</description> <description>A Path of Exile loot filter script editor</description>
<requireLicenseAcceptance>false</requireLicenseAcceptance> <requireLicenseAcceptance>false</requireLicenseAcceptance>
<copyright>Copyright 2018</copyright> <copyright>Copyright 2019</copyright>
<releaseNotes>* All open filter scripts are now remembered on exit and reopened when the application is started rather than just the last opened one (#95) <releaseNotes>* Added support for AnyEnchantment block item type
* Filter sections are once again now expanded by default when scripts are opened, unless the new "Auto-expand all sections when opening scripts" setting is disabled * Added support for HasEnchantment block item type
* A new Clear Styles button has been added which removes all styles from the selected block (#96) * Added support for FracturedItem block item type
* Fixed theme saving (blank theme files were being saved) (#83) * Added support for SynthesisedItem block item type
* Fixed checkboxes in Block Group Browser (#97) * Fixed parsing of disabled Show/Hide blocks with extra information following the Show/Hide keyword (#133)
* Fixed the Select Path of Exile data directory dialog appearing after every upgrade (#94) * Fixed copy/pasted block styles not affecting the preview (#126) </releaseNotes>
* Fixed an issue where custom sounds were only populated from the default Path of Exile data directory rather than the configured directory
* Clean installs no longer prompt to select the Path of Exile data directory if the default directory exists</releaseNotes>
<dependencies /> <dependencies />
</metadata> </metadata>
<files> <files>
<file src="*.*" target="lib\net45\" exclude="*.pdb;*.nupkg;*.vshost.*;*.xml"/> <file src="*.*" target="lib\net45\" exclude="*.pdb;*.nupkg;*.vshost.*;*.xml;*.log"/>
<file src="Resources\AlertSounds\*.mp3" target="lib\net45\Resources\AlertSounds\" />
</files> </files>
</package> </package>

View File

@@ -10,15 +10,21 @@
layout="${longdate} ${uppercase:${level}} ${message}" /> layout="${longdate} ${uppercase:${level}} ${message}" />
<target xsi:type="File" name="fDebug" fileName="${basedir}/Filtration_debug_${shortdate}.log" <target xsi:type="File" name="fDebug" fileName="${basedir}/Filtration_debug_${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}" /> layout="${longdate} ${uppercase:${level}} ${message}" />
<target xsi:type="File" name="fUpdater" fileName="${basedir}/Filtration_updater_${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}" />
<target xsi:type="Debugger" name="cDebug" layout="${longdate} ${uppercase:${level}} ${message}"/> <target xsi:type="Debugger" name="cDebug" layout="${longdate} ${uppercase:${level}} ${message}"/>
</targets> </targets>
<rules> <rules>
<!-- Squirrel Updater Log-->
<logger name="SquirrelLogger" minlevel="Trace" writeTo="fUpdater" />
<!-- Uncomment the Debug line to enable Debug logging --> <!-- Uncomment the Debug line to enable Debug logging -->
<!--<logger name="*" minlevel="Debug" writeTo="fDebug" final="true" />--> <!--<logger name="*" minlevel="Debug" writeTo="fDebug" final="true" />-->
<logger name="*" minlevel="Error" writeTo="fErrors" /> <logger name="*" minlevel="Error" writeTo="fErrors" />
<logger name="*" minlevel="Trace" writeTo="cDebug" /> <logger name="*" minlevel="Trace" writeTo="cDebug" />
</rules> </rules>
</nlog> </nlog>

View File

@@ -10,8 +10,8 @@ using System.Runtime.CompilerServices;
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("1.1.0")] [assembly: AssemblyVersion("1.2.0")]
[assembly: AssemblyInformationalVersion("1.1.0-beta1")] [assembly: AssemblyInformationalVersion("1.2.0")]
[assembly: InternalsVisibleTo("Filtration.Tests")] [assembly: InternalsVisibleTo("Filtration.Tests")]
[assembly: InternalsVisibleTo("Filtration.ItemFilterPreview.Tests")] [assembly: InternalsVisibleTo("Filtration.ItemFilterPreview.Tests")]

View File

@@ -225,19 +225,21 @@ namespace Filtration.Properties {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to A Mother&apos;s Parting Gift /// Looks up a localized string similar to A Dab of Ink
///A Mother&apos;s Parting Gift
///Abandoned Wealth ///Abandoned Wealth
///Aberrant Fossil ///Aberrant Fossil
///Abyssal Axe ///Abyssal Axe
///Abyssal Cry ///Abyssal Cry
///Abyssal Sceptre ///Abyssal Sceptre
///Academy Map ///Academy Map
///Acid Lakes Map ///Acid Caverns Map
///Added Chaos Damage Support ///Added Chaos Damage Support
///Added Cold Damage Support ///Added Cold Damage Support
///Added Fire Damage Support ///Added Fire Damage Support
///Added Lightning Damage Support ///Added Lightning Damage Support
///Additional Accuracy Support ///Additional Accuracy Support
///Advanced Traps Support
///Aetheric Fossil ///Aetheric Fossil
///Agate Amulet ///Agate Amulet
///Albino Rhoa Feather ///Albino Rhoa Feather
@@ -251,10 +253,7 @@ namespace Filtration.Properties {
///Amber Amulet ///Amber Amulet
///Ambush Boots ///Ambush Boots
///Ambush Leaguestone ///Ambush Leaguestone
///Ambush Mitts ///Ambush [rest of string was truncated]&quot;;.
///Ambusher
///Amethyst Flask
///Amethyst [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string ItemBaseTypes { internal static string ItemBaseTypes {
get { get {
@@ -266,7 +265,7 @@ namespace Filtration.Properties {
/// Looks up a localized string similar to Abyss Jewel /// Looks up a localized string similar to Abyss Jewel
///Active Skill Gems ///Active Skill Gems
///Amulets ///Amulets
///Axe ///Axes
///Belts ///Belts
///Body Armours ///Body Armours
///Boots ///Boots
@@ -288,12 +287,13 @@ namespace Filtration.Properties {
///Labyrinth Map Item ///Labyrinth Map Item
///Labyrinth Trinket ///Labyrinth Trinket
///Large Relics ///Large Relics
///Leaguestone ///Leaguestones
///Life Flasks ///Life Flasks
///Mace ///Maces
///Mana Flasks ///Mana Flasks
///Map Fragments ///Map Fragments
///Maps ///Maps
///Medium Relics
///Misc Map Items ///Misc Map Items
///One Hand Axes ///One Hand Axes
///One Hand Maces ///One Hand Maces
@@ -302,14 +302,12 @@ namespace Filtration.Properties {
///Piece ///Piece
///Quest Items ///Quest Items
///Quivers ///Quivers
///Relics
///Rings ///Rings
///Sceptres ///Sceptres
///Shields ///Shields
///Stackable Currency ///Small Relics
///Staves ///Stackable Curre [rest of string was truncated]&quot;;.
///Support Skill Gems
///Sword
///T [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string ItemClasses { internal static string ItemClasses {
get { get {
@@ -382,6 +380,26 @@ namespace Filtration.Properties {
} }
} }
/// <summary>
/// Looks up a localized string similar to A Gracious Master.
/// </summary>
internal static string Prophecies {
get {
return ResourceManager.GetString("Prophecies", resourceCulture);
}
}
/// <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

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

View File

@@ -47,81 +47,6 @@ namespace Filtration.Properties {
} }
} }
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0")]
public int SuppressUpdatesUpToVersionMajorPart {
get {
return ((int)(this["SuppressUpdatesUpToVersionMajorPart"]));
}
set {
this["SuppressUpdatesUpToVersionMajorPart"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool SuppressUpdates {
get {
return ((bool)(this["SuppressUpdates"]));
}
set {
this["SuppressUpdates"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0")]
public int SuppressUpdatesUpToVersionMinorPart {
get {
return ((int)(this["SuppressUpdatesUpToVersionMinorPart"]));
}
set {
this["SuppressUpdatesUpToVersionMinorPart"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("2016-01-01")]
public global::System.DateTime StaticDataLastUpdated {
get {
return ((global::System.DateTime)(this["StaticDataLastUpdated"]));
}
set {
this["StaticDataLastUpdated"] = value;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("http://ben-wallis.github.io/Filtration/ItemBaseTypes.txt")]
public string ItemBaseTypesStaticDataUrl {
get {
return ((string)(this["ItemBaseTypesStaticDataUrl"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("http://ben-wallis.github.io/Filtration/ItemClasses.txt")]
public string ItemClassesStaticDataUrl {
get {
return ((string)(this["ItemClassesStaticDataUrl"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("http://ben-wallis.github.io/Filtration/filtration_version.xml")]
public string UpdateDataUrl {
get {
return ((string)(this["UpdateDataUrl"]));
}
}
[global::System.Configuration.UserScopedSettingAttribute()] [global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")] [global::System.Configuration.DefaultSettingValueAttribute("False")]

View File

@@ -8,27 +8,6 @@
<Setting Name="ExtraLineBetweenBlocks" Type="System.Boolean" Scope="User"> <Setting Name="ExtraLineBetweenBlocks" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value> <Value Profile="(Default)">True</Value>
</Setting> </Setting>
<Setting Name="SuppressUpdatesUpToVersionMajorPart" Type="System.Int32" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
<Setting Name="SuppressUpdates" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="SuppressUpdatesUpToVersionMinorPart" Type="System.Int32" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
<Setting Name="StaticDataLastUpdated" Type="System.DateTime" Scope="User">
<Value Profile="(Default)">2016-01-01</Value>
</Setting>
<Setting Name="ItemBaseTypesStaticDataUrl" Type="System.String" Scope="Application">
<Value Profile="(Default)">http://ben-wallis.github.io/Filtration/ItemBaseTypes.txt</Value>
</Setting>
<Setting Name="ItemClassesStaticDataUrl" Type="System.String" Scope="Application">
<Value Profile="(Default)">http://ben-wallis.github.io/Filtration/ItemClasses.txt</Value>
</Setting>
<Setting Name="UpdateDataUrl" Type="System.String" Scope="Application">
<Value Profile="(Default)">http://ben-wallis.github.io/Filtration/filtration_version.xml</Value>
</Setting>
<Setting Name="DownloadPrereleaseUpdates" Type="System.Boolean" Scope="User"> <Setting Name="DownloadPrereleaseUpdates" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value> <Value Profile="(Default)">False</Value>
</Setting> </Setting>

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@@ -1,11 +1,12 @@
A Mother's Parting Gift A Dab of Ink
A Mother's Parting Gift
Abandoned Wealth Abandoned Wealth
Aberrant Fossil Aberrant Fossil
Abyssal Axe Abyssal Axe
Abyssal Cry Abyssal Cry
Abyssal Sceptre Abyssal Sceptre
Academy Map Academy Map
Acid Lakes Map Acid Caverns Map
Added Chaos Damage Support Added Chaos Damage Support
Added Cold Damage Support Added Cold Damage Support
Added Fire Damage Support Added Fire Damage Support
@@ -21,6 +22,7 @@ Alira's Amulet
Alleyways Map Alleyways Map
Allflame Allflame
Alloyed Spiked Shield Alloyed Spiked Shield
Alone in the Darkness
Alteration Shard Alteration Shard
Amber Amulet Amber Amulet
Ambush Boots Ambush Boots
@@ -71,9 +73,11 @@ Arctic Breath
Arena Map Arena Map
Arena Plate Arena Plate
Arid Lake Map Arid Lake Map
Armageddon Brand
Arming Axe Arming Axe
Armourer's Scrap Armourer's Scrap
Armoury Map Armoury Map
Arrogance of the Vaal
Arsenal Map Arsenal Map
Ashen Wood Map Ashen Wood Map
Ashscale Talisman Ashscale Talisman
@@ -94,6 +98,7 @@ Avian Twins Talisman
Awl Awl
Baleful Gem Baleful Gem
Ball Lightning Ball Lightning
Bane
Bane of the Loyal Bane of the Loyal
Barbed Club Barbed Club
Barbute Helmet Barbute Helmet
@@ -168,7 +173,9 @@ Bone Crypt Map
Bone Helmet Bone Helmet
Bone Offering Bone Offering
Bone Spirit Shield Bone Spirit Shield
Bonechill Support
Bonespire Talisman Bonespire Talisman
Boon of Justice
Boon of the First Ones Boon of the First Ones
Boot Blade Boot Blade
Boot Knife Boot Knife
@@ -176,6 +183,7 @@ Bottled Storm
Bound Fossil Bound Fossil
Boundless Realms Boundless Realms
Bowyer's Dream Bowyer's Dream
Brand Recall
Branded Kite Shield Branded Kite Shield
Brass Maul Brass Maul
Brass Spirit Shield Brass Spirit Shield
@@ -352,6 +360,7 @@ Courthouse Map
Courtyard Map Courtyard Map
Coves Map Coves Map
Coveted Possession Coveted Possession
Crater Map
Cremation Cremation
Crescent Staff Crescent Staff
Crested Tower Shield Crested Tower Shield
@@ -384,6 +393,7 @@ Dagger Axe
Damage on Full Life Support Damage on Full Life Support
Dark Forest Map Dark Forest Map
Dark Pact Dark Pact
Dark Temptation
Darkwood Sceptre Darkwood Sceptre
Deadhand Talisman Deadhand Talisman
Deadly Ailments Support Deadly Ailments Support
@@ -445,6 +455,7 @@ Diamond Ring
Dig Map Dig Map
Discharge Discharge
Discipline Discipline
Divine Ire
Divine Life Flask Divine Life Flask
Divine Mana Flask Divine Mana Flask
Divine Orb Divine Orb
@@ -461,6 +472,7 @@ Dragonscale Boots
Dragonscale Doublet Dragonscale Doublet
Dragonscale Gauntlets Dragonscale Gauntlets
Dragoon Sword Dragoon Sword
Dread Banner
Dread Maul Dread Maul
Dream Mace Dream Mace
Driftwood Club Driftwood Club
@@ -504,6 +516,7 @@ Enchanted Fossil
Encrusted Fossil Encrusted Fossil
Endurance Charge on Melee Stun Support Endurance Charge on Melee Stun Support
Enduring Cry Enduring Cry
Energy Leech Support
Enfeeble Enfeeble
Engineer's Orb Engineer's Orb
Engineer's Shard Engineer's Shard
@@ -636,6 +649,7 @@ Full Plate
Full Ringmail Full Ringmail
Full Scale Armour Full Scale Armour
Full Wyrmscale Full Wyrmscale
Fungal Hollow Map
Gardens Map Gardens Map
Gavel Gavel
Gemcutter's Prism Gemcutter's Prism
@@ -650,13 +664,26 @@ Ghetto Map
Giant Life Flask Giant Life Flask
Giant Mana Flask Giant Mana Flask
Gift of the Gemling Queen Gift of the Gemling Queen
Gilded Ambush Scarab
Gilded Axe Gilded Axe
Gilded Bestiary Scarab
Gilded Breach Scarab
Gilded Buckler Gilded Buckler
Gilded Cartography Scarab
Gilded Divination Scarab
Gilded Elder Scarab
Gilded Fossil Gilded Fossil
Gilded Harbinger Scarab
Gilded Perandus Scarab
Gilded Reliquary Scarab
Gilded Sallet Gilded Sallet
Gilded Shaper Scarab
Gilded Sulphite Scarab
Gilded Torment Scarab
Girded Tower Shield Girded Tower Shield
Glacial Cascade Glacial Cascade
Glacial Hammer Glacial Hammer
Glacier Map
Gladiator Helmet Gladiator Helmet
Gladiator Plate Gladiator Plate
Gladius Gladius
@@ -689,7 +716,6 @@ Golden Plate
Golden Wreath Golden Wreath
Goliath Gauntlets Goliath Gauntlets
Goliath Greaves Goliath Greaves
Gorge Map
Gouger Gouger
Grace Grace
Graceful Sword Graceful Sword
@@ -801,7 +827,9 @@ Infernal Axe
Infernal Blow Infernal Blow
Infernal Sword Infernal Sword
Infested Valley Map Infested Valley Map
Infused Channelling Support
Innervate Support Innervate Support
Intensify Support
Invasion Leaguestone Invasion Leaguestone
Inya's Key Inya's Key
Iron Circlet Iron Circlet
@@ -859,6 +887,7 @@ Lacquered Helmet
Lair Map Lair Map
Lair of the Hydra Map Lair of the Hydra Map
Laminated Kite Shield Laminated Kite Shield
Lancing Steel
Lantador's Lost Love Lantador's Lost Love
Lapis Amulet Lapis Amulet
Large Hybrid Flask Large Hybrid Flask
@@ -867,7 +896,7 @@ Large Mana Flask
Last Hope Last Hope
Lathi Lathi
Latticed Ringmail Latticed Ringmail
Lava Chamber Map Lava Chambers Map
Lava Lake Map Lava Lake Map
Layered Kite Shield Layered Kite Shield
Lead Sceptre Lead Sceptre
@@ -888,9 +917,9 @@ Lesser Poison Support
Leyline Map Leyline Map
Life Gain on Hit Support Life Gain on Hit Support
Life Leech Support Life Leech Support
Light and Truth
Light Brigandine Light Brigandine
Light Quiver Light Quiver
Light and Truth
Lighthouse Map Lighthouse Map
Lightning Arrow Lightning Arrow
Lightning Penetration Support Lightning Penetration Support
@@ -929,6 +958,7 @@ Majestic Plate
Malachai's Entrails Malachai's Entrails
Malachai's Heart Malachai's Heart
Malachai's Lungs Malachai's Lungs
Malevolence
Malformation Map Malformation Map
Maligaro's Map Maligaro's Map
Maligaro's Spike Maligaro's Spike
@@ -975,20 +1005,21 @@ Military Staff
Mind Cage Mind Cage
Minefield Support Minefield Support
Mineral Pools Map Mineral Pools Map
Minion and Totem Elemental Resistance Support
Minion Damage Support Minion Damage Support
Minion Life Support Minion Life Support
Minion Speed Support Minion Speed Support
Minion and Totem Elemental Resistance Support
Mirage Archer Support Mirage Archer Support
Mirror Arrow Mirror Arrow
Mirror Shard
Mirror of Kalandra Mirror of Kalandra
Mirror Shard
Mirrored Spiked Shield Mirrored Spiked Shield
Mitts Mitts
Molten Shell Molten Shell
Molten Strike Molten Strike
Monkey Paw Talisman Monkey Paw Talisman
Monkey Twins Talisman Monkey Twins Talisman
Monochrome
Moon Orb Moon Orb
Moon Staff Moon Staff
Moon Temple Map Moon Temple Map
@@ -1000,6 +1031,7 @@ Mortal Ignorance
Mortal Rage Mortal Rage
Mosaic Kite Shield Mosaic Kite Shield
Mud Geyser Map Mud Geyser Map
Multiple Totems Support
Multiple Traps Support Multiple Traps Support
Multistrike Support Multistrike Support
Murder Boots Murder Boots
@@ -1110,7 +1142,19 @@ Poignard
Point Blank Support Point Blank Support
Poison Support Poison Support
Poleaxe Poleaxe
Polished Ambush Scarab
Polished Bestiary Scarab
Polished Breach Scarab
Polished Cartography Scarab
Polished Divination Scarab
Polished Elder Scarab
Polished Harbinger Scarab
Polished Perandus Scarab
Polished Reliquary Scarab
Polished Shaper Scarab
Polished Spiked Shield Polished Spiked Shield
Polished Sulphite Scarab
Polished Torment Scarab
Port Map Port Map
Portal Portal
Portal Scroll Portal Scroll
@@ -1132,6 +1176,7 @@ Primeval Rapier
Primitive Alchemical Resonator Primitive Alchemical Resonator
Primitive Chaotic Resonator Primitive Chaotic Resonator
Primitive Staff Primitive Staff
Primordial Blocks Map
Primordial Pool Map Primordial Pool Map
Primordial Staff Primordial Staff
Prismatic Fossil Prismatic Fossil
@@ -1149,6 +1194,7 @@ Prophet Crown
Prosperity Prosperity
Puncture Puncture
Punishment Punishment
Purifying Flame
Purity of Elements Purity of Elements
Purity of Fire Purity of Fire
Purity of Ice Purity of Ice
@@ -1160,9 +1206,9 @@ Quartz Wand
Quicksilver Flask Quicksilver Flask
Quilted Jacket Quilted Jacket
Racecourse Map Racecourse Map
Rain Tempter
Rain of Arrows Rain of Arrows
Rain of Chaos Rain of Chaos
Rain Tempter
Raise Spectre Raise Spectre
Raise Zombie Raise Zombie
Rallying Cry Rallying Cry
@@ -1226,10 +1272,22 @@ Ruby Flask
Ruby Ring Ruby Ring
Rugged Quiver Rugged Quiver
Runic Hatchet Runic Hatchet
Rusted Ambush Scarab
Rusted Bestiary Scarab
Rusted Breach Scarab
Rusted Cartography Scarab
Rusted Coif Rusted Coif
Rusted Divination Scarab
Rusted Elder Scarab
Rusted Harbinger Scarab
Rusted Hatchet Rusted Hatchet
Rusted Perandus Scarab
Rusted Reliquary Scarab
Rusted Shaper Scarab
Rusted Spike Rusted Spike
Rusted Sulphite Scarab
Rusted Sword Rusted Sword
Rusted Torment Scarab
Rustic Sash Rustic Sash
Ruthless Support Ruthless Support
Sabre Sabre
@@ -1249,6 +1307,7 @@ Saint's Hauberk
Saintly Chainmail Saintly Chainmail
Sallet Sallet
Sambar Sceptre Sambar Sceptre
Sambodhi's Vow
Samite Gloves Samite Gloves
Samite Helmet Samite Helmet
Samite Slippers Samite Slippers
@@ -1311,6 +1370,7 @@ Serpentscale Gauntlets
Serrated Arrow Quiver Serrated Arrow Quiver
Serrated Foil Serrated Foil
Serrated Fossil Serrated Fossil
Seven Years Bad Luck
Shabby Jerkin Shabby Jerkin
Shackled Boots Shackled Boots
Shadow Axe Shadow Axe
@@ -1335,6 +1395,7 @@ Sharkskin Gloves
Sharkskin Tunic Sharkskin Tunic
Sharktooth Arrow Quiver Sharktooth Arrow Quiver
Sharktooth Claw Sharktooth Claw
Shattering Steel
Shield Charge Shield Charge
Shipyard Map Shipyard Map
Shock Nova Shock Nova
@@ -1410,6 +1471,7 @@ Soldier Helmet
Soldier's Brigandine Soldier's Brigandine
Sorcerer Boots Sorcerer Boots
Sorcerer Gloves Sorcerer Gloves
Soulrend
Sovereign Spiked Shield Sovereign Spiked Shield
Spark Spark
Sparkling Claw Sparkling Claw
@@ -1445,7 +1507,6 @@ Splinter of Xoph
Splintered Tower Shield Splintered Tower Shield
Split Arrow Split Arrow
Splitnewt Talisman Splitnewt Talisman
Springs Map
Stacked Deck Stacked Deck
Stag Sceptre Stag Sceptre
Static Strike Static Strike
@@ -1467,6 +1528,7 @@ Stone Hammer
Stone of Passage Stone of Passage
Storm Barrier Support Storm Barrier Support
Storm Blade Storm Blade
Storm Brand
Storm Burst Storm Burst
Storm Call Storm Call
Strand Map Strand Map
@@ -1581,6 +1643,7 @@ The Garish Power
The Gemcutter The Gemcutter
The Gentleman The Gentleman
The Gladiator The Gladiator
The Golden Era
The Hale Heart The Hale Heart
The Harvester The Harvester
The Hermit The Hermit
@@ -1595,18 +1658,26 @@ The Inventor
The Iron Bard The Iron Bard
The Jester The Jester
The Jeweller's Boon The Jeweller's Boon
The Journey
The King's Blade The King's Blade
The King's Heart The King's Heart
The Landing
The Last One Standing The Last One Standing
The Lich The Lich
The Life Thief
The Lion The Lion
The Lord in Black The Lord in Black
The Lord of Celebration
The Lover The Lover
The Lunaris Priestess The Lunaris Priestess
The Mad King
The Master The Master
The Master Artisan
The Mayor The Mayor
The Mercenary The Mercenary
The Messenger
The Metalsmith's Gift The Metalsmith's Gift
The Nurse
The Oath The Oath
The Obscured The Obscured
The Offering The Offering
@@ -1628,11 +1699,13 @@ The Risk
The Rite of Elements The Rite of Elements
The Road to Power The Road to Power
The Ruthless Ceinture The Ruthless Ceinture
The Sacrifice
The Saint's Treasure The Saint's Treasure
The Samurai's Eye The Samurai's Eye
The Scarred Meadow The Scarred Meadow
The Scavenger The Scavenger
The Scholar The Scholar
The Seeker
The Sephirot The Sephirot
The Shaper's Key The Shaper's Key
The Shaper's Realm The Shaper's Realm
@@ -1711,7 +1784,6 @@ Torment Leaguestone
Tornado Shot Tornado Shot
Tornado Wand Tornado Wand
Torture Cage Torture Cage
Torture Chamber Map
Totemic Maul Totemic Maul
Tower Key Tower Key
Tower Map Tower Map
@@ -1719,8 +1791,8 @@ Toxic Rain
Toxic Sewer Map Toxic Sewer Map
Tranquillity Tranquillity
Transmutation Shard Transmutation Shard
Trap Support
Trap and Mine Damage Support Trap and Mine Damage Support
Trap Support
Trapper Boots Trapper Boots
Trapper Mitts Trapper Mitts
Trarthan Powder Trarthan Powder
@@ -1729,7 +1801,6 @@ Treasure Key
Tribal Circlet Tribal Circlet
Tribal Club Tribal Club
Tribal Maul Tribal Maul
Tribunal Map
Tricorne Tricorne
Trisula Trisula
Triumphant Lamellar Triumphant Lamellar
@@ -1751,6 +1822,7 @@ Underground River Map
Underground Sea Map Underground Sea Map
Undying Flesh Talisman Undying Flesh Talisman
Unearth Unearth
Unleash Support
Unset Ring Unset Ring
Unshaping Orb Unshaping Orb
Ursine Pelt Ursine Pelt
@@ -1815,16 +1887,16 @@ Vault Map
Velvet Gloves Velvet Gloves
Velvet Slippers Velvet Slippers
Vengeance Vengeance
Vial Of Power
Vial of Awakening Vial of Awakening
Vial of Consequence Vial of Consequence
Vial of Dominance Vial of Dominance
Vial of Fate Vial of Fate
Vial Of Power
Vial of Sacrifice Vial of Sacrifice
Vial of Summoning Vial of Summoning
Vial of Transcendence
Vial of the Ghost Vial of the Ghost
Vial of the Ritual Vial of the Ritual
Vial of Transcendence
Vicious Projectiles Support Vicious Projectiles Support
Vigilant Strike Vigilant Strike
Vile Staff Vile Staff
@@ -1865,6 +1937,7 @@ Wailing Essence of Wrath
Wailing Essence of Zeal Wailing Essence of Zeal
Walnut Spirit Shield Walnut Spirit Shield
War Axe War Axe
War Banner
War Buckler War Buckler
War Hammer War Hammer
War Plate War Plate
@@ -1874,6 +1947,7 @@ Warlord's Mark
Waste Pool Map Waste Pool Map
Wasteland Map Wasteland Map
Waterways Map Waterways Map
Wave of Conviction
Waxed Garb Waxed Garb
Wealth and Power Wealth and Power
Weeping Essence Weeping Essence
@@ -1902,6 +1976,7 @@ Widowsilk Robe
Wild Leather Wild Leather
Wild Strike Wild Strike
Wings of Vastiri Wings of Vastiri
Winter Orb
Wither Wither
Withering Touch Support Withering Touch Support
Wolf Pelt Wolf Pelt
@@ -1927,4 +2002,5 @@ Yriel's Key
Zealot Boots Zealot Boots
Zealot Gloves Zealot Gloves
Zealot Helmet Zealot Helmet
Zealotry
Zodiac Leather Zodiac Leather

View File

@@ -23,12 +23,13 @@ Labyrinth Item
Labyrinth Map Item Labyrinth Map Item
Labyrinth Trinket Labyrinth Trinket
Large Relics Large Relics
Leaguestone Leaguestones
Life Flasks Life Flasks
Maces Maces
Mana Flasks Mana Flasks
Map Fragments Map Fragments
Maps Maps
Medium Relics
Misc Map Items Misc Map Items
One Hand Axes One Hand Axes
One Hand Maces One Hand Maces
@@ -37,9 +38,11 @@ Pantheon Soul
Piece Piece
Quest Items Quest Items
Quivers Quivers
Relics
Rings Rings
Sceptres Sceptres
Shields Shields
Small Relics
Stackable Currency Stackable Currency
Staves Staves
Support Skill Gems Support Skill Gems

View File

@@ -61,6 +61,7 @@ Carved
Caster's Caster's
Catalysed Catalysed
Catalyzing Catalyzing
Catarina's Veiled
Caustic Caustic
Cauterising Cauterising
Cautious Cautious
@@ -115,6 +116,7 @@ Duelist's
Eldritch Eldritch
Electrocuting Electrocuting
Electromantic Electromantic
Elreon's Veiled
Elephant's Elephant's
Emanant Emanant
Emperor's Emperor's
@@ -172,9 +174,12 @@ Glinting
Glittering Glittering
Glowing Glowing
Glyphic Glyphic
Gravicius' Veiled
Gremlin's Gremlin's
Grounded Grounded
Guatelitzi's Guatelitzi's
Guff's Veiled
Haku's Veiled
Hailing Hailing
Hale Hale
Halting Halting
@@ -218,16 +223,19 @@ Instilled
Interpermeated Interpermeated
Interpolated Interpolated
Ionising Ionising
It That Fled's Veiled
Jagged Jagged
Jinxing Jinxing
Journeyman's Journeyman's
Judging Judging
Korell's Veiled
Lacquered Lacquered
Lamprey's Lamprey's
Lava Caller's Lava Caller's
Layered Layered
Leadership Leadership
Legend's Legend's
Leo's Veiled
Lethal Lethal
Lich's Lich's
Lively Lively
@@ -306,6 +314,7 @@ Resonating
Resplendent Resplendent
Rhino's Rhino's
Ribbed Ribbed
Rin's Veiled
Ripping Ripping
Robust Robust
Rotund Rotund
@@ -384,6 +393,7 @@ Thundering
Thwarting Thwarting
Titan's Titan's
Topotante's Topotante's
Tora's Veiled
Trapping Trapping
Tul's Tul's
Turncoat's Turncoat's
@@ -399,8 +409,10 @@ Unwavering
Unworldly Unworldly
Urchin's Urchin's
Vaal Vaal
Vagan's Veiled
Vampire's Vampire's
Vaporous Vaporous
Veiled
Vicious Vicious
Victor's Victor's
Vigorous Vigorous
@@ -410,6 +422,7 @@ Vivacious
Vivid Vivid
Volcanic Volcanic
Volleying Volleying
Vorici's Veiled
Wailing Wailing
Warding Warding
Warlock's Warlock's
@@ -436,6 +449,7 @@ of Accuracy
of Adamantite Skin of Adamantite Skin
of Adaption of Adaption
of Adrenaline of Adrenaline
of Aisling's Veil
of Amassment of Amassment
of Anger of Anger
of Animation of Animation
@@ -459,6 +473,7 @@ of Bloodlines
of Burning of Burning
of Calamity of Calamity
of Calm of Calm
of Cameria's Veil
of Celebration of Celebration
of Champions of Champions
of Chilling of Chilling
@@ -547,6 +562,7 @@ of Havoc
of Haze of Haze
of Heat of Heat
of Hemomancy of Hemomancy
of Hillock's Veil
of Hindering of Hindering
of Hoarding of Hoarding
of Hordes of Hordes
@@ -563,6 +579,8 @@ of Intelligence
of Intercepting of Intercepting
of Ire of Ire
of Iron Skin of Iron Skin
of Janus' Veil
of Jorgin's Veil
of Joy of Joy
of Legerdemain of Legerdemain
of Light of Light
@@ -621,6 +639,7 @@ of Resistance
of Restoration of Restoration
of Retaliation of Retaliation
of Righteousness of Righteousness
of Riker's Veil
of Rime of Rime
of Ruin of Ruin
of Runes of Runes
@@ -774,6 +793,7 @@ of the Titan
of the Troll of the Troll
of the Underground of the Underground
of the Universe of the Universe
of the Veil
of the Virtuoso of the Virtuoso
of the Volcano of the Volcano
of the Wall of the Wall

View File

@@ -0,0 +1,241 @@
A Call into the Void
A Dishonourable Death
A Firm Foothold
A Forest of False Idols
A Gracious Master
A Master Seeks Help
A Prodigious Hand
A Regal Death
A Rift in Time
A Valuable Combination
A Vision of Ice and Fire
A Whispered Prayer
Abnormal Effulgence
Against the Tide
Agony at Dusk
An Unseen Peril
Anarchy's End
Anarchy's End I
Anarchy's End II
Anarchy's End III
Anarchy's End IV
Ancient Doom
Baptism by Death
Battle Hardened
Beyond Sight
Beyond Sight I
Beyond Sight II
Beyond Sight III
Beyond Sight IV
Black Devotion
Blind Faith
Blinding Light
Blood in the Eyes
Blood of the Betrayed
Bountiful Traps
Burning Dread
Cleanser of Sins
Cold Blooded Fury
Cold Greed
Crimson Hues
Crushing Squall
Custodians of Silence
Dance of Steel
Dark Instincts
Darktongue's Shriek
Day of Sacrifice
Day of Sacrifice I
Day of Sacrifice II
Day of Sacrifice III
Day of Sacrifice IV
Deadly Rivalry
Deadly Rivalry I
Deadly Rivalry II
Deadly Rivalry III
Deadly Rivalry IV
Deadly Rivalry V
Deadly Twins
Defiled in the Sceptre
Dying Cry
Echoes of Witchcraft
End of the Light
Ending the Torment
Erased from Memory
Erasmus' Gift
Faith Exhumed
Fallow At Last
Fated Connections
Fear's Wide Reach
Fire and Brimstone
Fire and Ice
Fire from the Sky
Fire, Wood and Stone
Flesh of the Beast
Forceful Exorcism
From Death Springs Life
From The Void
Gilded Within
Golden Touch
Graceful Flames
Greed's Folly
Heart of the Fire
Heavy Blows
Hidden Reinforcements
Hidden Vaal Pathways
Holding the Bridge
Hunter's Lesson
Ice from Above
In the Grasp of Corruption
Kalandra's Craft
Last of the Wildmen
Lasting Impressions
Lightning Falls
Living Fires
Lost in the Pages
Monstrous Treasure
Mouth of Horrors
Mysterious Invaders
Nature's Resilience
Nemesis of Greed
Notched Flesh
Overflowing Riches
Path of Betrayal
Plague of Frogs
Plague of Rats
Pleasure and Pain
Pools of Wealth
Possessed Foe
Power Magnified
Rebirth
Reforged Bonds
Resistant to Change
Risen Blood
Roth's Legacy
Severed Limbs
Smothering Tendrils
Soil, Worms and Blood
Song of the Sekhema
Storm on the Horizon
Storm on the Reef
Strong as a Bull
Sun's Punishment
Thaumaturgical History
Thaumaturgical History I
Thaumaturgical History II
Thaumaturgical History III
Thaumaturgical History IV
The Alchemist
The Ambitious Bandit
The Ambitious Bandit I
The Ambitious Bandit II
The Ambitious Bandit III
The Apex Predator
The Beautiful Guide
The Beginning and the End
The Bishop's Legacy
The Bloody Flowers Redux
The Bowstring's Music
The Brothers of Necromancy
The Brutal Enforcer
The Child of Lunaris
The Corrupt
The Cursed Choir
The Dreaded Rhoa
The Dream Trial
The Dreamer's Dream
The Eagle's Cry
The Fall of an Empire
The Feral Lord
The Feral Lord I
The Feral Lord II
The Feral Lord III
The Feral Lord IV
The Feral Lord V
The Flayed Man
The Flow of Energy
The Forgotten Garrison
The Forgotten Soldiers
The Fortune Teller's Collection
The Four Feral Exiles
The God of Misfortune
The Great Leader of the North
The Great Mind of the North
The Hardened Armour
The Hollow Pledge
The Hungering Swarm
The Invader
The Jeweller's Touch
The Karui Rebellion
The King and the Brambles
The King's Path
The Lady in Black
The Last Watch
The Lost Maps
The Lost Undying
The Malevolent Witch
The Misunderstood Queen
The Mysterious Gift
The Nest
The Nightmare Awakens
The Petrified
The Plaguemaw
The Plaguemaw I
The Plaguemaw II
The Plaguemaw III
The Plaguemaw IV
The Plaguemaw V
The Prison Guard
The Prison Key
The Queen's Sacrifice
The Queen's Vaults
The Scout
The Servant's Heart
The Sharpened Blade
The Silverwood
The Singular Spirit
The Sinner's Stone
The Snuffed Flame
The Soulless Beast
The Stockkeeper
The Storm Spire
The Sword King's Passion
The Trembling Earth
The Twins
The Unbreathing Queen
The Unbreathing Queen I
The Unbreathing Queen II
The Unbreathing Queen III
The Unbreathing Queen IV
The Unbreathing Queen V
The Undead Brutes
The Undead Storm
The Vanguard
The Walking Mountain
The Ward's Ward
The Warmongers
The Warmongers I
The Warmongers II
The Warmongers III
The Warmongers IV
The Watcher's Watcher
The Wealthy Exile
Touched by the Wind
Trapped in the Tower
Trash to Treasure
Twice Enchanted
Unbearable Whispers
Unbearable Whispers I
Unbearable Whispers II
Unbearable Whispers III
Unbearable Whispers IV
Unbearable Whispers V
Undead Uprising
Unnatural Energy
Vaal Invasion
Vaal Winds
Visions of the Drowned
Vital Transformation
Waiting in Ambush
Weeping Death
Wind and Thunder
Winter's Mournful Melodies

View File

@@ -25,6 +25,8 @@ namespace Filtration.Services
{ {
_fileSystemService = fileSystemService; _fileSystemService = fileSystemService;
_itemFilterScriptTranslator = itemFilterScriptTranslator; _itemFilterScriptTranslator = itemFilterScriptTranslator;
ItemFilterScriptDirectory = Settings.Default.DefaultFilterDirectory;
} }
public string ItemFilterScriptDirectory { get; private set; } public string ItemFilterScriptDirectory { get; private set; }
@@ -47,6 +49,7 @@ namespace Filtration.Services
ItemFilterScriptDirectory = path; ItemFilterScriptDirectory = path;
Settings.Default.DefaultFilterDirectory = path; Settings.Default.DefaultFilterDirectory = path;
Settings.Default.Save();
} }
public async Task<IItemFilterScript> LoadItemFilterScriptAsync(string filePath) public async Task<IItemFilterScript> LoadItemFilterScriptAsync(string filePath)
@@ -62,7 +65,7 @@ namespace Filtration.Services
{ {
loadedScript.FilePath = filePath; loadedScript.FilePath = filePath;
} }
return loadedScript; return loadedScript;
} }

View File

@@ -11,6 +11,8 @@ namespace Filtration.Services
IEnumerable<string> ItemBaseTypes { get; } IEnumerable<string> ItemBaseTypes { get; }
IEnumerable<string> ItemClasses { get; } IEnumerable<string> ItemClasses { get; }
IEnumerable<string> ItemMods { get; } IEnumerable<string> ItemMods { get; }
IEnumerable<string> Prophecies { get; }
IEnumerable<string> Enchantments { get; }
} }
internal class StaticDataService : IStaticDataService internal class StaticDataService : IStaticDataService
@@ -26,11 +28,17 @@ namespace Filtration.Services
public IEnumerable<string> ItemMods { get; private set; } public IEnumerable<string> ItemMods { 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();
Enchantments = new LineReader(() => new StringReader(Resources.Enchantments)).ToList();
} }
} }
} }

View File

@@ -1,9 +1,12 @@
using System; using System;
using System.IO;
using System.Linq; using System.Linq;
using System.Reflection;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
using Filtration.Enums; using Filtration.Enums;
using Filtration.Properties; using Filtration.Properties;
using Filtration.Utility;
using NLog; using NLog;
using Squirrel; using Squirrel;
@@ -76,11 +79,14 @@ namespace Filtration.Services
private bool _downloadPrereleaseUpdates; private bool _downloadPrereleaseUpdates;
private UpdateStatus _updateStatus; private UpdateStatus _updateStatus;
public UpdateService(ISettingsService settingsService) public UpdateService(ISettingsService settingsService,
ISplatNLogAdapter splatNLogAdapter)
{ {
_settingsService = settingsService; _settingsService = settingsService;
UpdateStatus = UpdateStatus.NoUpdateAvailable; UpdateStatus = UpdateStatus.NoUpdateAvailable;
Splat.Locator.CurrentMutable.Register(() => splatNLogAdapter, typeof(Splat.ILogger));
} }
public event EventHandler<UpdateStatusChangedEventArgs> UpdateStatusChanged; public event EventHandler<UpdateStatusChangedEventArgs> UpdateStatusChanged;
@@ -117,6 +123,17 @@ namespace Filtration.Services
_downloadPrereleaseUpdates = true; _downloadPrereleaseUpdates = true;
#endif #endif
var expectedInstallationPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Filtration");
var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
var runningInstalled = baseDirectory.StartsWith(expectedInstallationPath);
if (!runningInstalled)
{
Logger.Debug($"Skipping update check since base directory of {baseDirectory} does not start with the expected installation path of {expectedInstallationPath}");
return;
}
async Task CheckForUpdatesAsync(IUpdateManager updateManager) async Task CheckForUpdatesAsync(IUpdateManager updateManager)
{ {
_updates = await updateManager.CheckForUpdate(progress: progress => UpdateProgressChanged?.Invoke(this, new UpdateProgressChangedEventArgs(progress))); _updates = await updateManager.CheckForUpdate(progress: progress => UpdateProgressChanged?.Invoke(this, new UpdateProgressChangedEventArgs(progress)));

View File

@@ -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,8 @@
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" xmlns:utilities="clr-namespace:Filtration.Common.Utilities;assembly=Filtration.Common"
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 +47,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,17 +71,27 @@
<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}" />
</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}" />
@@ -112,14 +123,14 @@
<!-- Color Template --> <!-- Color Template -->
<DataTemplate DataType="{x:Type blockItemBaseTypes:ColorBlockItem}"> <DataTemplate DataType="{x:Type blockItemBaseTypes:ColorBlockItem}">
<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="{x:Static utilities:PathOfExileColors.DefaultColors}" 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 +175,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 +236,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">
@@ -241,6 +252,13 @@
</userControls:ThemeComponentSelectionControl> </userControls:ThemeComponentSelectionControl>
</Grid> </Grid>
</DataTemplate> </DataTemplate>
<!-- Disable Drop Sound Template -->
<DataTemplate DataType="{x:Type blockItemBaseTypes:NilBlockItem}">
<Grid>
<TextBlock Text="{Binding Description}" VerticalAlignment="Center" />
</Grid>
</DataTemplate>
</ContentControl.Resources> </ContentControl.Resources>
</ContentControl> </ContentControl>
</Grid> </Grid>

View File

@@ -1,16 +1,13 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel; using System.ComponentModel;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using System.Windows; using System.Windows;
using Filtration.Annotations; using Filtration.Annotations;
using Filtration.ObjectModel; using Filtration.ObjectModel;
using Filtration.ObjectModel.BlockItemBaseTypes; using Filtration.ObjectModel.BlockItemBaseTypes;
using Filtration.ObjectModel.Enums; using Filtration.ObjectModel.Enums;
using Filtration.ObjectModel.ThemeEditor; using Filtration.ObjectModel.ThemeEditor;
using Filtration.Views;
using GalaSoft.MvvmLight.CommandWpf; using GalaSoft.MvvmLight.CommandWpf;
using Xceed.Wpf.Toolkit;
namespace Filtration.UserControls namespace Filtration.UserControls
{ {
@@ -81,9 +78,6 @@ namespace Filtration.UserControls
} }
} }
public ObservableCollection<ColorItem> AvailableColors => PathOfExileColors.DefaultColors;
public List<string> SoundsAvailable => new List<string> { public List<string> SoundsAvailable => new List<string> {
"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16",
"ShGeneral", "ShBlessed", "ShChaos", "ShDivine", "ShExalted", "ShMirror", "ShAlchemy", "ShGeneral", "ShBlessed", "ShChaos", "ShDivine", "ShExalted", "ShMirror", "ShAlchemy",

View File

@@ -0,0 +1,30 @@
<UserControl x:Class="Filtration.UserControls.EnableDisableToggleButton"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<ToggleButton Style="{StaticResource ChromelessToggleButton}"
IsChecked="{Binding BlockEnabled}"
Margin="0,0,5,0"
ToolTip="Enable/Disable Block"
Cursor="Hand"
Width="25"
Height="25">
<Image RenderOptions.BitmapScalingMode="HighQuality">
<Image.Style>
<Style TargetType="{x:Type Image}">
<Style.Triggers>
<DataTrigger Binding="{Binding BlockEnabled}" Value="true">
<Setter Property="Source" Value="/Filtration;component/Resources/Icons/standby_enabled_icon.png"/>
</DataTrigger>
<DataTrigger Binding="{Binding BlockEnabled}" Value="false">
<Setter Property="Source" Value="/Filtration;component/Resources/Icons/standby_disabled_icon.png"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
</ToggleButton>
</UserControl>

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Filtration.UserControls
{
/// <summary>
/// Interaction logic for EnableDisableToggleButton.xaml
/// </summary>
public partial class EnableDisableToggleButton : UserControl
{
public EnableDisableToggleButton()
{
InitializeComponent();
}
}
}

View File

@@ -0,0 +1,52 @@
using System;
using NLog;
using ILogger = Splat.ILogger;
using LogLevel = Splat.LogLevel;
namespace Filtration.Utility
{
public interface ISplatNLogAdapter
{
}
public class SplatNLogAdapter : ILogger, ISplatNLogAdapter
{
private static readonly Logger Logger = LogManager.GetLogger("SquirrelLogger");
public void Write(string message, LogLevel logLevel)
{
switch (logLevel)
{
case LogLevel.Debug:
{
Logger.Debug(message);
break;
}
case LogLevel.Info:
{
Logger.Info(message);
break;
}
case LogLevel.Error:
{
Logger.Error(message);
break;
}
case LogLevel.Fatal:
{
Logger.Fatal(message);
break;
}
case LogLevel.Warn:
{
Logger.Warn(message);
break;
}
default:
throw new ArgumentOutOfRangeException(nameof(logLevel), logLevel, null);
}
}
public LogLevel Level { get; set; }
}
}

View File

@@ -0,0 +1,164 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows.Media;
using Filtration.ObjectModel;
using Filtration.ObjectModel.BlockItemTypes;
using Filtration.ObjectModel.Commands;
using Filtration.ObjectModel.Enums;
using GalaSoft.MvvmLight.CommandWpf;
using Xceed.Wpf.Toolkit;
namespace Filtration.ViewModels.DesignTime
{
internal class FakeCommandManager : ICommandManagerInternal {
public void ExecuteCommand(ICommand command)
{
throw new NotImplementedException();
}
public void Undo(int undoLevels = 1)
{
throw new NotImplementedException();
}
public void Redo(int redoLevels = 1)
{
throw new NotImplementedException();
}
public void SetScript(IItemFilterScriptInternal layout)
{
}
}
internal class DesignTimeItemFilterBlockViewModel : IItemFilterBlockViewModel
{
private ItemFilterBlock itemFilterBlock;
public DesignTimeItemFilterBlockViewModel()
{
itemFilterBlock = new ItemFilterBlock(new ItemFilterScript(new FakeCommandManager()))
{
Action = BlockAction.Show,
Enabled = true
};
itemFilterBlock.BlockItems.Add(new RarityBlockItem(FilterPredicateOperator.Equal, ItemRarity.Rare));
itemFilterBlock.BlockItems.Add(new DropLevelBlockItem(FilterPredicateOperator.GreaterThan, 23));
itemFilterBlock.BlockItems.Add(new BaseTypeBlockItem());
itemFilterBlock.BlockItems.Add(new BaseTypeBlockItem());
itemFilterBlock.BlockItems.Add(new BaseTypeBlockItem());
}
public void Initialise(IItemFilterBlockBase itemFilterBlock, IItemFilterScriptViewModel itemFilterScriptViewModel)
{
//throw new NotImplementedException();
}
public IItemFilterBlockBase BaseBlock { get; }
public bool IsDirty { get; set; }
public bool IsVisible { get; set; }
public event EventHandler BlockBecameDirty;
public bool IsExpanded
{
get => true;
set { }
}
public IItemFilterBlock Block => itemFilterBlock;
public bool BlockEnabled
{
get => true;
set { }
}
public string BlockDescription { get; set; }
public RelayCommand CopyBlockStyleCommand { get; }
public RelayCommand PasteBlockStyleCommand { get; }
public RelayCommand ToggleBlockActionCommand { get; }
public RelayCommand ReplaceColorsCommand { get; }
public RelayCommand<Type> AddFilterBlockItemCommand { get; }
public RelayCommand<IItemFilterBlockItem> RemoveFilterBlockItemCommand { get; }
public RelayCommand PlaySoundCommand { get; }
public RelayCommand PlayPositionalSoundCommand { get; }
public RelayCommand SwitchBlockItemsViewCommand { get; }
public RelayCommand CustomSoundFileDialogCommand { get; }
public RelayCommand PlayCustomSoundCommand { get; }
public RelayCommand AddBlockGroupCommand { get; }
public RelayCommand DeleteBlockGroupCommand { get; }
public ObservableCollection<ItemFilterBlockGroup> BlockGroups { get; }
public ObservableCollection<string> BlockGroupSuggestions { get; }
public string BlockGroupSearch { get; set; }
public ObservableCollection<IItemFilterBlockItem> BlockItems => Block.BlockItems;
public IEnumerable<IItemFilterBlockItem> SummaryBlockItems
{
get { return Block.BlockItems.Where(b => !(b is IAudioVisualBlockItem)); }
}
public IEnumerable<IItemFilterBlockItem> RegularBlockItems
{
get { return Block.BlockItems.Where(b => !(b is IAudioVisualBlockItem)); }
}
public IEnumerable<IItemFilterBlockItem> AudioVisualBlockItems { get; }
public bool AdvancedBlockGroup { get; }
public bool AudioVisualBlockItemsGridVisible { get; set; }
public bool DisplaySettingsPopupOpen { get; set; }
public IEnumerable<string> AutoCompleteItemClasses { get; }
public IEnumerable<string> AutoCompleteItemBaseTypes { get; }
public IEnumerable<string> AutoCompleteProphecies { get; }
public IEnumerable<string> AutocompleteItemMods { get; }
public List<Type> BlockItemTypesAvailable => new List<Type>
{
typeof (ItemLevelBlockItem),
typeof (DropLevelBlockItem),
typeof (QualityBlockItem),
typeof (RarityBlockItem),
typeof (SocketsBlockItem),
typeof (LinkedSocketsBlockItem),
typeof (WidthBlockItem),
typeof (HeightBlockItem),
typeof (SocketGroupBlockItem),
typeof (ClassBlockItem),
typeof (BaseTypeBlockItem),
typeof (ProphecyBlockItem),
typeof (IdentifiedBlockItem),
typeof (CorruptedBlockItem),
typeof (ElderItemBlockItem),
typeof (ShaperItemBlockItem),
typeof (SynthesisedItemBlockItem),
typeof (FracturedItemBlockItem),
typeof (AnyEnchantmentBlockItem),
typeof (MapTierBlockItem),
typeof (ShapedMapBlockItem),
typeof (ElderMapBlockItem),
typeof (GemLevelBlockItem),
typeof (StackSizeBlockItem),
typeof (HasExplicitModBlockItem),
typeof (HasEnchantmentBlockItem)
};
public List<Type> AudioVisualBlockItemTypesAvailable { get; }
public Color DisplayTextColor => Colors.Red;
public Color DisplayBackgroundColor => Colors.White;
public Color DisplayBorderColor => Colors.GreenYellow;
public double DisplayFontSize => 20;
public int DisplayIconSize { get; }
public int DisplayIconColor { get; }
public int DisplayIconShape { get; }
public Color DisplayEffectColor { get; }
public bool HasSound { get; }
public bool HasPositionalSound { get; }
public bool HasCustomSound { get; }
public bool HasDisabledDefaultSound { get; }
public bool HasAudioVisualBlockItems { get; }
public void RefreshBlockPreview()
{
throw new NotImplementedException();
}
}
}

View File

@@ -39,7 +39,7 @@ namespace Filtration.ViewModels.DesignTime
public bool IsScript { get; } public bool IsScript { get; }
public bool IsTheme { get; } public bool IsTheme { get; }
public Task Close() public Task<bool> Close()
{ {
throw new System.NotImplementedException(); throw new System.NotImplementedException();
} }

Some files were not shown because too many files have changed in this diff Show More