Compare commits
4 Commits
master
...
LootExplos
Author | SHA1 | Date |
---|---|---|
Ben | b97e3d1780 | |
Ben | 543446b23e | |
Ben | 2278cbdc3a | |
Ben | 45edbecd64 |
|
@ -1,43 +1,29 @@
|
||||||
## Ignore Visual Studio temporary files, build results, and
|
## Ignore Visual Studio temporary files, build results, and
|
||||||
## files generated by popular Visual Studio add-ons.
|
## files generated by popular Visual Studio add-ons.
|
||||||
##
|
|
||||||
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
|
||||||
|
|
||||||
# User-specific files
|
# User-specific files
|
||||||
/.vs/
|
|
||||||
*.suo
|
*.suo
|
||||||
*.user
|
*.user
|
||||||
*.userosscache
|
|
||||||
*.sln.docstates
|
*.sln.docstates
|
||||||
|
|
||||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
|
||||||
*.userprefs
|
|
||||||
|
|
||||||
# Build results
|
# Build results
|
||||||
[Dd]ebug/
|
[Dd]ebug/
|
||||||
[Dd]ebugPublic/
|
[Dd]ebugPublic/
|
||||||
[Rr]elease/
|
[Rr]elease/
|
||||||
[Rr]eleases/
|
|
||||||
x64/
|
x64/
|
||||||
x86/
|
build/
|
||||||
bld/
|
bld/
|
||||||
[Bb]in/
|
[Bb]in/
|
||||||
[Oo]bj/
|
[Oo]bj/
|
||||||
[Ll]og/
|
|
||||||
|
|
||||||
# Visual Studio 2015/2017 cache/options directory
|
# Roslyn cache directories
|
||||||
.vs/
|
*.ide/
|
||||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
|
||||||
#wwwroot/
|
|
||||||
|
|
||||||
# Visual Studio 2017 auto generated files
|
|
||||||
Generated\ Files/
|
|
||||||
|
|
||||||
# MSTest test Results
|
# MSTest test Results
|
||||||
[Tt]est[Rr]esult*/
|
[Tt]est[Rr]esult*/
|
||||||
[Bb]uild[Ll]og.*
|
[Bb]uild[Ll]og.*
|
||||||
|
|
||||||
# NUNIT
|
#NUNIT
|
||||||
*.VisualState.xml
|
*.VisualState.xml
|
||||||
TestResult.xml
|
TestResult.xml
|
||||||
|
|
||||||
|
@ -46,19 +32,6 @@ TestResult.xml
|
||||||
[Rr]eleasePS/
|
[Rr]eleasePS/
|
||||||
dlldata.c
|
dlldata.c
|
||||||
|
|
||||||
# Benchmark Results
|
|
||||||
BenchmarkDotNet.Artifacts/
|
|
||||||
|
|
||||||
# .NET Core
|
|
||||||
project.lock.json
|
|
||||||
project.fragment.lock.json
|
|
||||||
artifacts/
|
|
||||||
**/Properties/launchSettings.json
|
|
||||||
|
|
||||||
# StyleCop
|
|
||||||
StyleCopReport.xml
|
|
||||||
|
|
||||||
# Files built by Visual Studio
|
|
||||||
*_i.c
|
*_i.c
|
||||||
*_p.c
|
*_p.c
|
||||||
*_i.h
|
*_i.h
|
||||||
|
@ -91,21 +64,14 @@ _Chutzpah*
|
||||||
ipch/
|
ipch/
|
||||||
*.aps
|
*.aps
|
||||||
*.ncb
|
*.ncb
|
||||||
*.opendb
|
|
||||||
*.opensdf
|
*.opensdf
|
||||||
*.sdf
|
*.sdf
|
||||||
*.cachefile
|
*.cachefile
|
||||||
*.VC.db
|
|
||||||
*.VC.VC.opendb
|
|
||||||
|
|
||||||
# Visual Studio profiler
|
# Visual Studio profiler
|
||||||
*.psess
|
*.psess
|
||||||
*.vsp
|
*.vsp
|
||||||
*.vspx
|
*.vspx
|
||||||
*.sap
|
|
||||||
|
|
||||||
# Visual Studio Trace Files
|
|
||||||
*.e2e
|
|
||||||
|
|
||||||
# TFS 2012 Local Workspace
|
# TFS 2012 Local Workspace
|
||||||
$tf/
|
$tf/
|
||||||
|
@ -118,7 +84,7 @@ _ReSharper*/
|
||||||
*.[Rr]e[Ss]harper
|
*.[Rr]e[Ss]harper
|
||||||
*.DotSettings.user
|
*.DotSettings.user
|
||||||
|
|
||||||
# JustCode is a .NET coding add-in
|
# JustCode is a .NET coding addin-in
|
||||||
.JustCode
|
.JustCode
|
||||||
|
|
||||||
# TeamCity is a build add-in
|
# TeamCity is a build add-in
|
||||||
|
@ -127,18 +93,9 @@ _TeamCity*
|
||||||
# DotCover is a Code Coverage Tool
|
# DotCover is a Code Coverage Tool
|
||||||
*.dotCover
|
*.dotCover
|
||||||
|
|
||||||
# AxoCover is a Code Coverage Tool
|
|
||||||
.axoCover/*
|
|
||||||
!.axoCover/settings.json
|
|
||||||
|
|
||||||
# Visual Studio code coverage results
|
|
||||||
*.coverage
|
|
||||||
*.coveragexml
|
|
||||||
|
|
||||||
# NCrunch
|
# NCrunch
|
||||||
_NCrunch_*
|
_NCrunch_*
|
||||||
.*crunch*.local.xml
|
.*crunch*.local.xml
|
||||||
nCrunchTemp_*
|
|
||||||
|
|
||||||
# MightyMoose
|
# MightyMoose
|
||||||
*.mm.*
|
*.mm.*
|
||||||
|
@ -166,63 +123,42 @@ publish/
|
||||||
# Publish Web Output
|
# Publish Web Output
|
||||||
*.[Pp]ublish.xml
|
*.[Pp]ublish.xml
|
||||||
*.azurePubxml
|
*.azurePubxml
|
||||||
# Note: Comment the next line if you want to checkin your web deploy settings,
|
## TODO: Comment the next line if you want to checkin your
|
||||||
# but database connection strings (with potential passwords) will be unencrypted
|
## web deploy settings but do note that will include unencrypted
|
||||||
*.pubxml
|
## passwords
|
||||||
*.publishproj
|
#*.pubxml
|
||||||
|
|
||||||
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
# NuGet Packages Directory
|
||||||
# checkin your Azure Web App publish settings, but sensitive information contained
|
packages/*
|
||||||
# in these scripts will be unencrypted
|
## TODO: If the tool you use requires repositories.config
|
||||||
PublishScripts/
|
## uncomment the next line
|
||||||
|
#!packages/repositories.config
|
||||||
|
|
||||||
# NuGet Packages
|
# Enable "build/" folder in the NuGet Packages folder since
|
||||||
*.nupkg
|
# NuGet packages use it for MSBuild targets.
|
||||||
# The packages folder can be ignored because of Package Restore
|
# This line needs to be after the ignore of the build folder
|
||||||
**/[Pp]ackages/*
|
# (and the packages folder if the line above has been uncommented)
|
||||||
# except build/, which is used as an MSBuild target.
|
!packages/build/
|
||||||
!**/[Pp]ackages/build/
|
|
||||||
# Uncomment if necessary however generally it will be regenerated when needed
|
|
||||||
#!**/[Pp]ackages/repositories.config
|
|
||||||
# NuGet v3's project.json files produces more ignorable files
|
|
||||||
*.nuget.props
|
|
||||||
*.nuget.targets
|
|
||||||
|
|
||||||
# Microsoft Azure Build Output
|
# Windows Azure Build Output
|
||||||
csx/
|
csx/
|
||||||
*.build.csdef
|
*.build.csdef
|
||||||
|
|
||||||
# Microsoft Azure Emulator
|
# Windows Store app package directory
|
||||||
ecf/
|
|
||||||
rcf/
|
|
||||||
|
|
||||||
# Windows Store app package directories and files
|
|
||||||
AppPackages/
|
AppPackages/
|
||||||
BundleArtifacts/
|
|
||||||
Package.StoreAssociation.xml
|
|
||||||
_pkginfo.txt
|
|
||||||
*.appx
|
|
||||||
|
|
||||||
# Visual Studio cache files
|
|
||||||
# files ending in .cache can be ignored
|
|
||||||
*.[Cc]ache
|
|
||||||
# but keep track of directories ending in .cache
|
|
||||||
!*.[Cc]ache/
|
|
||||||
|
|
||||||
# Others
|
# Others
|
||||||
|
sql/
|
||||||
|
*.Cache
|
||||||
ClientBin/
|
ClientBin/
|
||||||
|
[Ss]tyle[Cc]op.*
|
||||||
~$*
|
~$*
|
||||||
*~
|
*~
|
||||||
*.dbmdl
|
*.dbmdl
|
||||||
*.dbproj.schemaview
|
*.dbproj.schemaview
|
||||||
*.jfm
|
|
||||||
*.pfx
|
*.pfx
|
||||||
*.publishsettings
|
*.publishsettings
|
||||||
orleans.codegen.cs
|
node_modules/
|
||||||
|
|
||||||
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
|
||||||
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
|
||||||
#bower_components/
|
|
||||||
|
|
||||||
# RIA/Silverlight projects
|
# RIA/Silverlight projects
|
||||||
Generated_Code/
|
Generated_Code/
|
||||||
|
@ -238,7 +174,6 @@ UpgradeLog*.htm
|
||||||
# SQL Server files
|
# SQL Server files
|
||||||
*.mdf
|
*.mdf
|
||||||
*.ldf
|
*.ldf
|
||||||
*.ndf
|
|
||||||
|
|
||||||
# Business Intelligence projects
|
# Business Intelligence projects
|
||||||
*.rdl.data
|
*.rdl.data
|
||||||
|
@ -248,69 +183,8 @@ UpgradeLog*.htm
|
||||||
# Microsoft Fakes
|
# Microsoft Fakes
|
||||||
FakesAssemblies/
|
FakesAssemblies/
|
||||||
|
|
||||||
# GhostDoc plugin setting file
|
# LightSwitch generated files
|
||||||
*.GhostDoc.xml
|
GeneratedArtifacts/
|
||||||
|
_Pvt_Extensions/
|
||||||
# Node.js Tools for Visual Studio
|
ModelManifest.xml
|
||||||
.ntvs_analysis.dat
|
/Releases
|
||||||
node_modules/
|
|
||||||
|
|
||||||
# TypeScript v1 declaration files
|
|
||||||
typings/
|
|
||||||
|
|
||||||
# Visual Studio 6 build log
|
|
||||||
*.plg
|
|
||||||
|
|
||||||
# Visual Studio 6 workspace options file
|
|
||||||
*.opt
|
|
||||||
|
|
||||||
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
|
||||||
*.vbw
|
|
||||||
|
|
||||||
# Visual Studio LightSwitch build output
|
|
||||||
**/*.HTMLClient/GeneratedArtifacts
|
|
||||||
**/*.DesktopClient/GeneratedArtifacts
|
|
||||||
**/*.DesktopClient/ModelManifest.xml
|
|
||||||
**/*.Server/GeneratedArtifacts
|
|
||||||
**/*.Server/ModelManifest.xml
|
|
||||||
_Pvt_Extensions
|
|
||||||
|
|
||||||
# Paket dependency manager
|
|
||||||
.paket/paket.exe
|
|
||||||
paket-files/
|
|
||||||
|
|
||||||
# FAKE - F# Make
|
|
||||||
.fake/
|
|
||||||
|
|
||||||
# JetBrains Rider
|
|
||||||
.idea/
|
|
||||||
*.sln.iml
|
|
||||||
|
|
||||||
# CodeRush
|
|
||||||
.cr/
|
|
||||||
|
|
||||||
# Python Tools for Visual Studio (PTVS)
|
|
||||||
__pycache__/
|
|
||||||
*.pyc
|
|
||||||
|
|
||||||
# Cake - Uncomment if you are using it
|
|
||||||
# tools/**
|
|
||||||
# !tools/packages.config
|
|
||||||
|
|
||||||
# Tabs Studio
|
|
||||||
*.tss
|
|
||||||
|
|
||||||
# Telerik's JustMock configuration file
|
|
||||||
*.jmconfig
|
|
||||||
|
|
||||||
# BizTalk build output
|
|
||||||
*.btp.cs
|
|
||||||
*.btm.cs
|
|
||||||
*.odx.cs
|
|
||||||
*.xsd.cs
|
|
||||||
|
|
||||||
# OpenCover UI analysis results
|
|
||||||
OpenCover/
|
|
||||||
|
|
||||||
# Azure Stream Analytics local run output
|
|
||||||
ASALocalRun/
|
|
||||||
|
|
|
@ -9,11 +9,8 @@
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>Filtration.Common.Tests</RootNamespace>
|
<RootNamespace>Filtration.Common.Tests</RootNamespace>
|
||||||
<AssemblyName>Filtration.Common.Tests</AssemblyName>
|
<AssemblyName>Filtration.Common.Tests</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<TargetFrameworkProfile />
|
|
||||||
<NuGetPackageImportStamp>
|
|
||||||
</NuGetPackageImportStamp>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
@ -33,8 +30,13 @@
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Reference Include="Moq">
|
||||||
|
<HintPath>..\packages\Moq.4.2.1506.2515\lib\net40\Moq.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="nunit.framework">
|
||||||
|
<HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Configuration" />
|
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.Xml.Linq" />
|
<Reference Include="System.Xml.Linq" />
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
@ -46,24 +48,7 @@
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="app.config" />
|
<None Include="packages.config" />
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="Castle.Core">
|
|
||||||
<Version>4.4.0</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="Moq">
|
|
||||||
<Version>4.10.1</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="NUnit">
|
|
||||||
<Version>3.11.0</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="System.Threading.Tasks.Extensions">
|
|
||||||
<Version>4.5.2</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="System.ValueTuple">
|
|
||||||
<Version>4.5.0</Version>
|
|
||||||
</PackageReference>
|
|
||||||
</ItemGroup>
|
</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.
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
// General Information about an assembly is controlled through the following
|
// General Information about an assembly is controlled through the following
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<configuration>
|
|
||||||
<runtime>
|
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<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" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<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" />
|
|
||||||
</dependentAssembly>
|
|
||||||
</assemblyBinding>
|
|
||||||
</runtime>
|
|
||||||
</configuration>
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="Moq" version="4.2.1506.2515" targetFramework="net451" />
|
||||||
|
<package id="NUnit" version="2.6.4" targetFramework="net451" />
|
||||||
|
</packages>
|
|
@ -4,7 +4,7 @@ using System.Windows.Data;
|
||||||
|
|
||||||
namespace Filtration.Common.Converters
|
namespace Filtration.Common.Converters
|
||||||
{
|
{
|
||||||
public class BooleanInverterConverter : IValueConverter
|
internal class BoolInverterConverter : IValueConverter
|
||||||
{
|
{
|
||||||
public object Convert(object value, Type targetType, object parameter,
|
public object Convert(object value, Type targetType, object parameter,
|
||||||
CultureInfo culture)
|
CultureInfo culture)
|
||||||
|
|
|
@ -13,7 +13,10 @@ namespace Filtration.Common.Converters
|
||||||
|
|
||||||
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
|
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
|
||||||
{
|
{
|
||||||
return ((SolidColorBrush) value)?.Color;
|
if (value != null)
|
||||||
|
return ((SolidColorBrush)value).Color;
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,9 +9,8 @@
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>Filtration.Common</RootNamespace>
|
<RootNamespace>Filtration.Common</RootNamespace>
|
||||||
<AssemblyName>Filtration.Common</AssemblyName>
|
<AssemblyName>Filtration.Common</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<TargetFrameworkProfile />
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
@ -31,13 +30,31 @@
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Reference Include="Castle.Core">
|
||||||
|
<HintPath>..\packages\Castle.Core.3.3.0\lib\net45\Castle.Core.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Castle.Windsor">
|
||||||
|
<HintPath>..\packages\Castle.Windsor.3.3.0\lib\net45\Castle.Windsor.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="GalaSoft.MvvmLight">
|
||||||
|
<HintPath>..\packages\MvvmLightLibs.5.1.1.0\lib\net45\GalaSoft.MvvmLight.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="GalaSoft.MvvmLight.Extras">
|
||||||
|
<HintPath>..\packages\MvvmLightLibs.5.1.1.0\lib\net45\GalaSoft.MvvmLight.Extras.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="GalaSoft.MvvmLight.Platform">
|
||||||
|
<HintPath>..\packages\MvvmLightLibs.5.1.1.0\lib\net45\GalaSoft.MvvmLight.Platform.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Practices.ServiceLocation">
|
||||||
|
<HintPath>..\packages\CommonServiceLocator.1.3\lib\portable-net4+sl5+netcore45+wpa81+wp8\Microsoft.Practices.ServiceLocation.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="PresentationCore" />
|
<Reference Include="PresentationCore" />
|
||||||
<Reference Include="PresentationFramework" />
|
<Reference Include="PresentationFramework" />
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Configuration" />
|
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.Runtime.Remoting" />
|
<Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<Reference Include="System.Web" />
|
<HintPath>..\packages\MvvmLightLibs.5.1.1.0\lib\net45\System.Windows.Interactivity.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System.Xaml" />
|
<Reference Include="System.Xaml" />
|
||||||
<Reference Include="System.Xml.Linq" />
|
<Reference Include="System.Xml.Linq" />
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
@ -52,20 +69,16 @@
|
||||||
<Compile Include="Converters\ColorToSolidColorBrushConverter.cs" />
|
<Compile Include="Converters\ColorToSolidColorBrushConverter.cs" />
|
||||||
<Compile Include="Converters\InverseBooleanVisibilityConverter.cs" />
|
<Compile Include="Converters\InverseBooleanVisibilityConverter.cs" />
|
||||||
<Compile Include="Converters\StringToVisibilityConverter.cs" />
|
<Compile Include="Converters\StringToVisibilityConverter.cs" />
|
||||||
<Compile Include="Extensions\EnumerationExtension.cs" />
|
|
||||||
<Compile Include="Extensions\HyperlinkExtensions.cs" />
|
|
||||||
<Compile Include="Messages\ThemeClosedMessage.cs" />
|
<Compile Include="Messages\ThemeClosedMessage.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<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="ViewModels\FiltrationViewModelBase.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>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="app.config" />
|
<None Include="packages.config" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\Filtration.ObjectModel\Filtration.ObjectModel.csproj">
|
<ProjectReference Include="..\Filtration.ObjectModel\Filtration.ObjectModel.csproj">
|
||||||
|
@ -79,23 +92,6 @@
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="Castle.Core">
|
|
||||||
<Version>4.4.0</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="Castle.Windsor">
|
|
||||||
<Version>5.0.0</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="CommonServiceLocator">
|
|
||||||
<Version>2.0.4</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="Extended.Wpf.Toolkit">
|
|
||||||
<Version>3.5.0</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="MvvmLightLibs">
|
|
||||||
<Version>5.4.1.1</Version>
|
|
||||||
</PackageReference>
|
|
||||||
</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.
|
||||||
|
|
|
@ -1,4 +1,10 @@
|
||||||
namespace Filtration.Common.Messages
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Filtration.Common.Messages
|
||||||
{
|
{
|
||||||
class ThemeClosedMessage
|
class ThemeClosedMessage
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace Filtration.Common.Services
|
namespace Filtration.Common.Services
|
||||||
{
|
{
|
||||||
|
@ -21,7 +20,7 @@ namespace Filtration.Common.Services
|
||||||
|
|
||||||
public void WriteFileFromString(string filePath, string inputString)
|
public void WriteFileFromString(string filePath, string inputString)
|
||||||
{
|
{
|
||||||
File.WriteAllText(filePath, inputString, Encoding.UTF8);
|
File.WriteAllText(filePath, inputString);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool DirectoryExists(string directoryPath)
|
public bool DirectoryExists(string directoryPath)
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
<Setter Property="Margin" Value="0,0,5,5" />
|
<Setter Property="Margin" Value="0,0,5,5" />
|
||||||
</Style>
|
</Style>
|
||||||
<converters:StringToVisibilityConverter x:Key="StringToVisibilityConverter" />
|
<converters:StringToVisibilityConverter x:Key="StringToVisibilityConverter" />
|
||||||
<converters:BooleanInverterConverter x:Key="BoolInverterConverter" />
|
<converters:BoolInverterConverter x:Key="BoolInverterConverter" />
|
||||||
<converters:ColorToSolidColorBrushConverter x:Key="ColorToSolidColorBrushConverter" />
|
<converters:ColorToSolidColorBrushConverter x:Key="ColorToSolidColorBrushConverter" />
|
||||||
<converters:BooleanVisibilityConverter x:Key="BooleanVisibilityConverter" />
|
<converters:BooleanVisibilityConverter x:Key="BooleanVisibilityConverter" />
|
||||||
<converters:InverseBooleanVisibilityConverter x:Key="InverseBooleanVisibilityConverter" />
|
<converters:InverseBooleanVisibilityConverter x:Key="InverseBooleanVisibilityConverter" />
|
||||||
|
|
|
@ -1,48 +0,0 @@
|
||||||
using System.Collections.ObjectModel;
|
|
||||||
using System.Windows.Media;
|
|
||||||
using Xceed.Wpf.Toolkit;
|
|
||||||
|
|
||||||
namespace Filtration.Common.Utilities
|
|
||||||
{
|
|
||||||
public static class PathOfExileColors
|
|
||||||
{
|
|
||||||
static PathOfExileColors()
|
|
||||||
{
|
|
||||||
DefaultColors = new ObservableCollection<ColorItem>
|
|
||||||
{
|
|
||||||
new ColorItem(new Color {A = 240, R=127, G = 127, B = 127}, "Default"),
|
|
||||||
new ColorItem(new Color {A = 240, R=255, G = 255, B = 255}, "Value Default"),
|
|
||||||
new ColorItem(new Color {A = 240, R=255, G = 192, B = 203}, "Pink"),
|
|
||||||
new ColorItem(new Color {A = 240, R=30, G = 144, B = 255}, "Dodger Blue"),
|
|
||||||
new ColorItem(new Color {A = 240, R=150, G = 0, B = 0}, "Fire"),
|
|
||||||
new ColorItem(new Color {A = 240, R=54, G = 100, B = 146}, "Cold"),
|
|
||||||
new ColorItem(new Color {A = 240, R=255, G = 215, B = 0}, "Lightning"),
|
|
||||||
new ColorItem(new Color {A = 240, R=208, G = 32, B = 144}, "Chaos"),
|
|
||||||
new ColorItem(new Color {A = 240, R=136, G = 136, B = 255}, "Augmented"),
|
|
||||||
new ColorItem(new Color {A = 240, R=184, G = 218, B = 242}, "Crafted"),
|
|
||||||
new ColorItem(new Color {A = 240, R=210, G = 0, B = 0}, "Unmet"),
|
|
||||||
new ColorItem(new Color {A = 240, R=175, G = 96, B = 37}, "Unique Item"),
|
|
||||||
new ColorItem(new Color {A = 240, R=255, G = 255, B = 119}, "Rare Item"),
|
|
||||||
new ColorItem(new Color {A = 240, R=136, G = 136, B = 255}, "Magic Item"),
|
|
||||||
new ColorItem(new Color {A = 240, R=200, G = 200, B = 200}, "White Item"),
|
|
||||||
new ColorItem(new Color {A = 240, R=27, G = 162, B = 155}, "Gem Item"),
|
|
||||||
new ColorItem(new Color {A = 240, R=170, G = 158, B = 130}, "Currency Item"),
|
|
||||||
new ColorItem(new Color {A = 240, R=74, G = 230, B = 58}, "Quest Item"),
|
|
||||||
new ColorItem(new Color {A = 240, R=255, G = 200, B = 0}, "Nemesis Mod"),
|
|
||||||
new ColorItem(new Color {A = 220, R = 255, G = 40, B = 0}, "Nemesis Mod Outline"),
|
|
||||||
new ColorItem(new Color {A = 240, R=231, G = 180, B = 120}, "Title"),
|
|
||||||
new ColorItem(new Color {A = 240, R=210, G = 0, B = 0}, "Corrupted"),
|
|
||||||
new ColorItem(new Color {A = 240, R=170, G = 158, B = 130}, "Favour"),
|
|
||||||
new ColorItem(new Color {A = 240, R=180, G = 96, B = 0}, "Supporter Pack New Item"),
|
|
||||||
new ColorItem(new Color {A = 240, R=163, G = 141, B = 109}, "Supporter Pack Item"),
|
|
||||||
new ColorItem(new Color {A = 240, R=210, G = 0, B = 220}, "Bloodline Mod"),
|
|
||||||
new ColorItem(new Color {A = 200, R = 74, G = 0, B = 160}, "Bloodline Mod Outline"),
|
|
||||||
new ColorItem(new Color {A = 240, R=50, G = 230, B = 100}, "Torment Mod"),
|
|
||||||
new ColorItem(new Color {A = 200, R = 0, G = 100, B = 150}, "Torment Mod Outline"),
|
|
||||||
new ColorItem(new Color {A = 240, R=210, G = 0, B = 0}, "Can't Trade or Modify")
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ObservableCollection<ColorItem> DefaultColors { get; private set; }
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using Filtration.ObjectModel.Annotations;
|
||||||
|
using GalaSoft.MvvmLight;
|
||||||
|
|
||||||
|
namespace Filtration.Common.ViewModels
|
||||||
|
{
|
||||||
|
public class FiltrationViewModelBase : ViewModelBase
|
||||||
|
{
|
||||||
|
/// This gives us the ReSharper option to transform an autoproperty into a property with change notification
|
||||||
|
/// Also leverages .net 4.5 callermembername attribute
|
||||||
|
[NotifyPropertyChangedInvocator]
|
||||||
|
protected override void RaisePropertyChanged([CallerMemberName]string property = "")
|
||||||
|
{
|
||||||
|
base.RaisePropertyChanged(property);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,9 +1,8 @@
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using GalaSoft.MvvmLight;
|
|
||||||
|
|
||||||
namespace Filtration.Common.ViewModels
|
namespace Filtration.Common.ViewModels
|
||||||
{
|
{
|
||||||
public class PaneViewModel : ViewModelBase
|
public class PaneViewModel : FiltrationViewModelBase
|
||||||
{
|
{
|
||||||
private string _title;
|
private string _title;
|
||||||
public string Title
|
public string Title
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<configuration>
|
|
||||||
<runtime>
|
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="CommonServiceLocator" publicKeyToken="489b6accfaf20ef0" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-2.0.4.0" newVersion="2.0.4.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
</assemblyBinding>
|
|
||||||
</runtime>
|
|
||||||
</configuration>
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="Castle.Core" version="3.3.0" targetFramework="net451" />
|
||||||
|
<package id="Castle.Windsor" version="3.3.0" targetFramework="net451" />
|
||||||
|
<package id="CommonServiceLocator" version="1.3" targetFramework="net451" />
|
||||||
|
<package id="MvvmLightLibs" version="5.1.1.0" targetFramework="net451" />
|
||||||
|
</packages>
|
|
@ -9,9 +9,8 @@
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>Filtration.Interface</RootNamespace>
|
<RootNamespace>Filtration.Interface</RootNamespace>
|
||||||
<AssemblyName>Filtration.Interface</AssemblyName>
|
<AssemblyName>Filtration.Interface</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<TargetFrameworkProfile />
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
@ -46,17 +45,6 @@
|
||||||
<Compile Include="IEditableDocument.cs" />
|
<Compile Include="IEditableDocument.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<None Include="app.config" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="CommonServiceLocator">
|
|
||||||
<Version>2.0.4</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="MvvmLightLibs">
|
|
||||||
<Version>5.4.1.1</Version>
|
|
||||||
</PackageReference>
|
|
||||||
</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.
|
||||||
|
|
|
@ -1,14 +1,9 @@
|
||||||
using System.Threading.Tasks;
|
namespace Filtration.Interface
|
||||||
using System.Windows.Input;
|
|
||||||
using GalaSoft.MvvmLight.CommandWpf;
|
|
||||||
|
|
||||||
namespace Filtration.Interface
|
|
||||||
{
|
{
|
||||||
public interface IDocument
|
public interface IDocument
|
||||||
{
|
{
|
||||||
bool IsScript { get; }
|
bool IsScript { get; }
|
||||||
bool IsTheme { get; }
|
bool IsTheme { get; }
|
||||||
Task<bool> Close();
|
void Close();
|
||||||
RelayCommand CloseCommand { get; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,9 @@
|
||||||
using System.Threading.Tasks;
|
namespace Filtration.Interface
|
||||||
|
|
||||||
namespace Filtration.Interface
|
|
||||||
{
|
{
|
||||||
public interface IEditableDocument : IDocument
|
public interface IEditableDocument : IDocument
|
||||||
{
|
{
|
||||||
bool IsDirty { get; }
|
bool IsDirty { get; }
|
||||||
Task SaveAsync();
|
void Save();
|
||||||
Task SaveAsAsync();
|
void SaveAs();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
// General Information about an assembly is controlled through the following
|
// General Information about an assembly is controlled through the following
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<configuration>
|
|
||||||
<runtime>
|
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="CommonServiceLocator" publicKeyToken="489b6accfaf20ef0" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-2.0.4.0" newVersion="2.0.4.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
</assemblyBinding>
|
|
||||||
</runtime>
|
|
||||||
</configuration>
|
|
|
@ -1,34 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<configuration>
|
|
||||||
<configSections>
|
|
||||||
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
|
|
||||||
|
|
||||||
</configSections>
|
|
||||||
<entityFramework>
|
|
||||||
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
|
|
||||||
<parameters>
|
|
||||||
<parameter value="mssqllocaldb" />
|
|
||||||
</parameters>
|
|
||||||
</defaultConnectionFactory>
|
|
||||||
<providers>
|
|
||||||
<provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
|
|
||||||
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
|
|
||||||
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
|
|
||||||
</providers>
|
|
||||||
</entityFramework>
|
|
||||||
<startup>
|
|
||||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
|
|
||||||
</startup>
|
|
||||||
<connectionStrings>
|
|
||||||
<add name="FiltrationDbContext" connectionString="data source="D:\C# Projects\Filtration\Filtration.db"" providerName="System.Data.SQLite.EF6" />
|
|
||||||
</connectionStrings>
|
|
||||||
|
|
||||||
<runtime>
|
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="CommonServiceLocator" publicKeyToken="489b6accfaf20ef0" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-2.0.4.0" newVersion="2.0.4.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
</assemblyBinding>
|
|
||||||
</runtime>
|
|
||||||
</configuration>
|
|
|
@ -1,111 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
|
||||||
<ProjectGuid>{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}</ProjectGuid>
|
|
||||||
<OutputType>Library</OutputType>
|
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
|
||||||
<RootNamespace>Filtration.ItemFilterPreview.Data.Tests</RootNamespace>
|
|
||||||
<AssemblyName>Filtration.ItemFilterPreview.Data.Tests</AssemblyName>
|
|
||||||
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
|
||||||
<FileAlignment>512</FileAlignment>
|
|
||||||
<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
|
||||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
|
||||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
|
||||||
<ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages</ReferencePath>
|
|
||||||
<IsCodedUITest>False</IsCodedUITest>
|
|
||||||
<TestProjectType>UnitTest</TestProjectType>
|
|
||||||
<TargetFrameworkProfile />
|
|
||||||
<NuGetPackageImportStamp>
|
|
||||||
</NuGetPackageImportStamp>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
|
||||||
<DebugType>full</DebugType>
|
|
||||||
<Optimize>false</Optimize>
|
|
||||||
<OutputPath>bin\Debug\</OutputPath>
|
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
||||||
<DebugType>pdbonly</DebugType>
|
|
||||||
<Optimize>true</Optimize>
|
|
||||||
<OutputPath>bin\Release\</OutputPath>
|
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Reference Include="System" />
|
|
||||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Choose>
|
|
||||||
<When Condition="('$(VisualStudioVersion)' == '10.0' or '$(VisualStudioVersion)' == '') and '$(TargetFrameworkVersion)' == 'v3.5'">
|
|
||||||
<ItemGroup>
|
|
||||||
<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
|
|
||||||
</ItemGroup>
|
|
||||||
</When>
|
|
||||||
<Otherwise>
|
|
||||||
<ItemGroup>
|
|
||||||
<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework" />
|
|
||||||
</ItemGroup>
|
|
||||||
</Otherwise>
|
|
||||||
</Choose>
|
|
||||||
<ItemGroup>
|
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
|
||||||
<Compile Include="Repositories\TestItemSetRepository.cs" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="App.config" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\Filtration.ItemFilterPreview.Data\Filtration.ItemFilterPreview.Data.csproj">
|
|
||||||
<Project>{855b38cc-eef2-471d-bbbc-eb3e2ff3d387}</Project>
|
|
||||||
<Name>Filtration.ItemFilterPreview.Data</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\Filtration.ObjectModel\Filtration.ObjectModel.csproj">
|
|
||||||
<Project>{4aac3beb-1dc1-483e-9d11-0e9334e80227}</Project>
|
|
||||||
<Name>Filtration.ObjectModel</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="NUnit">
|
|
||||||
<Version>3.11.0</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="System.Data.SQLite">
|
|
||||||
<Version>1.0.109.2</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="System.Data.SQLite.Core">
|
|
||||||
<Version>1.0.109.2</Version>
|
|
||||||
</PackageReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<Choose>
|
|
||||||
<When Condition="'$(VisualStudioVersion)' == '10.0' And '$(IsCodedUITest)' == 'True'">
|
|
||||||
<ItemGroup>
|
|
||||||
<Reference Include="Microsoft.VisualStudio.QualityTools.CodedUITestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Microsoft.VisualStudio.TestTools.UITest.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Microsoft.VisualStudio.TestTools.UITest.Extension, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Microsoft.VisualStudio.TestTools.UITesting, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
</ItemGroup>
|
|
||||||
</When>
|
|
||||||
</Choose>
|
|
||||||
<Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />
|
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
|
||||||
<Target Name="BeforeBuild">
|
|
||||||
</Target>
|
|
||||||
<Target Name="AfterBuild">
|
|
||||||
</Target>
|
|
||||||
-->
|
|
||||||
</Project>
|
|
|
@ -1,55 +0,0 @@
|
||||||
using System.Linq;
|
|
||||||
using Filtration.ItemFilterPreview.Data.Repositories;
|
|
||||||
using Filtration.ObjectModel;
|
|
||||||
using Filtration.ObjectModel.Enums;
|
|
||||||
using NUnit.Framework;
|
|
||||||
|
|
||||||
namespace Filtration.ItemFilterPreview.Data.Tests.Repositories
|
|
||||||
{
|
|
||||||
[Ignore("integration test")]
|
|
||||||
[TestFixture]
|
|
||||||
public class TestItemSetRepository
|
|
||||||
{
|
|
||||||
[Test]
|
|
||||||
public void All_ReturnsAllItemSets()
|
|
||||||
{
|
|
||||||
using (var repository = new ItemSetRepository())
|
|
||||||
{
|
|
||||||
var result = repository.All.ToList();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void AddItemToItemSet()
|
|
||||||
{
|
|
||||||
ItemSet fetchedItemSet;
|
|
||||||
using (var repository = new ItemSetRepository())
|
|
||||||
{
|
|
||||||
fetchedItemSet = repository.Find(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
var newItem = new Item
|
|
||||||
{
|
|
||||||
BaseType = "Test Base",
|
|
||||||
Description = "Test Item Supreme",
|
|
||||||
DropLevel = 75,
|
|
||||||
Height = 3,
|
|
||||||
Width = 2,
|
|
||||||
ItemClass = "Super Class",
|
|
||||||
ItemRarity = ItemRarity.Rare,
|
|
||||||
ItemLevel = 50,
|
|
||||||
ItemSet = fetchedItemSet,
|
|
||||||
ItemSetId = fetchedItemSet.Id
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
fetchedItemSet.Items.Add(newItem);
|
|
||||||
|
|
||||||
using (var repository = new ItemSetRepository())
|
|
||||||
{
|
|
||||||
repository.InsertOrUpdate(fetchedItemSet);
|
|
||||||
repository.Save();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<configuration>
|
|
||||||
<configSections>
|
|
||||||
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
|
|
||||||
|
|
||||||
</configSections>
|
|
||||||
<entityFramework>
|
|
||||||
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
|
|
||||||
<parameters>
|
|
||||||
<parameter value="mssqllocaldb" />
|
|
||||||
</parameters>
|
|
||||||
</defaultConnectionFactory>
|
|
||||||
<providers>
|
|
||||||
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
|
|
||||||
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
|
|
||||||
</providers>
|
|
||||||
</entityFramework>
|
|
||||||
<startup>
|
|
||||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
|
|
||||||
</startup>
|
|
||||||
<connectionStrings>
|
|
||||||
<add name="FiltrationDbContext" connectionString="data source="D:\C# Projects\Filtration\Filtration.db"" providerName="System.Data.SQLite.EF6" />
|
|
||||||
</connectionStrings>
|
|
||||||
|
|
||||||
<runtime>
|
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="CommonServiceLocator" publicKeyToken="489b6accfaf20ef0" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-2.0.4.0" newVersion="2.0.4.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
</assemblyBinding>
|
|
||||||
</runtime>
|
|
||||||
</configuration>
|
|
|
@ -1,47 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Data.Entity;
|
|
||||||
using Filtration.ObjectModel;
|
|
||||||
|
|
||||||
namespace Filtration.ItemFilterPreview.Data.DataContexts
|
|
||||||
{
|
|
||||||
public class FiltrationDbContext : DbContext
|
|
||||||
{
|
|
||||||
public FiltrationDbContext() : base("name=FiltrationDbContext")
|
|
||||||
{
|
|
||||||
// Disable database initializer
|
|
||||||
Database.SetInitializer<FiltrationDbContext>(null);
|
|
||||||
Database.Log = Console.WriteLine;
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual DbSet<Item> Items { get; set; }
|
|
||||||
public virtual DbSet<ItemSet> ItemSets { get; set; }
|
|
||||||
|
|
||||||
protected override void OnModelCreating(DbModelBuilder modelBuilder)
|
|
||||||
{
|
|
||||||
modelBuilder.Entity<Item>()
|
|
||||||
.Property(e => e.Description)
|
|
||||||
.IsUnicode(false);
|
|
||||||
|
|
||||||
modelBuilder.Entity<Item>()
|
|
||||||
.Property(e => e.BaseType)
|
|
||||||
.IsUnicode(false);
|
|
||||||
|
|
||||||
modelBuilder.Entity<Item>()
|
|
||||||
.Property(e => e.ItemClass)
|
|
||||||
.IsUnicode(false);
|
|
||||||
|
|
||||||
modelBuilder.Entity<Item>()
|
|
||||||
.Property(e => e.Sockets)
|
|
||||||
.IsUnicode(false);
|
|
||||||
|
|
||||||
modelBuilder.Entity<ItemSet>()
|
|
||||||
.Property(e => e.Name)
|
|
||||||
.IsUnicode(false);
|
|
||||||
|
|
||||||
modelBuilder.Entity<ItemSet>()
|
|
||||||
.HasMany(e => e.Items)
|
|
||||||
.WithRequired(e => e.ItemSet)
|
|
||||||
.WillCascadeOnDelete(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,16 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Linq.Expressions;
|
|
||||||
|
|
||||||
namespace Filtration.ItemFilterPreview.Data.Repositories
|
|
||||||
{
|
|
||||||
public interface IEntityRepository<T> : IDisposable
|
|
||||||
{
|
|
||||||
IQueryable<T> All { get; }
|
|
||||||
IQueryable<T> AllIncluding(params Expression<Func<T, object>>[] includeProperties);
|
|
||||||
T Find(int id);
|
|
||||||
void InsertOrUpdate(T itemSet);
|
|
||||||
void Delete(int id);
|
|
||||||
void Save();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,63 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Data.Entity;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Linq.Expressions;
|
|
||||||
using Filtration.ItemFilterPreview.Data.DataContexts;
|
|
||||||
using Filtration.ObjectModel;
|
|
||||||
|
|
||||||
namespace Filtration.ItemFilterPreview.Data.Repositories
|
|
||||||
{
|
|
||||||
public class ItemSetRepository : IEntityRepository<ItemSet>
|
|
||||||
{
|
|
||||||
FiltrationDbContext _context = new FiltrationDbContext();
|
|
||||||
|
|
||||||
|
|
||||||
public IQueryable<ItemSet> All => _context.ItemSets;
|
|
||||||
|
|
||||||
public IQueryable<ItemSet> AllIncluding(params Expression<Func<ItemSet, object>>[] includeProperties)
|
|
||||||
{
|
|
||||||
IQueryable<ItemSet> query = _context.ItemSets;
|
|
||||||
foreach (var includeProperty in includeProperties)
|
|
||||||
{
|
|
||||||
query = query.Include(includeProperty);
|
|
||||||
}
|
|
||||||
|
|
||||||
return query;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ItemSet Find(int id)
|
|
||||||
{
|
|
||||||
return _context.ItemSets.Find(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void InsertOrUpdate(ItemSet itemSet)
|
|
||||||
{
|
|
||||||
if (itemSet.Id == default(long))
|
|
||||||
{
|
|
||||||
// New entity
|
|
||||||
_context.ItemSets.Add(itemSet);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Existing entity
|
|
||||||
_context.Entry(itemSet).State = EntityState.Modified;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Delete(int id)
|
|
||||||
{
|
|
||||||
var itemSet = _context.ItemSets.Find(id);
|
|
||||||
_context.ItemSets.Remove(itemSet);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Save()
|
|
||||||
{
|
|
||||||
_context.SaveChanges();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
_context.Dispose();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,130 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
|
||||||
<ProductVersion>
|
|
||||||
</ProductVersion>
|
|
||||||
<SchemaVersion>2.0</SchemaVersion>
|
|
||||||
<ProjectGuid>{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}</ProjectGuid>
|
|
||||||
<OutputType>Library</OutputType>
|
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
|
||||||
<RootNamespace>Filtration.ItemFilterPreview.Tests</RootNamespace>
|
|
||||||
<AssemblyName>Filtration.ItemFilterPreview.Tests</AssemblyName>
|
|
||||||
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
|
||||||
<TargetPlatformVersion>8.1</TargetPlatformVersion>
|
|
||||||
<MinimumVisualStudioVersion>12</MinimumVisualStudioVersion>
|
|
||||||
<FileAlignment>512</FileAlignment>
|
|
||||||
<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
|
||||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
|
||||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
|
||||||
<ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages</ReferencePath>
|
|
||||||
<IsCodedUITest>True</IsCodedUITest>
|
|
||||||
<TestProjectType>CodedUITest</TestProjectType>
|
|
||||||
<IsWindowsStoreCodedUITest>True</IsWindowsStoreCodedUITest>
|
|
||||||
<TargetFrameworkProfile />
|
|
||||||
<NuGetPackageImportStamp>
|
|
||||||
</NuGetPackageImportStamp>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
|
||||||
<DebugType>full</DebugType>
|
|
||||||
<Optimize>false</Optimize>
|
|
||||||
<OutputPath>bin\Debug\</OutputPath>
|
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
||||||
<DebugType>pdbonly</DebugType>
|
|
||||||
<Optimize>true</Optimize>
|
|
||||||
<OutputPath>bin\Release\</OutputPath>
|
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Reference Include="System" />
|
|
||||||
<Reference Include="System.Configuration" />
|
|
||||||
<Reference Include="System.Xml" />
|
|
||||||
<Reference Include="System.Xml.Linq" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
|
|
||||||
<Visible>False</Visible>
|
|
||||||
</CodeAnalysisDependentAssemblyPaths>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
|
||||||
<Compile Include="Properties\Resources.Designer.cs">
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<DependentUpon>Resources.resx</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Services\serializationtest.cs" />
|
|
||||||
<Compile Include="Services\TestItemBlockItemMatcher.cs" />
|
|
||||||
<Compile Include="Services\TestItemFilterProcessor.cs" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="app.config" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\Filtration.ItemFilterPreview\Filtration.ItemFilterPreview.csproj">
|
|
||||||
<Project>{3ab98b6e-05db-44fa-9dad-584aa88f0739}</Project>
|
|
||||||
<Name>Filtration.ItemFilterPreview</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\Filtration.ObjectModel\Filtration.ObjectModel.csproj">
|
|
||||||
<Project>{4aac3beb-1dc1-483e-9d11-0e9334e80227}</Project>
|
|
||||||
<Name>Filtration.ObjectModel</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\Filtration.Parser.Interface\Filtration.Parser.Interface.csproj">
|
|
||||||
<Project>{46383F20-02DF-48B4-B092-9088FA4ACD5A}</Project>
|
|
||||||
<Name>Filtration.Parser.Interface</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\Filtration.Parser\Filtration.Parser.csproj">
|
|
||||||
<Project>{10a7c2bc-ec6f-4a38-bdda-e35935004c02}</Project>
|
|
||||||
<Name>Filtration.Parser</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\Filtration\Filtration.csproj">
|
|
||||||
<Project>{55e0a34c-e039-43d7-a024-a4045401cdda}</Project>
|
|
||||||
<Name>Filtration</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Include="Properties\Resources.resx">
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
|
||||||
</EmbeddedResource>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="Resources\MuldiniFilterScript.txt" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="Castle.Core">
|
|
||||||
<Version>4.4.0</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="FluentAssertions">
|
|
||||||
<Version>5.6.0</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="Moq">
|
|
||||||
<Version>4.10.1</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="NUnit">
|
|
||||||
<Version>3.11.0</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="System.Threading.Tasks.Extensions">
|
|
||||||
<Version>4.5.2</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="System.ValueTuple">
|
|
||||||
<Version>4.5.0</Version>
|
|
||||||
</PackageReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
|
||||||
<Target Name="BeforeBuild">
|
|
||||||
</Target>
|
|
||||||
<Target Name="AfterBuild">
|
|
||||||
</Target>
|
|
||||||
-->
|
|
||||||
</Project>
|
|
|
@ -1,35 +0,0 @@
|
||||||
using System.Reflection;
|
|
||||||
using System.Runtime.CompilerServices;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
|
|
||||||
// General Information about an assembly is controlled through the following
|
|
||||||
// set of attributes. Change these attribute values to modify the information
|
|
||||||
// associated with an assembly.
|
|
||||||
[assembly: AssemblyTitle("Filtration.ItemFilterPreview.Tests")]
|
|
||||||
[assembly: AssemblyDescription("")]
|
|
||||||
[assembly: AssemblyConfiguration("")]
|
|
||||||
[assembly: AssemblyCompany("")]
|
|
||||||
[assembly: AssemblyProduct("Filtration.ItemFilterPreview.Tests")]
|
|
||||||
[assembly: AssemblyCopyright("Copyright © 2015")]
|
|
||||||
[assembly: AssemblyTrademark("")]
|
|
||||||
[assembly: AssemblyCulture("")]
|
|
||||||
|
|
||||||
// Setting ComVisible to false makes the types in this assembly not visible
|
|
||||||
// to COM components. If you need to access a type in this assembly from
|
|
||||||
// COM, set the ComVisible attribute to true on that type.
|
|
||||||
[assembly: ComVisible(false)]
|
|
||||||
|
|
||||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
|
||||||
[assembly: Guid("58cd3b9c-ebba-4527-a81c-78b7ea9ca298")]
|
|
||||||
|
|
||||||
// Version information for an assembly consists of the following four values:
|
|
||||||
//
|
|
||||||
// Major Version
|
|
||||||
// Minor Version
|
|
||||||
// Build Number
|
|
||||||
// Revision
|
|
||||||
//
|
|
||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
|
||||||
// by using the '*' as shown below:
|
|
||||||
[assembly: AssemblyVersion("1.0.0.0")]
|
|
||||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
|
|
@ -1,82 +0,0 @@
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
// <auto-generated>
|
|
||||||
// This code was generated by a tool.
|
|
||||||
// Runtime Version:4.0.30319.42000
|
|
||||||
//
|
|
||||||
// Changes to this file may cause incorrect behavior and will be lost if
|
|
||||||
// the code is regenerated.
|
|
||||||
// </auto-generated>
|
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
namespace Filtration.ItemFilterPreview.Tests.Properties {
|
|
||||||
using System;
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
|
||||||
/// </summary>
|
|
||||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
|
||||||
// class via a tool like ResGen or Visual Studio.
|
|
||||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
|
||||||
// with the /str option, or rebuild your VS project.
|
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
|
||||||
internal class Resources {
|
|
||||||
|
|
||||||
private static global::System.Resources.ResourceManager resourceMan;
|
|
||||||
|
|
||||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
|
||||||
|
|
||||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
|
||||||
internal Resources() {
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Returns the cached ResourceManager instance used by this class.
|
|
||||||
/// </summary>
|
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
|
||||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
|
||||||
get {
|
|
||||||
if (object.ReferenceEquals(resourceMan, null)) {
|
|
||||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Filtration.ItemFilterPreview.Tests.Properties.Resources", typeof(Resources).Assembly);
|
|
||||||
resourceMan = temp;
|
|
||||||
}
|
|
||||||
return resourceMan;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Overrides the current thread's CurrentUICulture property for all
|
|
||||||
/// resource lookups using this strongly typed resource class.
|
|
||||||
/// </summary>
|
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
|
||||||
internal static global::System.Globalization.CultureInfo Culture {
|
|
||||||
get {
|
|
||||||
return resourceCulture;
|
|
||||||
}
|
|
||||||
set {
|
|
||||||
resourceCulture = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to ###############################################################################
|
|
||||||
///################ Path of Exile Item Filter - Script by Muldini ################
|
|
||||||
///###############################################################################
|
|
||||||
///############ http://www.pathofexile.com/forum/view-thread/1259059 #############
|
|
||||||
///
|
|
||||||
///
|
|
||||||
///
|
|
||||||
///
|
|
||||||
///###############################################################################
|
|
||||||
///### Overview ##################################################################
|
|
||||||
///################## [rest of string was truncated]";.
|
|
||||||
/// </summary>
|
|
||||||
internal static string MuldiniFilterScript {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("MuldiniFilterScript", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,124 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="MuldiniFilterScript" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\MuldiniFilterScript.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,522 +0,0 @@
|
||||||
using System.Collections.Generic;
|
|
||||||
using Filtration.ItemFilterPreview.Services;
|
|
||||||
using Filtration.ObjectModel;
|
|
||||||
using Filtration.ObjectModel.BlockItemTypes;
|
|
||||||
using Filtration.ObjectModel.Enums;
|
|
||||||
using Moq;
|
|
||||||
using NUnit.Framework;
|
|
||||||
|
|
||||||
namespace Filtration.ItemFilterPreview.Tests.Services
|
|
||||||
{
|
|
||||||
[TestFixture]
|
|
||||||
public class TestItemBlockItemMatcher
|
|
||||||
{
|
|
||||||
private ItemBlockItemMatcherTestUtility _testUtility;
|
|
||||||
|
|
||||||
[SetUp]
|
|
||||||
public void ItemBlockItemMatcherTestSetUp()
|
|
||||||
{
|
|
||||||
_testUtility = new ItemBlockItemMatcherTestUtility();
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void ItemBlockMatch_EmptyShowBlock_ReturnsTrue()
|
|
||||||
{
|
|
||||||
//Arrange
|
|
||||||
var testInputItem = Mock.Of<IItem>();
|
|
||||||
var testInputBlock = new ItemFilterBlock();
|
|
||||||
|
|
||||||
//Act
|
|
||||||
var result = _testUtility.BlockItemMatcher.ItemBlockMatch(testInputBlock, testInputItem);
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
Assert.IsTrue(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void ItemBlockMatch_SingleBlockItem_Matches_ReturnsTrue()
|
|
||||||
{
|
|
||||||
//Arrange
|
|
||||||
var testBaseType = "Test Base Type";
|
|
||||||
var testInputItem = Mock.Of<IItem>(i => i.BaseType == testBaseType);
|
|
||||||
var testInputBlock = new ItemFilterBlock();
|
|
||||||
var baseTypeBlockItem = new BaseTypeBlockItem();
|
|
||||||
baseTypeBlockItem.Items.Add(testBaseType);
|
|
||||||
testInputBlock.BlockItems.Add(baseTypeBlockItem);
|
|
||||||
|
|
||||||
//Act
|
|
||||||
var result = _testUtility.BlockItemMatcher.ItemBlockMatch(testInputBlock, testInputItem);
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
Assert.IsTrue(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void ItemBlockMatch_SingleBlockItem_DoesNotMatche_ReturnsFalse()
|
|
||||||
{
|
|
||||||
//Arrange
|
|
||||||
var testInputItem = Mock.Of<IItem>(i => i.BaseType == "Base Type 1");
|
|
||||||
var testInputBlock = new ItemFilterBlock();
|
|
||||||
var baseTypeBlockItem = new BaseTypeBlockItem();
|
|
||||||
baseTypeBlockItem.Items.Add("Base Type 2");
|
|
||||||
testInputBlock.BlockItems.Add(baseTypeBlockItem);
|
|
||||||
|
|
||||||
//Act
|
|
||||||
var result = _testUtility.BlockItemMatcher.ItemBlockMatch(testInputBlock, testInputItem);
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
Assert.IsFalse(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void ItemBlockMatch_MultipleBlockItems_Matches_ReturnsTrue()
|
|
||||||
{
|
|
||||||
//Arrange
|
|
||||||
var testInputItem = Mock.Of<IItem>(i => i.BaseType == "Base Type 1" && i.Height == 4 && i.Width == 2);
|
|
||||||
var testInputBlock = new ItemFilterBlock();
|
|
||||||
var baseTypeBlockItem = new BaseTypeBlockItem();
|
|
||||||
baseTypeBlockItem.Items.Add("Base Type 1");
|
|
||||||
var heightBlockItem = new HeightBlockItem(FilterPredicateOperator.Equal, 4);
|
|
||||||
var widthBlockItem = new WidthBlockItem(FilterPredicateOperator.Equal, 2);
|
|
||||||
|
|
||||||
testInputBlock.BlockItems.Add(baseTypeBlockItem);
|
|
||||||
testInputBlock.BlockItems.Add(heightBlockItem);
|
|
||||||
testInputBlock.BlockItems.Add(widthBlockItem);
|
|
||||||
|
|
||||||
//Act
|
|
||||||
var result = _testUtility.BlockItemMatcher.ItemBlockMatch(testInputBlock, testInputItem);
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
Assert.IsTrue(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void ItemBlockMatch_MultipleBlockItems_DoesNotMatch_ReturnsFalse()
|
|
||||||
{
|
|
||||||
//Arrange
|
|
||||||
var testInputItem = Mock.Of<IItem>(i => i.BaseType == "Base Type 1" && i.Height == 4 && i.Width == 2);
|
|
||||||
var testInputBlock = new ItemFilterBlock();
|
|
||||||
var baseTypeBlockItem = new BaseTypeBlockItem();
|
|
||||||
baseTypeBlockItem.Items.Add("Base Type d");
|
|
||||||
var heightBlockItem = new HeightBlockItem(FilterPredicateOperator.Equal, 3);
|
|
||||||
var widthBlockItem = new WidthBlockItem(FilterPredicateOperator.Equal, 2);
|
|
||||||
|
|
||||||
testInputBlock.BlockItems.Add(baseTypeBlockItem);
|
|
||||||
testInputBlock.BlockItems.Add(heightBlockItem);
|
|
||||||
testInputBlock.BlockItems.Add(widthBlockItem);
|
|
||||||
|
|
||||||
//Act
|
|
||||||
var result = _testUtility.BlockItemMatcher.ItemBlockMatch(testInputBlock, testInputItem);
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
Assert.IsFalse(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
[TestCase("Test Base Type", true)]
|
|
||||||
[TestCase("Test Bas", true)]
|
|
||||||
[TestCase("T", true)]
|
|
||||||
[TestCase("Base Type", false)]
|
|
||||||
public void ItemBlockItemMatch_BaseTypeBlockItem_SingleBlockItemValue_ReturnsTrue(string testInputBaseType, bool expectedResult)
|
|
||||||
{
|
|
||||||
//Arrange
|
|
||||||
var testInputItem = Mock.Of<IItem>(i => i.BaseType == "Test Base Type");
|
|
||||||
var testInputBaseTypeBlockItem = new BaseTypeBlockItem();
|
|
||||||
testInputBaseTypeBlockItem.Items.Add(testInputBaseType);
|
|
||||||
|
|
||||||
//Act
|
|
||||||
var result = _testUtility.BlockItemMatcher.ItemBlockItemMatch(testInputBaseTypeBlockItem, testInputItem);
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
Assert.AreEqual(expectedResult, result);
|
|
||||||
}
|
|
||||||
|
|
||||||
[TestCase("Test Base Type", true)]
|
|
||||||
[TestCase("Test Bas", true)]
|
|
||||||
[TestCase("T", true)]
|
|
||||||
[TestCase("Base Type", false)]
|
|
||||||
public void ItemBlockItemMatch_BaseTypeBlockItem_MultipleBlockItemValues_ReturnsCorrectResult(string testInputBaseType, bool expectedResult)
|
|
||||||
{
|
|
||||||
//Arrange
|
|
||||||
var testInputItem = Mock.Of<IItem>(i => i.BaseType == "Test Base Type");
|
|
||||||
var testInputBlockItem = new BaseTypeBlockItem();
|
|
||||||
testInputBlockItem.Items.Add("Something else");
|
|
||||||
testInputBlockItem.Items.Add(testInputBaseType);
|
|
||||||
testInputBlockItem.Items.Add("Blah");
|
|
||||||
|
|
||||||
//Act
|
|
||||||
var result = _testUtility.BlockItemMatcher.ItemBlockItemMatch(testInputBlockItem, testInputItem);
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
Assert.AreEqual(expectedResult, result);
|
|
||||||
}
|
|
||||||
|
|
||||||
[TestCase("Test Item Class", true)]
|
|
||||||
[TestCase("Test It", true)]
|
|
||||||
[TestCase("T", true)]
|
|
||||||
[TestCase("Carrots", false)]
|
|
||||||
[TestCase("Item Class", true)]
|
|
||||||
public void ItemBlockItemMatch_ClassBlockItem_SingleBlockItemValue_ReturnsCorrectResult(string testInputBlockItemItemClass, bool expectedResult)
|
|
||||||
{
|
|
||||||
//Arrange
|
|
||||||
var testInputItem = Mock.Of<IItem>(i => i.ItemClass == "Test Item Class");
|
|
||||||
var testInputBlockItem = new ClassBlockItem();
|
|
||||||
testInputBlockItem.Items.Add(testInputBlockItemItemClass);
|
|
||||||
|
|
||||||
//Act
|
|
||||||
var result = _testUtility.BlockItemMatcher.ItemBlockItemMatch(testInputBlockItem, testInputItem);
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
Assert.AreEqual(expectedResult, result);
|
|
||||||
}
|
|
||||||
|
|
||||||
[TestCase(FilterPredicateOperator.Equal, 49, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.Equal, 50, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.Equal, 51, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThan, 49, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThan, 50, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThan, 51, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThanOrEqual, 49, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThanOrEqual, 50, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThanOrEqual, 51, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThan, 49, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThan, 50, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThan, 51, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThanOrEqual, 49, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThanOrEqual, 50, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThanOrEqual, 51, true)]
|
|
||||||
[TestCase(-1, 51, false)]
|
|
||||||
public void ItemBlockItemMatch_DropLevelBlockItem_ReturnsCorrectResult(FilterPredicateOperator testInputFilterPredicateOperator, int testInputBlockItemDropLevel, bool expectedResult)
|
|
||||||
{
|
|
||||||
//Arrange
|
|
||||||
var testInputItem = Mock.Of<IItem>(i => i.DropLevel == 50);
|
|
||||||
var testInputBlockItem = new DropLevelBlockItem(testInputFilterPredicateOperator, testInputBlockItemDropLevel);
|
|
||||||
|
|
||||||
//Act
|
|
||||||
var result = _testUtility.BlockItemMatcher.ItemBlockItemMatch(testInputBlockItem, testInputItem);
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
Assert.AreEqual(expectedResult, result);
|
|
||||||
}
|
|
||||||
|
|
||||||
[TestCase(FilterPredicateOperator.Equal, 1, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.Equal, 2, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.Equal, 3, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThan, 1, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThan, 2, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThan, 3, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThanOrEqual, 1, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThanOrEqual, 2, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThanOrEqual, 3, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThan, 1, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThan, 2, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThan, 3, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThanOrEqual, 1, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThanOrEqual, 2, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThanOrEqual, 3, true)]
|
|
||||||
[TestCase(-1, 3, false)]
|
|
||||||
public void ItemBlockItemMatch_HeightBlockItem_ReturnsCorrectResult(FilterPredicateOperator testInputFilterPredicateOperator, int testInputBlockItemHeight, bool expectedResult)
|
|
||||||
{
|
|
||||||
//Arrange
|
|
||||||
var testInputItem = Mock.Of<IItem>(i => i.Height == 2);
|
|
||||||
var testInputBlockItem = new HeightBlockItem(testInputFilterPredicateOperator, testInputBlockItemHeight);
|
|
||||||
|
|
||||||
//Act
|
|
||||||
var result = _testUtility.BlockItemMatcher.ItemBlockItemMatch(testInputBlockItem, testInputItem);
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
Assert.AreEqual(expectedResult, result);
|
|
||||||
}
|
|
||||||
|
|
||||||
[TestCase(FilterPredicateOperator.Equal, 49, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.Equal, 50, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.Equal, 51, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThan, 49, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThan, 50, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThan, 51, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThanOrEqual, 49, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThanOrEqual, 50, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThanOrEqual, 51, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThan, 49, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThan, 50, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThan, 51, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThanOrEqual, 49, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThanOrEqual, 50, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThanOrEqual, 51, true)]
|
|
||||||
[TestCase(-1, 51, false)]
|
|
||||||
public void ItemBlockItemMatch_ItemLevelBlockItem_ReturnsCorrectResult(FilterPredicateOperator testInputFilterPredicateOperator, int testInputBlockItemItemLevel, bool expectedResult)
|
|
||||||
{
|
|
||||||
//Arrange
|
|
||||||
var testInputItem = Mock.Of<IItem>(i => i.ItemLevel == 50);
|
|
||||||
var testInputBlockItem = new ItemLevelBlockItem(testInputFilterPredicateOperator, testInputBlockItemItemLevel);
|
|
||||||
|
|
||||||
//Act
|
|
||||||
var result = _testUtility.BlockItemMatcher.ItemBlockItemMatch(testInputBlockItem, testInputItem);
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
Assert.AreEqual(expectedResult, result);
|
|
||||||
}
|
|
||||||
|
|
||||||
[TestCase(FilterPredicateOperator.Equal, 2, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.Equal, 3, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.Equal, 4, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThan, 2, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThan, 3, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThan, 4, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThanOrEqual, 2, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThanOrEqual, 3, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThanOrEqual, 4, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThan, 2, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThan, 3, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThan, 4, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThanOrEqual, 2, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThanOrEqual, 3, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThanOrEqual, 4, true)]
|
|
||||||
[TestCase(-1, 3, false)]
|
|
||||||
public void ItemBlockItemMatch_LinkedSocketsBlockItem_ReturnsCorrectResult(FilterPredicateOperator testInputFilterPredicateOperator, int testInputBlockItemLinkedSockets, bool expectedResult)
|
|
||||||
{
|
|
||||||
//Arrange
|
|
||||||
var testInputItem = Mock.Of<IItem>(i => i.LinkedSockets == 3);
|
|
||||||
var testInputBlockItem = new LinkedSocketsBlockItem(testInputFilterPredicateOperator, testInputBlockItemLinkedSockets);
|
|
||||||
|
|
||||||
//Act
|
|
||||||
var result = _testUtility.BlockItemMatcher.ItemBlockItemMatch(testInputBlockItem, testInputItem);
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
Assert.AreEqual(expectedResult, result);
|
|
||||||
}
|
|
||||||
|
|
||||||
[TestCase(FilterPredicateOperator.Equal, 11, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.Equal, 12, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.Equal, 13, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThan, 11, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThan, 12, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThan, 13, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThanOrEqual, 11, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThanOrEqual, 12, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThanOrEqual, 13, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThan, 11, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThan, 12, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThan, 13, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThanOrEqual, 11, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThanOrEqual, 12, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThanOrEqual, 13, true)]
|
|
||||||
[TestCase(-1, 13, false)]
|
|
||||||
public void ItemBlockItemMatch_QualityBlockItem_ReturnsCorrectResult(FilterPredicateOperator testInputFilterPredicateOperator, int testInputBlockItemQuality, bool expectedResult)
|
|
||||||
{
|
|
||||||
//Arrange
|
|
||||||
var testInputItem = Mock.Of<IItem>(i => i.Quality == 12);
|
|
||||||
var testInputBlockItem = new QualityBlockItem(testInputFilterPredicateOperator, testInputBlockItemQuality);
|
|
||||||
|
|
||||||
//Act
|
|
||||||
var result = _testUtility.BlockItemMatcher.ItemBlockItemMatch(testInputBlockItem, testInputItem);
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
Assert.AreEqual(expectedResult, result);
|
|
||||||
}
|
|
||||||
|
|
||||||
[TestCase(FilterPredicateOperator.Equal, ItemRarity.Normal, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.Equal, ItemRarity.Magic , true)]
|
|
||||||
[TestCase(FilterPredicateOperator.Equal, ItemRarity.Rare, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThan, ItemRarity.Normal, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThan, ItemRarity.Magic, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThan, ItemRarity.Rare, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThanOrEqual, ItemRarity.Normal, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThanOrEqual, ItemRarity.Magic, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThanOrEqual, ItemRarity.Rare, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThan, ItemRarity.Normal, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThan, ItemRarity.Magic, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThan, ItemRarity.Rare, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThanOrEqual, ItemRarity.Normal, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThanOrEqual, ItemRarity.Magic, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThanOrEqual, ItemRarity.Rare, true)]
|
|
||||||
[TestCase(-1, 13, false)]
|
|
||||||
public void ItemBlockItemMatch_RarityBlockItem_ReturnsCorrectResult(FilterPredicateOperator testInputFilterPredicateOperator, int testInputBlockItemRarity, bool expectedResult)
|
|
||||||
{
|
|
||||||
//Arrange
|
|
||||||
var testInputItem = Mock.Of<IItem>(i => i.ItemRarity == ItemRarity.Magic);
|
|
||||||
var testInputBlockItem = new RarityBlockItem(testInputFilterPredicateOperator, testInputBlockItemRarity);
|
|
||||||
|
|
||||||
//Act
|
|
||||||
var result = _testUtility.BlockItemMatcher.ItemBlockItemMatch(testInputBlockItem, testInputItem);
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
Assert.AreEqual(expectedResult, result);
|
|
||||||
}
|
|
||||||
|
|
||||||
[TestCase(FilterPredicateOperator.Equal, 2, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.Equal, 3, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.Equal, 4, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThan, 2, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThan, 3, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThan, 4, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThanOrEqual, 2, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThanOrEqual, 3, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThanOrEqual, 4, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThan, 2, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThan, 3, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThan, 4, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThanOrEqual, 2, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThanOrEqual, 3, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThanOrEqual, 4, true)]
|
|
||||||
[TestCase(-1, 3, false)]
|
|
||||||
public void ItemBlockItemMatch_SocketsBlockItem_ReturnsCorrectResult(FilterPredicateOperator testInputFilterPredicateOperator, int testInputBlockItemSockets, bool expectedResult)
|
|
||||||
{
|
|
||||||
//Arrange
|
|
||||||
var testInputItem = Mock.Of<IItem>(i => i.SocketCount == 3);
|
|
||||||
var testInputBlockItem = new SocketsBlockItem(testInputFilterPredicateOperator, testInputBlockItemSockets);
|
|
||||||
|
|
||||||
//Act
|
|
||||||
var result = _testUtility.BlockItemMatcher.ItemBlockItemMatch(testInputBlockItem, testInputItem);
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
Assert.AreEqual(expectedResult, result);
|
|
||||||
}
|
|
||||||
|
|
||||||
[TestCase(FilterPredicateOperator.Equal, 1, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.Equal, 2, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.Equal, 3, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThan, 1, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThan, 2, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThan, 3, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThanOrEqual, 1, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThanOrEqual, 2, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.GreaterThanOrEqual, 3, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThan, 1, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThan, 2, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThan, 3, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThanOrEqual, 1, false)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThanOrEqual, 2, true)]
|
|
||||||
[TestCase(FilterPredicateOperator.LessThanOrEqual, 3, true)]
|
|
||||||
[TestCase(-1, 3, false)]
|
|
||||||
public void ItemBlockItemMatch_ReturnsCorrectResult(FilterPredicateOperator testInputFilterPredicateOperator, int testInputBlockItemWidth, bool expectedResult)
|
|
||||||
{
|
|
||||||
//Arrange
|
|
||||||
var testInputItem = Mock.Of<IItem>(i => i.Width == 2);
|
|
||||||
var testInputBlockItem = new WidthBlockItem(testInputFilterPredicateOperator, testInputBlockItemWidth);
|
|
||||||
|
|
||||||
//Act
|
|
||||||
var result = _testUtility.BlockItemMatcher.ItemBlockItemMatch(testInputBlockItem, testInputItem);
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
Assert.AreEqual(expectedResult, result);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void ItemBlockItemMatch_SocketGroupBlockItem_SingleItemSocketGroup_SingleBlockItemSocketGroup_Match_ReturnsCorrectResult()
|
|
||||||
{
|
|
||||||
//Arrange
|
|
||||||
var testInputBlockItem = new SocketGroupBlockItem();
|
|
||||||
testInputBlockItem.Items.Add("RGB");
|
|
||||||
|
|
||||||
var testInputItem = Mock.Of<IItem>(i => i.LinkedSocketGroups == new List<SocketGroup>
|
|
||||||
{
|
|
||||||
new SocketGroup(new List<Socket>
|
|
||||||
{
|
|
||||||
new Socket(SocketColor.Red),
|
|
||||||
new Socket(SocketColor.Green),
|
|
||||||
new Socket(SocketColor.Blue),
|
|
||||||
}, true)
|
|
||||||
});
|
|
||||||
|
|
||||||
//Act
|
|
||||||
var result = _testUtility.BlockItemMatcher.ItemBlockItemMatch(testInputBlockItem, testInputItem);
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
Assert.IsTrue(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void ItemBlockItemMatch_SocketGroupBlockItem_SingleItemSocketGroup_SingleBlockItemSocketGroup_NoMatch_ReturnsCorrectResult()
|
|
||||||
{
|
|
||||||
//Arrange
|
|
||||||
var testInputBlockItem = new SocketGroupBlockItem();
|
|
||||||
testInputBlockItem.Items.Add("RGB");
|
|
||||||
|
|
||||||
var testInputItem = Mock.Of<IItem>(i => i.LinkedSocketGroups == new List<SocketGroup>
|
|
||||||
{
|
|
||||||
new SocketGroup(new List<Socket>
|
|
||||||
{
|
|
||||||
new Socket(SocketColor.Red),
|
|
||||||
new Socket(SocketColor.Green)
|
|
||||||
}, true)
|
|
||||||
});
|
|
||||||
|
|
||||||
//Act
|
|
||||||
var result = _testUtility.BlockItemMatcher.ItemBlockItemMatch(testInputBlockItem, testInputItem);
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
Assert.IsFalse(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void ItemBlockItemMatch_SocketGroupBlockItem_MultipleItemSocketGroup_SingleBlockItemSocketGroup_NoMatch_ReturnsCorrectResult()
|
|
||||||
{
|
|
||||||
//Arrange
|
|
||||||
var testInputBlockItem = new SocketGroupBlockItem();
|
|
||||||
testInputBlockItem.Items.Add("RGB");
|
|
||||||
testInputBlockItem.Items.Add("RGWW");
|
|
||||||
testInputBlockItem.Items.Add("RRGG");
|
|
||||||
testInputBlockItem.Items.Add("WWWW");
|
|
||||||
|
|
||||||
var testInputItem = Mock.Of<IItem>(i => i.LinkedSocketGroups == new List<SocketGroup>
|
|
||||||
{
|
|
||||||
new SocketGroup(new List<Socket>
|
|
||||||
{
|
|
||||||
new Socket(SocketColor.Red),
|
|
||||||
new Socket(SocketColor.Green),
|
|
||||||
new Socket(SocketColor.White),
|
|
||||||
new Socket(SocketColor.Green)
|
|
||||||
|
|
||||||
}, true)
|
|
||||||
});
|
|
||||||
|
|
||||||
//Act
|
|
||||||
var result = _testUtility.BlockItemMatcher.ItemBlockItemMatch(testInputBlockItem, testInputItem);
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
Assert.IsFalse(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void ItemBlockItemMatch_SocketGroupBlockItem_MultipleItemSocketGroup_SingleBlockItemSocketGroup_Match_ReturnsCorrectResult()
|
|
||||||
{
|
|
||||||
//Arrange
|
|
||||||
var testInputBlockItem = new SocketGroupBlockItem();
|
|
||||||
testInputBlockItem.Items.Add("RGB");
|
|
||||||
testInputBlockItem.Items.Add("RGWW");
|
|
||||||
testInputBlockItem.Items.Add("RGWG");
|
|
||||||
testInputBlockItem.Items.Add("WWWW");
|
|
||||||
|
|
||||||
var testInputItem = Mock.Of<IItem>(i => i.LinkedSocketGroups == new List<SocketGroup>
|
|
||||||
{
|
|
||||||
new SocketGroup(new List<Socket>
|
|
||||||
{
|
|
||||||
new Socket(SocketColor.Red),
|
|
||||||
new Socket(SocketColor.Green),
|
|
||||||
new Socket(SocketColor.White),
|
|
||||||
new Socket(SocketColor.Green)
|
|
||||||
|
|
||||||
}, true)
|
|
||||||
});
|
|
||||||
|
|
||||||
//Act
|
|
||||||
var result = _testUtility.BlockItemMatcher.ItemBlockItemMatch(testInputBlockItem, testInputItem);
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
Assert.IsTrue(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
private class ItemBlockItemMatcherTestUtility
|
|
||||||
{
|
|
||||||
public ItemBlockItemMatcherTestUtility()
|
|
||||||
{
|
|
||||||
// Mock setups
|
|
||||||
|
|
||||||
// Class under-test instantiation
|
|
||||||
BlockItemMatcher = new BlockItemMatcher();
|
|
||||||
}
|
|
||||||
|
|
||||||
public BlockItemMatcher BlockItemMatcher { get; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,258 +0,0 @@
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Collections.ObjectModel;
|
|
||||||
using System.Linq;
|
|
||||||
using Filtration.ItemFilterPreview.Services;
|
|
||||||
using Filtration.ItemFilterPreview.Tests.Properties;
|
|
||||||
using Filtration.ObjectModel;
|
|
||||||
using Filtration.ObjectModel.BlockItemTypes;
|
|
||||||
using Filtration.ObjectModel.Enums;
|
|
||||||
using Filtration.ObjectModel.Factories;
|
|
||||||
using Filtration.Parser.Services;
|
|
||||||
using Moq;
|
|
||||||
using NUnit.Framework;
|
|
||||||
|
|
||||||
namespace Filtration.ItemFilterPreview.Tests.Services
|
|
||||||
{
|
|
||||||
[TestFixture]
|
|
||||||
public class TestItemFilterProcessor
|
|
||||||
{
|
|
||||||
private ItemFilterProcessorTestUtility _testUtility;
|
|
||||||
|
|
||||||
[SetUp]
|
|
||||||
public void ItemFilterProcessorTestSetUp()
|
|
||||||
{
|
|
||||||
_testUtility = new ItemFilterProcessorTestUtility();
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void ProcessItemsAgainstItemFilterScript_Matches_ReturnsTrue()
|
|
||||||
{
|
|
||||||
//Arrange
|
|
||||||
var testInputItem = Mock.Of<IItem>();
|
|
||||||
var testInputBlock = Mock.Of<IItemFilterBlock>();
|
|
||||||
var testInputScript = Mock.Of<IItemFilterScript>(s => s.ItemFilterBlocks == new ObservableCollection<IItemFilterBlockBase> {testInputBlock});
|
|
||||||
|
|
||||||
_testUtility.MockBlockItemMatcher
|
|
||||||
.Setup(b => b.ItemBlockMatch(testInputBlock, testInputItem))
|
|
||||||
.Returns(true)
|
|
||||||
.Verifiable();
|
|
||||||
|
|
||||||
//Act
|
|
||||||
var result = _testUtility.ItemFilterProcessor.ProcessItemsAgainstItemFilterScript(testInputScript, new List<IItem> { testInputItem });
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
_testUtility.MockBlockItemMatcher.Verify();
|
|
||||||
Assert.AreEqual(testInputBlock, result.First(r => r.ItemFilterBlock == testInputBlock).ItemFilterBlock);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void ProcessItemsAgainstItemFilterScript_DoesNotMatch_ResultHasNullItemFilterBlock()
|
|
||||||
{
|
|
||||||
//Arrange
|
|
||||||
var testInputItem = Mock.Of<IItem>();
|
|
||||||
var testInputBlock = Mock.Of<IItemFilterBlock>();
|
|
||||||
var testInputScript = Mock.Of<IItemFilterScript>(s => s.ItemFilterBlocks == new ObservableCollection<IItemFilterBlockBase> { testInputBlock });
|
|
||||||
|
|
||||||
_testUtility.MockBlockItemMatcher
|
|
||||||
.Setup(b => b.ItemBlockMatch(testInputBlock, testInputItem))
|
|
||||||
.Returns(false)
|
|
||||||
.Verifiable();
|
|
||||||
|
|
||||||
//Act
|
|
||||||
var result = _testUtility.ItemFilterProcessor.ProcessItemsAgainstItemFilterScript(testInputScript, new List<IItem> { testInputItem });
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
_testUtility.MockBlockItemMatcher.Verify();
|
|
||||||
Assert.AreEqual(null, result.First(r => r.Item == testInputItem).ItemFilterBlock);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
[Ignore("Outdated item filter")]
|
|
||||||
public void ProcessItemsAgainstItemFilterScript_IntegrationTest()
|
|
||||||
{
|
|
||||||
//Arrange
|
|
||||||
var testInputScriptFile = Resources.MuldiniFilterScript;
|
|
||||||
var blockGroupHierarchyBuilder = new BlockGroupHierarchyBuilder();
|
|
||||||
var mockItemFilterScriptFactory = new Mock<IItemFilterScriptFactory>();
|
|
||||||
mockItemFilterScriptFactory
|
|
||||||
.Setup(i => i.Create())
|
|
||||||
.Returns(new ItemFilterScript());
|
|
||||||
|
|
||||||
var scriptTranslator = new ItemFilterScriptTranslator(blockGroupHierarchyBuilder, new ItemFilterBlockTranslator(blockGroupHierarchyBuilder), mockItemFilterScriptFactory.Object);
|
|
||||||
var script = scriptTranslator.TranslateStringToItemFilterScript(testInputScriptFile);
|
|
||||||
|
|
||||||
var testInputItem = new Item
|
|
||||||
{
|
|
||||||
BaseType = "BlahdeBlah",
|
|
||||||
ItemClass = "Wands",
|
|
||||||
ItemRarity = ItemRarity.Magic,
|
|
||||||
ItemLevel = 9,
|
|
||||||
DropLevel = 9,
|
|
||||||
Height = 3,
|
|
||||||
Width = 1,
|
|
||||||
SocketGroups = new List<SocketGroup> {new SocketGroup(new List<Socket> {new Socket(SocketColor.Red)}, false)}
|
|
||||||
};
|
|
||||||
|
|
||||||
var itemFilterProcessor = new ItemFilterProcessor(new BlockItemMatcher());
|
|
||||||
|
|
||||||
//Act
|
|
||||||
var result = itemFilterProcessor.ProcessItemsAgainstItemFilterScript(script, new List<IItem> { testInputItem });
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
Assert.AreEqual("Wands", result.First().ItemFilterBlock.BlockItems.OfType<ClassBlockItem>().First().Items.First());
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
[Ignore("Outdated item filter")]
|
|
||||||
public void ProcessItemsAgainstItemFilterScript_IntegrationTest_10Items()
|
|
||||||
{
|
|
||||||
//Arrange
|
|
||||||
var testInputScriptFile = Resources.MuldiniFilterScript;
|
|
||||||
var blockGroupHierarchyBuilder = new BlockGroupHierarchyBuilder();
|
|
||||||
var mockItemFilterScriptFactory = new Mock<IItemFilterScriptFactory>();
|
|
||||||
mockItemFilterScriptFactory
|
|
||||||
.Setup(i => i.Create())
|
|
||||||
.Returns(new ItemFilterScript());
|
|
||||||
var scriptTranslator = new ItemFilterScriptTranslator(blockGroupHierarchyBuilder, new ItemFilterBlockTranslator(blockGroupHierarchyBuilder), mockItemFilterScriptFactory.Object);
|
|
||||||
var script = scriptTranslator.TranslateStringToItemFilterScript(testInputScriptFile);
|
|
||||||
|
|
||||||
var testInputItems = new List<IItem>
|
|
||||||
{
|
|
||||||
new Item
|
|
||||||
{
|
|
||||||
BaseType = "BlahdeBlah",
|
|
||||||
ItemClass = "Wands",
|
|
||||||
ItemRarity = ItemRarity.Magic,
|
|
||||||
ItemLevel = 9,
|
|
||||||
DropLevel = 9,
|
|
||||||
Height = 3,
|
|
||||||
Width = 1,
|
|
||||||
SocketGroups = new List<SocketGroup> {new SocketGroup(new List<Socket> {new Socket(SocketColor.Red)}, false)}
|
|
||||||
},
|
|
||||||
new Item
|
|
||||||
{
|
|
||||||
BaseType = "BlahdeBlah",
|
|
||||||
ItemClass = "Wands",
|
|
||||||
ItemRarity = ItemRarity.Magic,
|
|
||||||
ItemLevel = 9,
|
|
||||||
DropLevel = 9,
|
|
||||||
Height = 3,
|
|
||||||
Width = 1,
|
|
||||||
SocketGroups = new List<SocketGroup> {new SocketGroup(new List<Socket> {new Socket(SocketColor.Red)}, false)}
|
|
||||||
},
|
|
||||||
new Item
|
|
||||||
{
|
|
||||||
BaseType = "BlahdeBlah",
|
|
||||||
ItemClass = "Wands",
|
|
||||||
ItemRarity = ItemRarity.Magic,
|
|
||||||
ItemLevel = 9,
|
|
||||||
DropLevel = 9,
|
|
||||||
Height = 3,
|
|
||||||
Width = 1,
|
|
||||||
SocketGroups = new List<SocketGroup> {new SocketGroup(new List<Socket> {new Socket(SocketColor.Red)}, false)}
|
|
||||||
},
|
|
||||||
new Item
|
|
||||||
{
|
|
||||||
BaseType = "BlahdeBlah",
|
|
||||||
ItemClass = "Wands",
|
|
||||||
ItemRarity = ItemRarity.Magic,
|
|
||||||
ItemLevel = 9,
|
|
||||||
DropLevel = 9,
|
|
||||||
Height = 3,
|
|
||||||
Width = 1,
|
|
||||||
SocketGroups = new List<SocketGroup> {new SocketGroup(new List<Socket> {new Socket(SocketColor.Red)}, false)}
|
|
||||||
},
|
|
||||||
new Item
|
|
||||||
{
|
|
||||||
BaseType = "BlahdeBlah",
|
|
||||||
ItemClass = "Wands",
|
|
||||||
ItemRarity = ItemRarity.Magic,
|
|
||||||
ItemLevel = 9,
|
|
||||||
DropLevel = 9,
|
|
||||||
Height = 3,
|
|
||||||
Width = 1,
|
|
||||||
SocketGroups = new List<SocketGroup> {new SocketGroup(new List<Socket> {new Socket(SocketColor.Red)}, false)}
|
|
||||||
},
|
|
||||||
new Item
|
|
||||||
{
|
|
||||||
BaseType = "BlahdeBlah",
|
|
||||||
ItemClass = "Wands",
|
|
||||||
ItemRarity = ItemRarity.Magic,
|
|
||||||
ItemLevel = 9,
|
|
||||||
DropLevel = 9,
|
|
||||||
Height = 3,
|
|
||||||
Width = 1,
|
|
||||||
SocketGroups = new List<SocketGroup> {new SocketGroup(new List<Socket> {new Socket(SocketColor.Red)}, false)}
|
|
||||||
},
|
|
||||||
new Item
|
|
||||||
{
|
|
||||||
BaseType = "BlahdeBlah",
|
|
||||||
ItemClass = "Wands",
|
|
||||||
ItemRarity = ItemRarity.Magic,
|
|
||||||
ItemLevel = 9,
|
|
||||||
DropLevel = 9,
|
|
||||||
Height = 3,
|
|
||||||
Width = 1,
|
|
||||||
SocketGroups = new List<SocketGroup> {new SocketGroup(new List<Socket> {new Socket(SocketColor.Red)}, false)}
|
|
||||||
},
|
|
||||||
new Item
|
|
||||||
{
|
|
||||||
BaseType = "BlahdeBlah",
|
|
||||||
ItemClass = "Wands",
|
|
||||||
ItemRarity = ItemRarity.Magic,
|
|
||||||
ItemLevel = 9,
|
|
||||||
DropLevel = 9,
|
|
||||||
Height = 3,
|
|
||||||
Width = 1,
|
|
||||||
SocketGroups = new List<SocketGroup> {new SocketGroup(new List<Socket> {new Socket(SocketColor.Red)}, false)}
|
|
||||||
},
|
|
||||||
new Item
|
|
||||||
{
|
|
||||||
BaseType = "BlahdeBlah",
|
|
||||||
ItemClass = "Wands",
|
|
||||||
ItemRarity = ItemRarity.Magic,
|
|
||||||
ItemLevel = 9,
|
|
||||||
DropLevel = 9,
|
|
||||||
Height = 3,
|
|
||||||
Width = 1,
|
|
||||||
SocketGroups = new List<SocketGroup> {new SocketGroup(new List<Socket> {new Socket(SocketColor.Red)}, false)}
|
|
||||||
},
|
|
||||||
new Item
|
|
||||||
{
|
|
||||||
BaseType = "BlahdeBlah",
|
|
||||||
ItemClass = "Wands",
|
|
||||||
ItemRarity = ItemRarity.Magic,
|
|
||||||
ItemLevel = 9,
|
|
||||||
DropLevel = 9,
|
|
||||||
Height = 3,
|
|
||||||
Width = 1,
|
|
||||||
SocketGroups = new List<SocketGroup> {new SocketGroup(new List<Socket> {new Socket(SocketColor.Red)}, false)}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var itemFilterProcessor = new ItemFilterProcessor(new BlockItemMatcher());
|
|
||||||
|
|
||||||
//Act
|
|
||||||
var result = itemFilterProcessor.ProcessItemsAgainstItemFilterScript(script, testInputItems);
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
Assert.AreEqual("Wands", result.First().ItemFilterBlock.BlockItems.OfType<ClassBlockItem>().First().Items.First());
|
|
||||||
}
|
|
||||||
|
|
||||||
private class ItemFilterProcessorTestUtility
|
|
||||||
{
|
|
||||||
public ItemFilterProcessorTestUtility()
|
|
||||||
{
|
|
||||||
// Mock setups
|
|
||||||
MockBlockItemMatcher = new Mock<IBlockItemMatcher>();
|
|
||||||
|
|
||||||
// Class under-test instantiation
|
|
||||||
ItemFilterProcessor = new ItemFilterProcessor(MockBlockItemMatcher.Object);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ItemFilterProcessor ItemFilterProcessor { get; private set; }
|
|
||||||
|
|
||||||
public Mock<IBlockItemMatcher> MockBlockItemMatcher { get; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,45 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Xml;
|
|
||||||
using System.Xml.Serialization;
|
|
||||||
using Filtration.ObjectModel;
|
|
||||||
using Filtration.ObjectModel.Enums;
|
|
||||||
using NUnit.Framework;
|
|
||||||
|
|
||||||
namespace Filtration.ItemFilterPreview.Tests.Services
|
|
||||||
{
|
|
||||||
class serializationtest
|
|
||||||
{
|
|
||||||
[Ignore("")]
|
|
||||||
[Test]
|
|
||||||
public void test_serialization()
|
|
||||||
{
|
|
||||||
//Arrange
|
|
||||||
var item = new Item
|
|
||||||
{
|
|
||||||
ItemClass = "Test Class",
|
|
||||||
BaseType = "Test Base Type",
|
|
||||||
DropLevel = 54,
|
|
||||||
Height = 2,
|
|
||||||
Width = 2,
|
|
||||||
ItemLevel = 50,
|
|
||||||
ItemRarity = ItemRarity.Rare,
|
|
||||||
SocketGroups = new List<SocketGroup> {new SocketGroup(new List<Socket> {new Socket(SocketColor.Red), new Socket(SocketColor.Blue), new Socket(SocketColor.White)}, true)},
|
|
||||||
Quality = 12
|
|
||||||
};
|
|
||||||
|
|
||||||
//Act
|
|
||||||
|
|
||||||
var serializer = new XmlSerializer(item.GetType());
|
|
||||||
var output = string.Empty;
|
|
||||||
using (var textWriter = new StringWriter())
|
|
||||||
{
|
|
||||||
serializer.Serialize(textWriter, item);
|
|
||||||
output = textWriter.ToString();
|
|
||||||
}
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,39 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<configuration>
|
|
||||||
<runtime>
|
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="Xceed.Wpf.AvalonDock" publicKeyToken="3e4669d2f30244f4" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.5.0.0" newVersion="3.5.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="ControlzEx" publicKeyToken="f08b075e934b7045" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-2.2.0.4" newVersion="2.2.0.4" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="Xceed.Wpf.Toolkit" publicKeyToken="3e4669d2f30244f4" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.5.0.0" newVersion="3.5.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<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" />
|
|
||||||
</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.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.Windows.Interactivity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
</assemblyBinding>
|
|
||||||
</runtime>
|
|
||||||
</configuration>
|
|
|
@ -1,26 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<configuration>
|
|
||||||
<startup>
|
|
||||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
|
|
||||||
</startup>
|
|
||||||
<runtime>
|
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<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" />
|
|
||||||
</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.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" />
|
|
||||||
</dependentAssembly>
|
|
||||||
</assemblyBinding>
|
|
||||||
</runtime>
|
|
||||||
</configuration>
|
|
|
@ -1,8 +0,0 @@
|
||||||
<Application x:Class="Filtration.ItemFilterPreview.App"
|
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
Startup="Application_Startup">
|
|
||||||
<Application.Resources>
|
|
||||||
|
|
||||||
</Application.Resources>
|
|
||||||
</Application>
|
|
|
@ -1,25 +0,0 @@
|
||||||
using System.Windows;
|
|
||||||
using Castle.Facilities.TypedFactory;
|
|
||||||
using Castle.Windsor;
|
|
||||||
using Castle.Windsor.Installer;
|
|
||||||
using Filtration.ItemFilterPreview.Views;
|
|
||||||
|
|
||||||
namespace Filtration.ItemFilterPreview
|
|
||||||
{
|
|
||||||
public partial class App : Application
|
|
||||||
{
|
|
||||||
private IWindsorContainer _container;
|
|
||||||
|
|
||||||
private void Application_Startup(object sender, StartupEventArgs e)
|
|
||||||
{
|
|
||||||
_container = new WindsorContainer();
|
|
||||||
|
|
||||||
_container.AddFacility<TypedFactoryFacility>();
|
|
||||||
_container.Install(FromAssembly.InThisApplication());
|
|
||||||
_container.Install(FromAssembly.Named("Filtration.Parser"));
|
|
||||||
|
|
||||||
var mainWindow = _container.Resolve<IMainWindow>();
|
|
||||||
mainWindow.Show();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,197 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
|
||||||
<ProjectGuid>{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}</ProjectGuid>
|
|
||||||
<OutputType>WinExe</OutputType>
|
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
|
||||||
<RootNamespace>Filtration.ItemFilterPreview</RootNamespace>
|
|
||||||
<AssemblyName>Filtration.ItemFilterPreview</AssemblyName>
|
|
||||||
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
|
||||||
<FileAlignment>512</FileAlignment>
|
|
||||||
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
|
||||||
<TargetFrameworkProfile />
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
|
||||||
<DebugType>full</DebugType>
|
|
||||||
<Optimize>false</Optimize>
|
|
||||||
<OutputPath>bin\Debug\</OutputPath>
|
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
|
||||||
<DebugType>pdbonly</DebugType>
|
|
||||||
<Optimize>true</Optimize>
|
|
||||||
<OutputPath>bin\Release\</OutputPath>
|
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Reference Include="System" />
|
|
||||||
<Reference Include="System.Configuration" />
|
|
||||||
<Reference Include="System.Data" />
|
|
||||||
<Reference Include="System.Runtime.Remoting" />
|
|
||||||
<Reference Include="System.Web" />
|
|
||||||
<Reference Include="System.Xml" />
|
|
||||||
<Reference Include="Microsoft.CSharp" />
|
|
||||||
<Reference Include="System.Core" />
|
|
||||||
<Reference Include="System.Xml.Linq" />
|
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
|
||||||
<Reference Include="System.Net.Http" />
|
|
||||||
<Reference Include="System.Xaml">
|
|
||||||
<RequiredTargetFramework>4.0</RequiredTargetFramework>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="WindowsBase" />
|
|
||||||
<Reference Include="PresentationCore" />
|
|
||||||
<Reference Include="PresentationFramework" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ApplicationDefinition Include="App.xaml">
|
|
||||||
<Generator>MSBuild:Compile</Generator>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</ApplicationDefinition>
|
|
||||||
<Compile Include="Services\BlockItemMatcher.cs" />
|
|
||||||
<Compile Include="Services\ItemFilterProcessor.cs" />
|
|
||||||
<Compile Include="UserControls\DesignTime\DesignTimeItemControl.cs" />
|
|
||||||
<Compile Include="UserControls\ItemControl.xaml.cs">
|
|
||||||
<DependentUpon>ItemControl.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="UserControls\ItemSocketsControl.xaml.cs">
|
|
||||||
<DependentUpon>ItemSocketsControl.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="UserControls\LootExplosionSceneUserControl.xaml.cs">
|
|
||||||
<DependentUpon>LootExplosionSceneUserControl.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="ViewModels\LootExplosionViewModel.cs" />
|
|
||||||
<Compile Include="ViewModels\MainWindowViewModel.cs" />
|
|
||||||
<Compile Include="Views\LootExplosionView.xaml.cs">
|
|
||||||
<DependentUpon>LootExplosionView.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="WindsorInstallers\ViewModelsInstaller.cs" />
|
|
||||||
<Compile Include="WindsorInstallers\ViewsInstaller.cs" />
|
|
||||||
<Compile Include="WindsorInstallers\ServicesInstaller.cs" />
|
|
||||||
<Page Include="UserControls\ItemControl.xaml">
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
<Generator>MSBuild:Compile</Generator>
|
|
||||||
</Page>
|
|
||||||
<Page Include="UserControls\LootExplosionSceneUserControl.xaml">
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
<Generator>MSBuild:Compile</Generator>
|
|
||||||
</Page>
|
|
||||||
<Page Include="Views\LootExplosionView.xaml">
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
<Generator>MSBuild:Compile</Generator>
|
|
||||||
</Page>
|
|
||||||
<Page Include="Views\MainWindow.xaml">
|
|
||||||
<Generator>MSBuild:Compile</Generator>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</Page>
|
|
||||||
<Compile Include="App.xaml.cs">
|
|
||||||
<DependentUpon>App.xaml</DependentUpon>
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Views\MainWindow.xaml.cs">
|
|
||||||
<DependentUpon>MainWindow.xaml</DependentUpon>
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Page Include="UserControls\ItemSocketsControl.xaml">
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
<Generator>MSBuild:Compile</Generator>
|
|
||||||
</Page>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Compile Include="Properties\AssemblyInfo.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Properties\Resources.Designer.cs">
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<DependentUpon>Resources.resx</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Properties\Settings.Designer.cs">
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
<DependentUpon>Settings.settings</DependentUpon>
|
|
||||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
|
||||||
</Compile>
|
|
||||||
<EmbeddedResource Include="Properties\Resources.resx">
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<None Include="Properties\Settings.settings">
|
|
||||||
<Generator>SettingsSingleFileGenerator</Generator>
|
|
||||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
|
||||||
</None>
|
|
||||||
<AppDesigner Include="Properties\" />
|
|
||||||
<Resource Include="Resources\Fontin-SmallCaps.ttf" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="App.config" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\Filtration.Common\Filtration.Common.csproj">
|
|
||||||
<Project>{8cb44f28-2956-4c2a-9314-72727262edd4}</Project>
|
|
||||||
<Name>Filtration.Common</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\Filtration.ObjectModel\Filtration.ObjectModel.csproj">
|
|
||||||
<Project>{4aac3beb-1dc1-483e-9d11-0e9334e80227}</Project>
|
|
||||||
<Name>Filtration.ObjectModel</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\Filtration.Parser.Interface\Filtration.Parser.Interface.csproj">
|
|
||||||
<Project>{46383f20-02df-48b4-b092-9088fa4acd5a}</Project>
|
|
||||||
<Name>Filtration.Parser.Interface</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\Filtration.Parser\Filtration.Parser.csproj">
|
|
||||||
<Project>{10a7c2bc-ec6f-4a38-bdda-e35935004c02}</Project>
|
|
||||||
<Name>Filtration.Parser</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="Resources\neversink.filter.txt" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="Resources\muldini.txt" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Folder Include="Model\" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="Castle.Core">
|
|
||||||
<Version>4.4.0</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="Castle.Windsor">
|
|
||||||
<Version>5.0.0</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="CommonServiceLocator">
|
|
||||||
<Version>2.0.4</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="Moq">
|
|
||||||
<Version>4.10.1</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="MvvmLightLibs">
|
|
||||||
<Version>5.4.1.1</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="System.Threading.Tasks.Extensions">
|
|
||||||
<Version>4.5.2</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="System.ValueTuple">
|
|
||||||
<Version>4.5.0</Version>
|
|
||||||
</PackageReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
|
||||||
<Target Name="BeforeBuild">
|
|
||||||
</Target>
|
|
||||||
<Target Name="AfterBuild">
|
|
||||||
</Target>
|
|
||||||
-->
|
|
||||||
</Project>
|
|
|
@ -1,59 +0,0 @@
|
||||||
using System.Reflection;
|
|
||||||
using System.Resources;
|
|
||||||
using System.Runtime.CompilerServices;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using System.Windows;
|
|
||||||
|
|
||||||
// General Information about an assembly is controlled through the following
|
|
||||||
// set of attributes. Change these attribute values to modify the information
|
|
||||||
// associated with an assembly.
|
|
||||||
[assembly: AssemblyTitle("Filtration.ItemFilterPreview")]
|
|
||||||
[assembly: AssemblyDescription("")]
|
|
||||||
[assembly: AssemblyConfiguration("")]
|
|
||||||
[assembly: AssemblyCompany("")]
|
|
||||||
[assembly: AssemblyProduct("Filtration.ItemFilterPreview")]
|
|
||||||
[assembly: AssemblyCopyright("Copyright © 2015")]
|
|
||||||
[assembly: AssemblyTrademark("")]
|
|
||||||
[assembly: AssemblyCulture("")]
|
|
||||||
|
|
||||||
// Setting ComVisible to false makes the types in this assembly not visible
|
|
||||||
// to COM components. If you need to access a type in this assembly from
|
|
||||||
// COM, set the ComVisible attribute to true on that type.
|
|
||||||
[assembly: ComVisible(false)]
|
|
||||||
|
|
||||||
//In order to begin building localizable applications, set
|
|
||||||
//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
|
|
||||||
//inside a <PropertyGroup>. For example, if you are using US english
|
|
||||||
//in your source files, set the <UICulture> to en-US. Then uncomment
|
|
||||||
//the NeutralResourceLanguage attribute below. Update the "en-US" in
|
|
||||||
//the line below to match the UICulture setting in the project file.
|
|
||||||
|
|
||||||
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
|
|
||||||
|
|
||||||
|
|
||||||
[assembly: ThemeInfo(
|
|
||||||
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
|
|
||||||
//(used if a resource is not found in the page,
|
|
||||||
// or application resource dictionaries)
|
|
||||||
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
|
|
||||||
//(used if a resource is not found in the page,
|
|
||||||
// app, or any theme specific resource dictionaries)
|
|
||||||
)]
|
|
||||||
|
|
||||||
|
|
||||||
// Version information for an assembly consists of the following four values:
|
|
||||||
//
|
|
||||||
// Major Version
|
|
||||||
// Minor Version
|
|
||||||
// Build Number
|
|
||||||
// Revision
|
|
||||||
//
|
|
||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
|
||||||
// by using the '*' as shown below:
|
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
|
||||||
[assembly: AssemblyVersion("1.0.0.0")]
|
|
||||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
|
||||||
|
|
||||||
|
|
||||||
[assembly: InternalsVisibleTo("Filtration.ItemFilterPreview.Tests")]
|
|
||||||
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
|
|
|
@ -1,100 +0,0 @@
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
// <auto-generated>
|
|
||||||
// This code was generated by a tool.
|
|
||||||
// Runtime Version:4.0.30319.42000
|
|
||||||
//
|
|
||||||
// Changes to this file may cause incorrect behavior and will be lost if
|
|
||||||
// the code is regenerated.
|
|
||||||
// </auto-generated>
|
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
namespace Filtration.ItemFilterPreview.Properties {
|
|
||||||
using System;
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
|
||||||
/// </summary>
|
|
||||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
|
||||||
// class via a tool like ResGen or Visual Studio.
|
|
||||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
|
||||||
// with the /str option, or rebuild your VS project.
|
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
|
||||||
internal class Resources {
|
|
||||||
|
|
||||||
private static global::System.Resources.ResourceManager resourceMan;
|
|
||||||
|
|
||||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
|
||||||
|
|
||||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
|
||||||
internal Resources() {
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Returns the cached ResourceManager instance used by this class.
|
|
||||||
/// </summary>
|
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
|
||||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
|
||||||
get {
|
|
||||||
if (object.ReferenceEquals(resourceMan, null)) {
|
|
||||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Filtration.ItemFilterPreview.Properties.Resources", typeof(Resources).Assembly);
|
|
||||||
resourceMan = temp;
|
|
||||||
}
|
|
||||||
return resourceMan;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Overrides the current thread's CurrentUICulture property for all
|
|
||||||
/// resource lookups using this strongly typed resource class.
|
|
||||||
/// </summary>
|
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
|
||||||
internal static global::System.Globalization.CultureInfo Culture {
|
|
||||||
get {
|
|
||||||
return resourceCulture;
|
|
||||||
}
|
|
||||||
set {
|
|
||||||
resourceCulture = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to ###############################################################################
|
|
||||||
///################ Path of Exile Item Filter - Script by Muldini ################
|
|
||||||
///###############################################################################
|
|
||||||
///############ http://www.pathofexile.com/forum/view-thread/1259059 #############
|
|
||||||
///
|
|
||||||
///
|
|
||||||
///
|
|
||||||
///
|
|
||||||
///###############################################################################
|
|
||||||
///### Overview ##################################################################
|
|
||||||
///################## [rest of string was truncated]";.
|
|
||||||
/// </summary>
|
|
||||||
internal static string muldini {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("muldini", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to #---------------------------------------------------------------------------------------------------------------
|
|
||||||
///# NeverSink's Indepth Loot Filter
|
|
||||||
///# VERSION 3.0 - Full
|
|
||||||
///#---------------------------------------------------------------------------------------------------------------
|
|
||||||
///#
|
|
||||||
///# You can always find the latest version here:
|
|
||||||
///# http://pastebin.com/Af00CbhA
|
|
||||||
///# Forum discussion thread. You can post question and feedback here:
|
|
||||||
///# http://www.pathofexile.com/forum/view-thread/1246208/page/1
|
|
||||||
///# Please use [rest of string was truncated]";.
|
|
||||||
/// </summary>
|
|
||||||
internal static string neversinkfilter {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("neversinkfilter", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,127 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="muldini" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\muldini.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
|
|
||||||
</data>
|
|
||||||
<data name="neversinkfilter" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\neversink.filter.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
|
@ -1,26 +0,0 @@
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
// <auto-generated>
|
|
||||||
// This code was generated by a tool.
|
|
||||||
// Runtime Version:4.0.30319.42000
|
|
||||||
//
|
|
||||||
// Changes to this file may cause incorrect behavior and will be lost if
|
|
||||||
// the code is regenerated.
|
|
||||||
// </auto-generated>
|
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
namespace Filtration.ItemFilterPreview.Properties {
|
|
||||||
|
|
||||||
|
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
|
|
||||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
|
||||||
|
|
||||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
|
||||||
|
|
||||||
public static Settings Default {
|
|
||||||
get {
|
|
||||||
return defaultInstance;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
<?xml version='1.0' encoding='utf-8'?>
|
|
||||||
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
|
|
||||||
<Profiles>
|
|
||||||
<Profile Name="(Default)" />
|
|
||||||
</Profiles>
|
|
||||||
<Settings />
|
|
||||||
</SettingsFile>
|
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,155 +0,0 @@
|
||||||
using System.Linq;
|
|
||||||
using Filtration.ObjectModel;
|
|
||||||
using Filtration.ObjectModel.BlockItemBaseTypes;
|
|
||||||
using Filtration.ObjectModel.BlockItemTypes;
|
|
||||||
|
|
||||||
namespace Filtration.ItemFilterPreview.Services
|
|
||||||
{
|
|
||||||
internal interface IBlockItemMatcher
|
|
||||||
{
|
|
||||||
bool ItemBlockMatch(IItemFilterBlock block, IItem item);
|
|
||||||
bool ItemBlockItemMatch(IItemFilterBlockItem blockItem, IItem item);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal class BlockItemMatcher : IBlockItemMatcher
|
|
||||||
{
|
|
||||||
public bool ItemBlockMatch(IItemFilterBlock block, IItem item)
|
|
||||||
{
|
|
||||||
|
|
||||||
var match = block.BlockItems
|
|
||||||
.Where(blockItem => !(blockItem is IAudioVisualBlockItem) && !(blockItem is ActionBlockItem))
|
|
||||||
.All(blockItem => ItemBlockItemMatch(blockItem, item));
|
|
||||||
|
|
||||||
return match;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool ItemBlockItemMatch(IItemFilterBlockItem blockItem, IItem item)
|
|
||||||
{
|
|
||||||
var blockItemType = blockItem.GetType();
|
|
||||||
|
|
||||||
if (blockItemType == typeof (BaseTypeBlockItem))
|
|
||||||
return BaseTypeBlockItemMatch((BaseTypeBlockItem)blockItem, item);
|
|
||||||
|
|
||||||
if (blockItemType == typeof (ClassBlockItem))
|
|
||||||
return ClassBlockItemMatch((ClassBlockItem) blockItem, item);
|
|
||||||
|
|
||||||
if (blockItemType == typeof(DropLevelBlockItem))
|
|
||||||
return DropLevelBlockItemMatch((DropLevelBlockItem)blockItem, item);
|
|
||||||
|
|
||||||
if (blockItemType == typeof(HeightBlockItem))
|
|
||||||
return HeightBlockItemMatch((HeightBlockItem)blockItem, item);
|
|
||||||
|
|
||||||
if (blockItemType == typeof(ItemLevelBlockItem))
|
|
||||||
return ItemLevelBlockItemMatch((ItemLevelBlockItem)blockItem, item);
|
|
||||||
|
|
||||||
if (blockItemType == typeof(LinkedSocketsBlockItem))
|
|
||||||
return LinkedSocketsBlockItemMatch((LinkedSocketsBlockItem)blockItem, item);
|
|
||||||
|
|
||||||
if (blockItemType == typeof(QualityBlockItem))
|
|
||||||
return QualityBlockItemMatch((QualityBlockItem)blockItem, item);
|
|
||||||
|
|
||||||
if (blockItemType == typeof(RarityBlockItem))
|
|
||||||
return RarityBlockItemMatch((RarityBlockItem)blockItem, item);
|
|
||||||
|
|
||||||
if (blockItemType == typeof(SocketsBlockItem))
|
|
||||||
return SocketsBlockItemMatch((SocketsBlockItem)blockItem, item);
|
|
||||||
|
|
||||||
if (blockItemType == typeof(WidthBlockItem))
|
|
||||||
return WidthBlockItemMatch((WidthBlockItem)blockItem, item);
|
|
||||||
|
|
||||||
if (blockItemType == typeof(SocketGroupBlockItem))
|
|
||||||
return SocketGroupBlockItemMatch((SocketGroupBlockItem)blockItem, item);
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool BaseTypeBlockItemMatch(BaseTypeBlockItem baseTypeBlockItem, IItem item)
|
|
||||||
{
|
|
||||||
return baseTypeBlockItem.Items.Any(b => item.BaseType.StartsWith(b));
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool ClassBlockItemMatch(ClassBlockItem classBlockItem, IItem item)
|
|
||||||
{
|
|
||||||
return classBlockItem.Items.Any(c => item.ItemClass.Contains(c));
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool DropLevelBlockItemMatch(DropLevelBlockItem dropLevelBlockItem, IItem item)
|
|
||||||
{
|
|
||||||
return NumericFilterPredicateBlockItemMatch(dropLevelBlockItem, item.DropLevel);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool HeightBlockItemMatch(HeightBlockItem heightBlockItem, IItem item)
|
|
||||||
{
|
|
||||||
return NumericFilterPredicateBlockItemMatch(heightBlockItem, item.Height);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool ItemLevelBlockItemMatch(ItemLevelBlockItem itemLevelBlockItem, IItem item)
|
|
||||||
{
|
|
||||||
return NumericFilterPredicateBlockItemMatch(itemLevelBlockItem, item.ItemLevel);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool LinkedSocketsBlockItemMatch(LinkedSocketsBlockItem linkedSocketsBlockItem, IItem item)
|
|
||||||
{
|
|
||||||
return NumericFilterPredicateBlockItemMatch(linkedSocketsBlockItem, item.LinkedSockets);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool QualityBlockItemMatch(QualityBlockItem qualityBlockItem, IItem item)
|
|
||||||
{
|
|
||||||
return NumericFilterPredicateBlockItemMatch(qualityBlockItem, item.Quality);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool RarityBlockItemMatch(RarityBlockItem qualityBlockItem, IItem item)
|
|
||||||
{
|
|
||||||
return NumericFilterPredicateBlockItemMatch(qualityBlockItem, (int)item.ItemRarity);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool SocketsBlockItemMatch(SocketsBlockItem socketsBlockItem, IItem item)
|
|
||||||
{
|
|
||||||
return NumericFilterPredicateBlockItemMatch(socketsBlockItem, item.SocketCount);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool WidthBlockItemMatch(WidthBlockItem widthBlockItem, IItem item)
|
|
||||||
{
|
|
||||||
return NumericFilterPredicateBlockItemMatch(widthBlockItem, item.Width);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool SocketGroupBlockItemMatch(SocketGroupBlockItem socketGroupBlockItem, IItem item)
|
|
||||||
{
|
|
||||||
|
|
||||||
foreach (var blockItemSocketGroup in socketGroupBlockItem.SocketGroups) // for each group of sockets in the block item
|
|
||||||
{
|
|
||||||
foreach (var itemLinkedSocketGroup in item.LinkedSocketGroups) // for each linked socket group in the item
|
|
||||||
{
|
|
||||||
if (SocketGroupHasRequiredSocketColors(itemLinkedSocketGroup, blockItemSocketGroup))
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool SocketGroupHasRequiredSocketColors(SocketGroup itemLinkedSocketGroup, SocketGroup blockItemSocketGroup)
|
|
||||||
{
|
|
||||||
|
|
||||||
var blockSocketGroupColorCounts = blockItemSocketGroup.GroupBy(i => i.Color, (key, values) => new { SocketColor = key, Count = values.Count() }).ToList();
|
|
||||||
var itemSocketGroupColorCounts = itemLinkedSocketGroup.GroupBy(i => i.Color, (key, values) => new {SocketColor = key, Count = values.Count()}).ToList();
|
|
||||||
|
|
||||||
foreach (var blockItemSocketColorCount in blockSocketGroupColorCounts)
|
|
||||||
{
|
|
||||||
var match = itemSocketGroupColorCounts.FirstOrDefault(i => i.SocketColor == blockItemSocketColorCount.SocketColor && i.Count >= blockItemSocketColorCount.Count);
|
|
||||||
if (match == null)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool NumericFilterPredicateBlockItemMatch<T>(T numericFilterPredicateBlockItem, int matchValue) where T : NumericFilterPredicateBlockItem
|
|
||||||
{
|
|
||||||
return numericFilterPredicateBlockItem.FilterPredicate.CompareUsing(matchValue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,48 +0,0 @@
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Linq;
|
|
||||||
using Filtration.ObjectModel;
|
|
||||||
|
|
||||||
namespace Filtration.ItemFilterPreview.Services
|
|
||||||
{
|
|
||||||
internal interface IItemFilterProcessor
|
|
||||||
{
|
|
||||||
List<IFilteredItem> ProcessItemsAgainstItemFilterScript(IItemFilterScript itemFilterScript, IEnumerable<IItem> items);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal class ItemFilterProcessor : IItemFilterProcessor
|
|
||||||
{
|
|
||||||
private readonly IBlockItemMatcher _blockItemMatcher;
|
|
||||||
|
|
||||||
public ItemFilterProcessor(IBlockItemMatcher blockItemMatcher)
|
|
||||||
{
|
|
||||||
_blockItemMatcher = blockItemMatcher;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<IFilteredItem> ProcessItemsAgainstItemFilterScript(IItemFilterScript itemFilterScript, IEnumerable<IItem> items)
|
|
||||||
{
|
|
||||||
var overallsw = Stopwatch.StartNew();
|
|
||||||
|
|
||||||
var filteredItems = new List<IFilteredItem>();
|
|
||||||
|
|
||||||
var sw = Stopwatch.StartNew();
|
|
||||||
foreach (var item in items)
|
|
||||||
{
|
|
||||||
sw.Restart();
|
|
||||||
|
|
||||||
var matchedBlock = itemFilterScript.ItemFilterBlocks
|
|
||||||
.OfType<IItemFilterBlock>()
|
|
||||||
.FirstOrDefault(block => _blockItemMatcher.ItemBlockMatch(block, item));
|
|
||||||
|
|
||||||
filteredItems.Add(new FilteredItem(item, matchedBlock));
|
|
||||||
|
|
||||||
Debug.WriteLine("Processed Item in {0}ms", sw.ElapsedMilliseconds);
|
|
||||||
}
|
|
||||||
sw.Stop();
|
|
||||||
|
|
||||||
overallsw.Stop();
|
|
||||||
Debug.WriteLine("Total processing time: {0}ms", overallsw.ElapsedMilliseconds);
|
|
||||||
return filteredItems;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,17 +0,0 @@
|
||||||
using System.Windows.Media;
|
|
||||||
using Filtration.ObjectModel;
|
|
||||||
using Moq;
|
|
||||||
|
|
||||||
namespace Filtration.ItemFilterPreview.UserControls.DesignTime
|
|
||||||
{
|
|
||||||
public class DesignTimeItemControl
|
|
||||||
{
|
|
||||||
public IFilteredItem FilteredItem
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return Mock.Of<IFilteredItem>(f => f.BackgroundColor == Colors.Bisque && f.TextColor == Colors.Maroon && f.BorderColor == Colors.CornflowerBlue && f.FontSize == 15);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,39 +0,0 @@
|
||||||
<UserControl x:Class="Filtration.ItemFilterPreview.UserControls.ItemControl"
|
|
||||||
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"
|
|
||||||
xmlns:designTime="clr-namespace:Filtration.ItemFilterPreview.UserControls.DesignTime"
|
|
||||||
xmlns:converters="clr-namespace:Filtration.Common.Converters;assembly=Filtration.Common"
|
|
||||||
mc:Ignorable="d"
|
|
||||||
d:DataContext="{d:DesignInstance Type=designTime:DesignTimeItemControl, IsDesignTimeCreatable=True}"
|
|
||||||
d:DesignHeight="35" d:DesignWidth="170">
|
|
||||||
<UserControl.Resources>
|
|
||||||
<Style x:Key="PathOfExileFont" TargetType="{x:Type TextBlock}">
|
|
||||||
<Setter Property="FontFamily" Value="pack://application:,,,/resources/#Fontin SmallCaps" />
|
|
||||||
</Style>
|
|
||||||
<converters:ColorToSolidColorBrushConverter x:Key="ColorToSolidColorBrushConverter"/>
|
|
||||||
</UserControl.Resources>
|
|
||||||
<Grid>
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition Height="*" />
|
|
||||||
<RowDefinition Height="Auto" />
|
|
||||||
<RowDefinition Height="*" />
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="*" />
|
|
||||||
<ColumnDefinition Width="Auto" />
|
|
||||||
<ColumnDefinition Width="*" />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
<Border Grid.Row="1" Grid.Column="1" Margin="3" Padding="4,0,4,0" BorderThickness="1" BorderBrush="{Binding FilteredItem.BorderColor, Converter={StaticResource ColorToSolidColorBrushConverter}}">
|
|
||||||
<Border.Background>
|
|
||||||
<SolidColorBrush Color="{Binding FilteredItem.BackgroundColor}" />
|
|
||||||
</Border.Background>
|
|
||||||
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding FilteredItem.Item.Description}" Style="{StaticResource PathOfExileFont}" FontSize="{Binding FilteredItem.FontSize}">
|
|
||||||
<TextBlock.Foreground>
|
|
||||||
<SolidColorBrush Color="{Binding FilteredItem.TextColor}" />
|
|
||||||
</TextBlock.Foreground>
|
|
||||||
</TextBlock>
|
|
||||||
</Border>
|
|
||||||
</Grid>
|
|
||||||
</UserControl>
|
|
|
@ -1,29 +0,0 @@
|
||||||
using System.Windows;
|
|
||||||
using Filtration.ObjectModel;
|
|
||||||
|
|
||||||
namespace Filtration.ItemFilterPreview.UserControls
|
|
||||||
{
|
|
||||||
public partial class ItemControl
|
|
||||||
{
|
|
||||||
public ItemControl()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
// ReSharper disable once PossibleNullReferenceException
|
|
||||||
(Content as FrameworkElement).DataContext = this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static readonly DependencyProperty FilteredItemProperty = DependencyProperty.Register(
|
|
||||||
"FilteredItem",
|
|
||||||
typeof (IFilteredItem),
|
|
||||||
typeof (ItemControl),
|
|
||||||
new FrameworkPropertyMetadata()
|
|
||||||
);
|
|
||||||
|
|
||||||
public IFilteredItem FilteredItem
|
|
||||||
{
|
|
||||||
get { return (IFilteredItem)GetValue(FilteredItemProperty); }
|
|
||||||
set { SetValue(FilteredItemProperty, value); }
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,55 +0,0 @@
|
||||||
<UserControl x:Class="Filtration.ItemFilterPreview.UserControls.ItemSocketsControl"
|
|
||||||
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"
|
|
||||||
xmlns:local="clr-namespace:Filtration.ItemFilterPreview.UserControls"
|
|
||||||
mc:Ignorable="d" SizeChanged="ItemSocketsControl_OnSizeChanged" RenderOptions.EdgeMode="Aliased" SnapsToDevicePixels="True"
|
|
||||||
Height="29" Width="17" >
|
|
||||||
<Grid>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="2*"/>
|
|
||||||
<ColumnDefinition Width="3*"/>
|
|
||||||
<ColumnDefinition Width="2*"/>
|
|
||||||
<ColumnDefinition Width="3*"/>
|
|
||||||
<ColumnDefinition Width="2*"/>
|
|
||||||
<ColumnDefinition Width="3*"/>
|
|
||||||
<ColumnDefinition Width="2*"/>
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition Height="2"/>
|
|
||||||
<RowDefinition Height="3"/>
|
|
||||||
<RowDefinition Height="2"/>
|
|
||||||
<RowDefinition Height="4"/>
|
|
||||||
<RowDefinition Height="2"/>
|
|
||||||
<RowDefinition Height="3"/>
|
|
||||||
<RowDefinition Height="2"/>
|
|
||||||
<RowDefinition Height="4"/>
|
|
||||||
<RowDefinition Height="2"/>
|
|
||||||
<RowDefinition Height="3"/>
|
|
||||||
<RowDefinition Height="2"/>
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
|
|
||||||
<Border Grid.Row="0" Grid.RowSpan="3" Grid.Column="0" Grid.ColumnSpan="3" Background="Tomato" />
|
|
||||||
|
|
||||||
<Border Grid.Row="1" Grid.Column="3" Background="White" />
|
|
||||||
|
|
||||||
<Border Grid.Row="0" Grid.RowSpan="3" Grid.Column="4" Grid.ColumnSpan="3" Background="GreenYellow" />
|
|
||||||
|
|
||||||
<Border Grid.Row="3" Grid.Column="5" Background="White" />
|
|
||||||
|
|
||||||
<Border Grid.Row="4" Grid.RowSpan="3" Grid.Column="4" Grid.ColumnSpan="3" Background="GreenYellow" />
|
|
||||||
|
|
||||||
<Border Grid.Row="5" Grid.Column="3" Background="White" />
|
|
||||||
|
|
||||||
<Border Grid.Row="4" Grid.RowSpan="3" Grid.Column="0" Grid.ColumnSpan="3" Background="CornflowerBlue" />
|
|
||||||
|
|
||||||
<Border Grid.Row="7" Grid.Column="1" Background="White" />
|
|
||||||
|
|
||||||
<Border Grid.Row="8" Grid.RowSpan="3" Grid.Column="0" Grid.ColumnSpan="3" Background="CornflowerBlue" />
|
|
||||||
|
|
||||||
<Border Grid.Row="9" Grid.Column="3" Background="White" />
|
|
||||||
|
|
||||||
<Border Grid.Row="8" Grid.RowSpan="3" Grid.Column="4" Grid.ColumnSpan="3" Background="Tomato" />
|
|
||||||
</Grid>
|
|
||||||
</UserControl>
|
|
|
@ -1,18 +0,0 @@
|
||||||
using System.Windows;
|
|
||||||
|
|
||||||
namespace Filtration.ItemFilterPreview.UserControls
|
|
||||||
{
|
|
||||||
public partial class ItemSocketsControl
|
|
||||||
{
|
|
||||||
public ItemSocketsControl()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ItemSocketsControl_OnSizeChanged(object sender, SizeChangedEventArgs e)
|
|
||||||
{
|
|
||||||
const double ratio = 2d/3d;
|
|
||||||
Width = Height * ratio;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
<UserControl x:Class="Filtration.ItemFilterPreview.UserControls.LootExplosionSceneUserControl"
|
|
||||||
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"
|
|
||||||
xmlns:local="clr-namespace:Filtration.ItemFilterPreview.UserControls"
|
|
||||||
xmlns:model="clr-namespace:Filtration.ObjectModel;assembly=Filtration.ObjectModel"
|
|
||||||
mc:Ignorable="d"
|
|
||||||
d:DesignHeight="300" d:DesignWidth="300" d:DataContext="{d:DesignInstance local:LootExplosionSceneUserControl}">
|
|
||||||
<Grid Background="DimGray">
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition Height="Auto" />
|
|
||||||
<RowDefinition Height="*"/>
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<Button Grid.Row="0" Click="ButtonBase_OnClick">Test Canvas</Button>
|
|
||||||
<ItemsControl Grid.Row="1" ItemsSource="{Binding FilteredItems}" x:Name="FilteredItemsControl" Height="800">
|
|
||||||
<ItemsControl.ItemsPanel>
|
|
||||||
<ItemsPanelTemplate>
|
|
||||||
<Canvas />
|
|
||||||
</ItemsPanelTemplate>
|
|
||||||
</ItemsControl.ItemsPanel>
|
|
||||||
<ItemsControl.ItemTemplate>
|
|
||||||
<DataTemplate DataType="{x:Type model:IFilteredItem}">
|
|
||||||
<local:ItemControl FilteredItem="{Binding}" />
|
|
||||||
</DataTemplate>
|
|
||||||
</ItemsControl.ItemTemplate>
|
|
||||||
</ItemsControl>
|
|
||||||
</Grid>
|
|
||||||
</UserControl>
|
|
|
@ -1,83 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Windows;
|
|
||||||
using System.Windows.Controls;
|
|
||||||
using System.Windows.Data;
|
|
||||||
using System.Windows.Media;
|
|
||||||
using Filtration.ObjectModel;
|
|
||||||
|
|
||||||
namespace Filtration.ItemFilterPreview.UserControls
|
|
||||||
{
|
|
||||||
public partial class LootExplosionSceneUserControl : UserControl
|
|
||||||
{
|
|
||||||
public LootExplosionSceneUserControl()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static readonly DependencyProperty FilteredItemsProperty = DependencyProperty.Register(
|
|
||||||
"FilteredItems",
|
|
||||||
typeof(IEnumerable<IFilteredItem>),
|
|
||||||
typeof(LootExplosionSceneUserControl),
|
|
||||||
new FrameworkPropertyMetadata()
|
|
||||||
);
|
|
||||||
|
|
||||||
public IEnumerable<IFilteredItem> FilteredItems
|
|
||||||
{
|
|
||||||
get { return (IEnumerable<IFilteredItem>)GetValue(FilteredItemsProperty); }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
SetValue(FilteredItemsProperty, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void LootCanvas_OnSourceUpdated(object sender, DataTransferEventArgs e)
|
|
||||||
{
|
|
||||||
var canvas = sender as Canvas;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
|
|
||||||
{
|
|
||||||
var canvas = GetItemsPanel(FilteredItemsControl) as Canvas;
|
|
||||||
if (canvas == null) return;
|
|
||||||
var rand = new Random();
|
|
||||||
|
|
||||||
foreach (var child in canvas.Children.OfType<ContentPresenter>())
|
|
||||||
{
|
|
||||||
Canvas.SetLeft(child, rand.Next((int)(canvas.ActualWidth - child.ActualWidth)));
|
|
||||||
Canvas.SetTop(child, rand.Next((int)(canvas.ActualHeight - child.ActualHeight)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Panel GetItemsPanel(DependencyObject itemsControl)
|
|
||||||
{
|
|
||||||
var itemsPresenter = GetVisualChild<ItemsPresenter>(itemsControl);
|
|
||||||
var itemsPanel = VisualTreeHelper.GetChild(itemsPresenter, 0) as Panel;
|
|
||||||
return itemsPanel;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static T GetVisualChild<T>(DependencyObject parent) where T : Visual
|
|
||||||
{
|
|
||||||
var child = default(T);
|
|
||||||
|
|
||||||
var numVisuals = VisualTreeHelper.GetChildrenCount(parent);
|
|
||||||
for (var i = 0; i < numVisuals; i++)
|
|
||||||
{
|
|
||||||
var v = (Visual)VisualTreeHelper.GetChild(parent, i);
|
|
||||||
child = v as T;
|
|
||||||
if (child == null)
|
|
||||||
{
|
|
||||||
child = GetVisualChild<T>(v);
|
|
||||||
}
|
|
||||||
if (child != null)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return child;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,10 +0,0 @@
|
||||||
namespace Filtration.ItemFilterPreview.ViewModels
|
|
||||||
{
|
|
||||||
internal class LootExplosionViewModel
|
|
||||||
{
|
|
||||||
public LootExplosionViewModel()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,189 +0,0 @@
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Collections.ObjectModel;
|
|
||||||
using Filtration.ItemFilterPreview.Properties;
|
|
||||||
using Filtration.ItemFilterPreview.Services;
|
|
||||||
using Filtration.ObjectModel;
|
|
||||||
using Filtration.ObjectModel.Enums;
|
|
||||||
using Filtration.Parser.Interface.Services;
|
|
||||||
using GalaSoft.MvvmLight;
|
|
||||||
using GalaSoft.MvvmLight.CommandWpf;
|
|
||||||
|
|
||||||
namespace Filtration.ItemFilterPreview.ViewModels
|
|
||||||
{
|
|
||||||
internal interface IMainWindowViewModel
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
internal class MainWindowViewModel : ViewModelBase, IMainWindowViewModel
|
|
||||||
{
|
|
||||||
private readonly IItemFilterScriptTranslator _itemFilterScriptTranslator;
|
|
||||||
private readonly IItemFilterProcessor _itemFilterProcessor;
|
|
||||||
private IItemFilterScript _itemFilterScript;
|
|
||||||
|
|
||||||
|
|
||||||
public MainWindowViewModel(IItemFilterScriptTranslator itemFilterScriptTranslator, IItemFilterProcessor itemFilterProcessor)
|
|
||||||
{
|
|
||||||
_itemFilterScriptTranslator = itemFilterScriptTranslator;
|
|
||||||
_itemFilterProcessor = itemFilterProcessor;
|
|
||||||
LoadScriptCommand = new RelayCommand(OnLoadScriptCommand);
|
|
||||||
LoadAlternateScriptCommand = new RelayCommand(OnLoadAlternateScriptCommand);
|
|
||||||
ProcessItemFilterCommand = new RelayCommand(OnProcessItemFilterCommand);
|
|
||||||
}
|
|
||||||
|
|
||||||
public RelayCommand LoadScriptCommand { get; private set; }
|
|
||||||
public RelayCommand LoadAlternateScriptCommand { get; private set; }
|
|
||||||
public RelayCommand ProcessItemFilterCommand { get; private set; }
|
|
||||||
|
|
||||||
public IEnumerable<IFilteredItem> FilteredItems
|
|
||||||
{
|
|
||||||
get { return _filteredItems; }
|
|
||||||
private set
|
|
||||||
{
|
|
||||||
_filteredItems = value;
|
|
||||||
RaisePropertyChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnLoadScriptCommand()
|
|
||||||
{
|
|
||||||
_itemFilterScript = _itemFilterScriptTranslator.TranslateStringToItemFilterScript(Resources.neversinkfilter);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnLoadAlternateScriptCommand()
|
|
||||||
{
|
|
||||||
_itemFilterScript = _itemFilterScriptTranslator.TranslateStringToItemFilterScript(Resources.muldini);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnProcessItemFilterCommand()
|
|
||||||
{
|
|
||||||
FilteredItems = _itemFilterProcessor.ProcessItemsAgainstItemFilterScript(_itemFilterScript, TestItems);
|
|
||||||
}
|
|
||||||
|
|
||||||
private readonly List<IItem> TestItems = new List<IItem>
|
|
||||||
{
|
|
||||||
new Item
|
|
||||||
{
|
|
||||||
Description = "Full Plate",
|
|
||||||
BaseType = "Full Plate",
|
|
||||||
ItemClass = "Body Armors",
|
|
||||||
ItemRarity = ItemRarity.Normal,
|
|
||||||
ItemLevel = 66,
|
|
||||||
DropLevel = 28,
|
|
||||||
Height = 3,
|
|
||||||
Width = 2,
|
|
||||||
SocketGroups = new List<SocketGroup> {new SocketGroup(new List<Socket> { new Socket(SocketColor.Red) , new Socket(SocketColor.Red) , new Socket(SocketColor.Red) , new Socket(SocketColor.Red) , new Socket(SocketColor.Red) , new Socket(SocketColor.Red) }, true)}
|
|
||||||
},
|
|
||||||
new Item
|
|
||||||
{
|
|
||||||
Description = "Scroll of Wisdom",
|
|
||||||
BaseType = "Scroll of Wisdom",
|
|
||||||
ItemClass = "Currency",
|
|
||||||
ItemRarity = ItemRarity.Normal,
|
|
||||||
ItemLevel = 75,
|
|
||||||
DropLevel = 1,
|
|
||||||
Height = 1,
|
|
||||||
Width = 1,
|
|
||||||
SocketGroups = new List<SocketGroup>()
|
|
||||||
},
|
|
||||||
new Item
|
|
||||||
{
|
|
||||||
Description = "Unset Ring",
|
|
||||||
BaseType = "Unset Ring",
|
|
||||||
ItemClass = "Rings",
|
|
||||||
ItemRarity = ItemRarity.Rare,
|
|
||||||
ItemLevel = 53,
|
|
||||||
DropLevel = 45,
|
|
||||||
Height = 1,
|
|
||||||
Width = 1,
|
|
||||||
SocketGroups = new List<SocketGroup>()
|
|
||||||
},
|
|
||||||
new Item
|
|
||||||
{
|
|
||||||
Description = "Incinerate",
|
|
||||||
BaseType = "Incinerate",
|
|
||||||
ItemClass = "Active Skill Gems",
|
|
||||||
ItemRarity = ItemRarity.Normal,
|
|
||||||
ItemLevel = 9,
|
|
||||||
DropLevel = 9,
|
|
||||||
Quality = 10,
|
|
||||||
Height = 1,
|
|
||||||
Width = 1,
|
|
||||||
SocketGroups = new List<SocketGroup>()
|
|
||||||
},
|
|
||||||
new Item
|
|
||||||
{
|
|
||||||
Description = "Mirror of Kalandra",
|
|
||||||
BaseType = "Mirror of Kalandra",
|
|
||||||
ItemClass = "Currency",
|
|
||||||
ItemRarity = ItemRarity.Normal,
|
|
||||||
ItemLevel = 77,
|
|
||||||
DropLevel = 1,
|
|
||||||
Height = 1,
|
|
||||||
Width = 1,
|
|
||||||
SocketGroups = new List<SocketGroup>()
|
|
||||||
},
|
|
||||||
new Item
|
|
||||||
{
|
|
||||||
Description = "The Gemcutter",
|
|
||||||
BaseType = "The Gemcutter",
|
|
||||||
ItemClass = "Divination Card",
|
|
||||||
ItemRarity = ItemRarity.Normal,
|
|
||||||
ItemLevel = 1,
|
|
||||||
DropLevel = 72,
|
|
||||||
Height = 1,
|
|
||||||
Width = 1,
|
|
||||||
SocketGroups = new List<SocketGroup>()
|
|
||||||
},
|
|
||||||
new Item
|
|
||||||
{
|
|
||||||
Description = "Thaumetic Sulphite",
|
|
||||||
BaseType = "Thaumetic Sulphite",
|
|
||||||
ItemClass = "Quest Items",
|
|
||||||
ItemRarity = ItemRarity.Normal,
|
|
||||||
ItemLevel = 32,
|
|
||||||
DropLevel = 1,
|
|
||||||
Height = 2,
|
|
||||||
Width = 2,
|
|
||||||
SocketGroups = new List<SocketGroup>()
|
|
||||||
},
|
|
||||||
new Item
|
|
||||||
{
|
|
||||||
Description = "Fishing Rod",
|
|
||||||
BaseType = "Fishing Rod",
|
|
||||||
ItemClass = "Fishing Rods",
|
|
||||||
ItemRarity = ItemRarity.Normal,
|
|
||||||
ItemLevel = 1,
|
|
||||||
DropLevel = 1,
|
|
||||||
Height = 4,
|
|
||||||
Width = 1,
|
|
||||||
SocketGroups = new List<SocketGroup>()
|
|
||||||
},
|
|
||||||
new Item
|
|
||||||
{
|
|
||||||
Description = "Dry Peninsula Map",
|
|
||||||
BaseType = "Dry Peninsula Map",
|
|
||||||
ItemClass = "Maps",
|
|
||||||
ItemRarity = ItemRarity.Magic,
|
|
||||||
ItemLevel = 75,
|
|
||||||
DropLevel = 75,
|
|
||||||
Height = 1,
|
|
||||||
Width = 1,
|
|
||||||
SocketGroups = new List<SocketGroup>()
|
|
||||||
},
|
|
||||||
new Item
|
|
||||||
{
|
|
||||||
Description = "Stone Hammer",
|
|
||||||
BaseType = "Stone Hammer",
|
|
||||||
ItemClass = "One Hand Maces",
|
|
||||||
ItemRarity = ItemRarity.Normal,
|
|
||||||
ItemLevel = 1,
|
|
||||||
DropLevel = 1,
|
|
||||||
Height = 3,
|
|
||||||
Width = 2,
|
|
||||||
SocketGroups = new List<SocketGroup>()
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
private IEnumerable<IFilteredItem> _filteredItems;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
<UserControl x:Class="Filtration.ItemFilterPreview.Views.LootExplosionView"
|
|
||||||
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"
|
|
||||||
xmlns:local="clr-namespace:Filtration.ItemFilterPreview.Views"
|
|
||||||
mc:Ignorable="d"
|
|
||||||
d:DesignHeight="300" d:DesignWidth="300">
|
|
||||||
|
|
||||||
<Grid>
|
|
||||||
|
|
||||||
</Grid>
|
|
||||||
</UserControl>
|
|
|
@ -1,28 +0,0 @@
|
||||||
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.ItemFilterPreview.Views
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Interaction logic for LootExplosionView.xaml
|
|
||||||
/// </summary>
|
|
||||||
public partial class LootExplosionView : UserControl
|
|
||||||
{
|
|
||||||
public LootExplosionView()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,22 +0,0 @@
|
||||||
<Window x:Class="Filtration.ItemFilterPreview.Views.MainWindow"
|
|
||||||
x:ClassModifier="internal"
|
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
||||||
xmlns:userControls="clr-namespace:Filtration.ItemFilterPreview.UserControls"
|
|
||||||
xmlns:viewModels="clr-namespace:Filtration.ItemFilterPreview.ViewModels"
|
|
||||||
mc:Ignorable="d"
|
|
||||||
d:DataContext="{d:DesignInstance viewModels:MainWindowViewModel}"
|
|
||||||
Title="MainWindow" Height="960" Width="1280" >
|
|
||||||
<Grid>
|
|
||||||
<StackPanel>
|
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
<Button Command="{Binding LoadScriptCommand}">Load Neversink Script</Button>
|
|
||||||
<Button Command="{Binding LoadAlternateScriptCommand}">Load Muldini Script</Button>
|
|
||||||
</StackPanel>
|
|
||||||
<Button Command="{Binding ProcessItemFilterCommand}">Process Item Filter</Button>
|
|
||||||
<userControls:LootExplosionSceneUserControl FilteredItems="{Binding FilteredItems}" />
|
|
||||||
</StackPanel>
|
|
||||||
</Grid>
|
|
||||||
</Window>
|
|
|
@ -1,18 +0,0 @@
|
||||||
using Filtration.ItemFilterPreview.ViewModels;
|
|
||||||
|
|
||||||
namespace Filtration.ItemFilterPreview.Views
|
|
||||||
{
|
|
||||||
public interface IMainWindow
|
|
||||||
{
|
|
||||||
void Show();
|
|
||||||
}
|
|
||||||
|
|
||||||
internal partial class MainWindow : IMainWindow
|
|
||||||
{
|
|
||||||
public MainWindow(IMainWindowViewModel mainWindowViewModel)
|
|
||||||
{
|
|
||||||
DataContext = mainWindowViewModel;
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
using Castle.MicroKernel.Registration;
|
|
||||||
using Castle.MicroKernel.SubSystems.Configuration;
|
|
||||||
using Castle.Windsor;
|
|
||||||
using Filtration.ItemFilterPreview.Services;
|
|
||||||
|
|
||||||
namespace Filtration.ItemFilterPreview.WindsorInstallers
|
|
||||||
{
|
|
||||||
public class ServicesInstaller : IWindsorInstaller
|
|
||||||
{
|
|
||||||
public void Install(IWindsorContainer container, IConfigurationStore store)
|
|
||||||
{
|
|
||||||
container.Register(
|
|
||||||
Component.For<IBlockItemMatcher>()
|
|
||||||
.ImplementedBy<BlockItemMatcher>()
|
|
||||||
.LifeStyle.Singleton);
|
|
||||||
|
|
||||||
container.Register(
|
|
||||||
Component.For<IItemFilterProcessor>()
|
|
||||||
.ImplementedBy<ItemFilterProcessor>()
|
|
||||||
.LifeStyle.Singleton);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
using Castle.MicroKernel.Registration;
|
|
||||||
using Castle.MicroKernel.SubSystems.Configuration;
|
|
||||||
using Castle.Windsor;
|
|
||||||
using Filtration.ItemFilterPreview.ViewModels;
|
|
||||||
|
|
||||||
namespace Filtration.ItemFilterPreview.WindsorInstallers
|
|
||||||
{
|
|
||||||
public class ViewModelsInstaller : IWindsorInstaller
|
|
||||||
{
|
|
||||||
public void Install(IWindsorContainer container, IConfigurationStore store)
|
|
||||||
{
|
|
||||||
container.Register(
|
|
||||||
Component.For<IMainWindowViewModel>()
|
|
||||||
.ImplementedBy<MainWindowViewModel>()
|
|
||||||
.LifeStyle.Singleton);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
using Castle.MicroKernel.Registration;
|
|
||||||
using Castle.MicroKernel.SubSystems.Configuration;
|
|
||||||
using Castle.Windsor;
|
|
||||||
using Filtration.ItemFilterPreview.Views;
|
|
||||||
|
|
||||||
namespace Filtration.ItemFilterPreview.WindsorInstallers
|
|
||||||
{
|
|
||||||
public class ViewsInstaller : IWindsorInstaller
|
|
||||||
{
|
|
||||||
public void Install(IWindsorContainer container, IConfigurationStore store)
|
|
||||||
{
|
|
||||||
container.Register(
|
|
||||||
Component.For<IMainWindow>()
|
|
||||||
.ImplementedBy<MainWindow>()
|
|
||||||
.LifeStyle.Singleton);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,19 +1,16 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
<ProjectGuid>{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}</ProjectGuid>
|
<ProjectGuid>{56D0887E-B10D-4F9C-A88E-09CF8E8E06E3}</ProjectGuid>
|
||||||
<OutputType>Library</OutputType>
|
<OutputType>Library</OutputType>
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>Filtration.ItemFilterPreview.Data</RootNamespace>
|
<RootNamespace>Filtration.LootExplosionStudio.Tests</RootNamespace>
|
||||||
<AssemblyName>Filtration.ItemFilterPreview.Data</AssemblyName>
|
<AssemblyName>Filtration.LootExplosionStudio.Tests</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<TargetFrameworkProfile />
|
|
||||||
<NuGetPackageImportStamp>
|
|
||||||
</NuGetPackageImportStamp>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
@ -33,41 +30,39 @@
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Reference Include="Moq">
|
||||||
|
<HintPath>..\packages\Moq.4.2.1507.0118\lib\net40\Moq.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="nunit.framework">
|
||||||
|
<HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="PresentationCore" />
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.Runtime.Serialization" />
|
|
||||||
<Reference Include="System.Security" />
|
|
||||||
<Reference Include="System.Xml.Linq" />
|
<Reference Include="System.Xml.Linq" />
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
<Reference Include="Microsoft.CSharp" />
|
<Reference Include="Microsoft.CSharp" />
|
||||||
<Reference Include="System.Data" />
|
<Reference Include="System.Data" />
|
||||||
<Reference Include="System.Net.Http" />
|
|
||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="DataContexts\FiltrationDbContext.cs" />
|
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="Repositories\IEntityRepository.cs" />
|
<Compile Include="Services\TestItemFilterBlockFinderService.cs" />
|
||||||
<Compile Include="Repositories\ItemSetRepository.cs" />
|
<Compile Include="Services\TestLootItemAppearanceService.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="App.config" />
|
<None Include="packages.config" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Filtration.LootExplosionStudio\Filtration.LootExplosionStudio.csproj">
|
||||||
|
<Project>{c8009b11-14d0-4421-94f0-9ef4603cb363}</Project>
|
||||||
|
<Name>Filtration.LootExplosionStudio</Name>
|
||||||
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\Filtration.ObjectModel\Filtration.ObjectModel.csproj">
|
<ProjectReference Include="..\Filtration.ObjectModel\Filtration.ObjectModel.csproj">
|
||||||
<Project>{4aac3beb-1dc1-483e-9d11-0e9334e80227}</Project>
|
<Project>{4aac3beb-1dc1-483e-9d11-0e9334e80227}</Project>
|
||||||
<Name>Filtration.ObjectModel</Name>
|
<Name>Filtration.ObjectModel</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="System.Data.SQLite">
|
|
||||||
<Version>1.0.109.2</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="System.Data.SQLite.Core">
|
|
||||||
<Version>1.0.109.2</Version>
|
|
||||||
</PackageReference>
|
|
||||||
</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.
|
|
@ -5,12 +5,12 @@ using System.Runtime.InteropServices;
|
||||||
// General Information about an assembly is controlled through the following
|
// General Information about an assembly is controlled through the following
|
||||||
// set of attributes. Change these attribute values to modify the information
|
// set of attributes. Change these attribute values to modify the information
|
||||||
// associated with an assembly.
|
// associated with an assembly.
|
||||||
[assembly: AssemblyTitle("Filtration.ItemFilterPreview.Data.Tests")]
|
[assembly: AssemblyTitle("Filtration.LootExplosionStudio.Tests")]
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("Microsoft")]
|
||||||
[assembly: AssemblyProduct("Filtration.ItemFilterPreview.Data.Tests")]
|
[assembly: AssemblyProduct("Filtration.LootExplosionStudio.Tests")]
|
||||||
[assembly: AssemblyCopyright("Copyright © 2016")]
|
[assembly: AssemblyCopyright("Copyright © Microsoft 2015")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
[assembly: Guid("7a5720de-a41b-47ea-aaab-7c5608ff0c1f")]
|
[assembly: Guid("24ce1315-7f86-4389-a63c-22a40baa4c6d")]
|
||||||
|
|
||||||
// Version information for an assembly consists of the following four values:
|
// Version information for an assembly consists of the following four values:
|
||||||
//
|
//
|
|
@ -0,0 +1,178 @@
|
||||||
|
using Filtration.LootExplosionStudio.Services;
|
||||||
|
using Filtration.ObjectModel;
|
||||||
|
using Filtration.ObjectModel.BlockItemTypes;
|
||||||
|
using Filtration.ObjectModel.Enums;
|
||||||
|
using Filtration.ObjectModel.LootExplosionStudio;
|
||||||
|
using NUnit.Framework;
|
||||||
|
|
||||||
|
namespace Filtration.LootExplosionStudio.Tests.Services
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class TestItemFilterBlockFinderService
|
||||||
|
{
|
||||||
|
private ItemFilterBlockFinderServiceTestUtility _testUtility;
|
||||||
|
|
||||||
|
[SetUp]
|
||||||
|
public void ItemFilterProcessingServiceTestSetup()
|
||||||
|
{
|
||||||
|
_testUtility = new ItemFilterBlockFinderServiceTestUtility();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void FindBlockForLootItem_SingleBlock_BaseType_Matches()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var testInputBaseType = "TestBaseType";
|
||||||
|
var testInputBlockItem = new BaseTypeBlockItem();
|
||||||
|
testInputBlockItem.Items.Add(testInputBaseType);
|
||||||
|
|
||||||
|
_testUtility.TestLootItem.BaseType = testInputBaseType;
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(testInputBlockItem);
|
||||||
|
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = _testUtility.Service.FindBlockForLootItem(_testUtility.TestLootItem, _testUtility.TestScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(_testUtility.TestBlock, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void FindBlockForLootItem_SingleHideBlock_Matches()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
|
||||||
|
_testUtility.TestBlock.Action = BlockAction.Hide;
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = _testUtility.Service.FindBlockForLootItem(_testUtility.TestLootItem, _testUtility.TestScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(_testUtility.TestBlock, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void FindBlockForLootItem_SingleBlock_MultipleBlockItems_Matches()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var testInputBaseType = "TestBaseType";
|
||||||
|
var testInputBaseTypeBlockItem = new BaseTypeBlockItem();
|
||||||
|
testInputBaseTypeBlockItem.Items.Add(testInputBaseType);
|
||||||
|
|
||||||
|
var testInputClass = "Test Class";
|
||||||
|
var testInputClassBlockItem = new ClassBlockItem();
|
||||||
|
testInputClassBlockItem.Items.Add(testInputClass);
|
||||||
|
|
||||||
|
var testInputItemLevel = 57;
|
||||||
|
var testInputItemLevelBlockItem = new ItemLevelBlockItem(FilterPredicateOperator.GreaterThan, 50);
|
||||||
|
|
||||||
|
_testUtility.TestLootItem.BaseType = testInputBaseType;
|
||||||
|
_testUtility.TestLootItem.Class = testInputClass;
|
||||||
|
_testUtility.TestLootItem.ItemLevel = testInputItemLevel;
|
||||||
|
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(testInputBaseTypeBlockItem);
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(testInputClassBlockItem);
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(testInputItemLevelBlockItem);
|
||||||
|
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = _testUtility.Service.FindBlockForLootItem(_testUtility.TestLootItem, _testUtility.TestScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(_testUtility.TestBlock, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void FindBlockForLootItem_SingleBlock_MultipleBlockItemsOneWithoutMatch_Matches()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var testInputBaseType = "TestBaseType";
|
||||||
|
var testInputBaseTypeBlockItem = new BaseTypeBlockItem();
|
||||||
|
testInputBaseTypeBlockItem.Items.Add(testInputBaseType);
|
||||||
|
|
||||||
|
var testInputClass = "Test Class";
|
||||||
|
var testInputClassBlockItem = new ClassBlockItem();
|
||||||
|
testInputClassBlockItem.Items.Add(testInputClass);
|
||||||
|
|
||||||
|
var testInputItemLevel = 57;
|
||||||
|
var testInputItemLevelBlockItem = new ItemLevelBlockItem(FilterPredicateOperator.GreaterThan, 50);
|
||||||
|
|
||||||
|
var testInputDropLevel = 35;
|
||||||
|
var testInputDropLevelBlockItem = new DropLevelBlockItem(FilterPredicateOperator.GreaterThanOrEqual, 89);
|
||||||
|
|
||||||
|
_testUtility.TestLootItem.BaseType = testInputBaseType;
|
||||||
|
_testUtility.TestLootItem.Class = testInputClass;
|
||||||
|
_testUtility.TestLootItem.ItemLevel = testInputItemLevel;
|
||||||
|
_testUtility.TestLootItem.DropLevel = testInputDropLevel;
|
||||||
|
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(testInputBaseTypeBlockItem);
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(testInputClassBlockItem);
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(testInputItemLevelBlockItem);
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(testInputDropLevelBlockItem);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = _testUtility.Service.FindBlockForLootItem(_testUtility.TestLootItem, _testUtility.TestScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.IsNull(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void FindBlockForLootItem_MultipleBlocksBlock_Matches()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var testInputBlock1 = new ItemFilterBlock();
|
||||||
|
var testInputClass1 = "Test Class";
|
||||||
|
var testInputClassBlockItem1 = new ClassBlockItem();
|
||||||
|
testInputClassBlockItem1.Items.Add(testInputClass1);
|
||||||
|
testInputBlock1.BlockItems.Add(testInputClassBlockItem1);
|
||||||
|
|
||||||
|
_testUtility.TestScript.ItemFilterBlocks.Add(testInputBlock1);
|
||||||
|
|
||||||
|
var testInputBaseType = "TestBaseType";
|
||||||
|
var testInputBaseTypeBlockItem = new BaseTypeBlockItem();
|
||||||
|
testInputBaseTypeBlockItem.Items.Add(testInputBaseType);
|
||||||
|
|
||||||
|
var testInputClass = "Test Class";
|
||||||
|
var testInputClassBlockItem = new ClassBlockItem();
|
||||||
|
testInputClassBlockItem.Items.Add(testInputClass);
|
||||||
|
|
||||||
|
var testInputItemLevel = 57;
|
||||||
|
var testInputItemLevelBlockItem = new ItemLevelBlockItem(FilterPredicateOperator.GreaterThan, 50);
|
||||||
|
|
||||||
|
_testUtility.TestLootItem.BaseType = testInputBaseType;
|
||||||
|
_testUtility.TestLootItem.Class = testInputClass;
|
||||||
|
_testUtility.TestLootItem.ItemLevel = testInputItemLevel;
|
||||||
|
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(testInputBaseTypeBlockItem);
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(testInputClassBlockItem);
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(testInputItemLevelBlockItem);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = _testUtility.Service.FindBlockForLootItem(_testUtility.TestLootItem, _testUtility.TestScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(_testUtility.TestBlock, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
private class ItemFilterBlockFinderServiceTestUtility
|
||||||
|
{
|
||||||
|
public ItemFilterBlockFinderServiceTestUtility()
|
||||||
|
{
|
||||||
|
TestBlock = new ItemFilterBlock();
|
||||||
|
TestScript = new ItemFilterScript();
|
||||||
|
TestScript.ItemFilterBlocks.Add(TestBlock);
|
||||||
|
TestLootItem = new LootItem();
|
||||||
|
|
||||||
|
Service = new ItemFilterBlockFinderService();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ItemFilterScript TestScript { get; private set; }
|
||||||
|
public ItemFilterBlock TestBlock { get; private set; }
|
||||||
|
public LootItem TestLootItem { get; private set; }
|
||||||
|
public ItemFilterBlockFinderService Service { get; private set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,275 @@
|
||||||
|
using System.Windows.Media;
|
||||||
|
using Filtration.LootExplosionStudio.Services;
|
||||||
|
using Filtration.ObjectModel;
|
||||||
|
using Filtration.ObjectModel.BlockItemTypes;
|
||||||
|
using Filtration.ObjectModel.Enums;
|
||||||
|
using Filtration.ObjectModel.LootExplosionStudio;
|
||||||
|
using Moq;
|
||||||
|
using NUnit.Framework;
|
||||||
|
|
||||||
|
namespace Filtration.LootExplosionStudio.Tests.Services
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
class TestLootItemAppearanceService
|
||||||
|
{
|
||||||
|
private LootItemAppearanceServiceTestUtility _testUtility;
|
||||||
|
|
||||||
|
[SetUp]
|
||||||
|
public void ItemFilterProcessingServiceTestSetup()
|
||||||
|
{
|
||||||
|
_testUtility = new LootItemAppearanceServiceTestUtility();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void ProcessLootItemAgainstScript_NoMatchingBlocks_NormalItem_SetsCorrectTextColor()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
_testUtility.TestLootItem.Rarity = ItemRarity.Normal;
|
||||||
|
|
||||||
|
// Act
|
||||||
|
_testUtility.Service.ProcessLootItemAgainstFilterScript(_testUtility.TestLootItem, _testUtility.TestScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.NormalTextColor, _testUtility.TestLootItem.TextColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void ProcessLootItemAgainstScript_NoMatchingBlocks_MagicItem_SetsCorrectTextColor()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
_testUtility.TestLootItem.Rarity = ItemRarity.Magic;
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(new ItemLevelBlockItem(FilterPredicateOperator.GreaterThan, 99));
|
||||||
|
|
||||||
|
// Act
|
||||||
|
_testUtility.Service.ProcessLootItemAgainstFilterScript(_testUtility.TestLootItem, _testUtility.TestScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.MagicTextColor, _testUtility.TestLootItem.TextColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void ProcessLootItemAgainstScript_NoMatchingBlocks_RareItem_SetsCorrectTextColor()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
_testUtility.TestLootItem.Rarity = ItemRarity.Rare;
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(new ItemLevelBlockItem(FilterPredicateOperator.GreaterThan, 99));
|
||||||
|
|
||||||
|
// Act
|
||||||
|
_testUtility.Service.ProcessLootItemAgainstFilterScript(_testUtility.TestLootItem, _testUtility.TestScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.RareTextColor, _testUtility.TestLootItem.TextColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void ProcessLootItemAgainstScript_NoMatchingBlocks_UniqueItem_SetsCorrectTextColor()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
_testUtility.TestLootItem.Rarity = ItemRarity.Unique;
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(new ItemLevelBlockItem(FilterPredicateOperator.GreaterThan, 99));
|
||||||
|
|
||||||
|
// Act
|
||||||
|
_testUtility.Service.ProcessLootItemAgainstFilterScript(_testUtility.TestLootItem, _testUtility.TestScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.UniqueTextColor, _testUtility.TestLootItem.TextColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void ProcessLootItemAgainstScript_NoMatchingBlocks_SetsCorrectBackgroundColor()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(new ItemLevelBlockItem(FilterPredicateOperator.GreaterThan, 99));
|
||||||
|
|
||||||
|
// Act
|
||||||
|
_testUtility.Service.ProcessLootItemAgainstFilterScript(_testUtility.TestLootItem, _testUtility.TestScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.BackgroundColor, _testUtility.TestLootItem.BackgroundColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void ProcessLootItemAgainstScript_NoMatchingBlocks_SetsCorrectBorderColor()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(new ItemLevelBlockItem(FilterPredicateOperator.GreaterThan, 99));
|
||||||
|
|
||||||
|
// Act
|
||||||
|
_testUtility.Service.ProcessLootItemAgainstFilterScript(_testUtility.TestLootItem, _testUtility.TestScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.BorderColor, _testUtility.TestLootItem.BorderColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void ProcessLootItemAgainstScript_MatchingTextColorOnly_SetsColorsCorrectly()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var testInputTextColor = new Color {R = 123, G = 5, B = 22, A = 200};
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(new TextColorBlockItem {Color = testInputTextColor});
|
||||||
|
|
||||||
|
// Act
|
||||||
|
_testUtility.Service.ProcessLootItemAgainstFilterScript(_testUtility.TestLootItem, _testUtility.TestScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(testInputTextColor, _testUtility.TestLootItem.TextColor);
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.BackgroundColor, _testUtility.TestLootItem.BackgroundColor);
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.BorderColor, _testUtility.TestLootItem.BorderColor);
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.FontSize, _testUtility.TestLootItem.FontSize );
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void ProcessLootItemAgainstScript_MatchingBackgroundColorOnly_RarityNormal_SetsColorsCorrectly()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var testInputBackgroundColor = new Color {R = 123, G = 5, B = 22, A = 200};
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(new BackgroundColorBlockItem {Color = testInputBackgroundColor});
|
||||||
|
|
||||||
|
// Act
|
||||||
|
_testUtility.Service.ProcessLootItemAgainstFilterScript(_testUtility.TestLootItem, _testUtility.TestScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(testInputBackgroundColor, _testUtility.TestLootItem.BackgroundColor);
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.NormalTextColor, _testUtility.TestLootItem.TextColor);
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.BorderColor, _testUtility.TestLootItem.BorderColor);
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.FontSize, _testUtility.TestLootItem.FontSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void ProcessLootItemAgainstScript_MatchingBackgroundColorOnly_RarityMagic_SetsColorsCorrectly()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var testInputBackgroundColor = new Color { R = 123, G = 5, B = 22, A = 200 };
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(new BackgroundColorBlockItem {Color = testInputBackgroundColor});
|
||||||
|
_testUtility.TestLootItem.Rarity = ItemRarity.Magic;
|
||||||
|
|
||||||
|
// Act
|
||||||
|
_testUtility.Service.ProcessLootItemAgainstFilterScript(_testUtility.TestLootItem, _testUtility.TestScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(testInputBackgroundColor, _testUtility.TestLootItem.BackgroundColor);
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.MagicTextColor, _testUtility.TestLootItem.TextColor);
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.BorderColor, _testUtility.TestLootItem.BorderColor);
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.FontSize, _testUtility.TestLootItem.FontSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void ProcessLootItemAgainstScript_MatchingBackgroundColorOnly_RarityRare_SetsColorsCorrectly()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var testInputBackgroundColor = new Color { R = 123, G = 5, B = 22, A = 200 };
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(new BackgroundColorBlockItem { Color = testInputBackgroundColor });
|
||||||
|
_testUtility.TestLootItem.Rarity = ItemRarity.Rare;
|
||||||
|
|
||||||
|
// Act
|
||||||
|
_testUtility.Service.ProcessLootItemAgainstFilterScript(_testUtility.TestLootItem, _testUtility.TestScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(testInputBackgroundColor, _testUtility.TestLootItem.BackgroundColor);
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.RareTextColor, _testUtility.TestLootItem.TextColor);
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.BorderColor, _testUtility.TestLootItem.BorderColor);
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.FontSize, _testUtility.TestLootItem.FontSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void ProcessLootItemAgainstScript_MatchingBackgroundColorOnly_RarityUnique_SetsColorsCorrectly()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var testInputBackgroundColor = new Color { R = 123, G = 5, B = 22, A = 200 };
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(new BackgroundColorBlockItem { Color = testInputBackgroundColor });
|
||||||
|
_testUtility.TestLootItem.Rarity = ItemRarity.Unique;
|
||||||
|
|
||||||
|
// Act
|
||||||
|
_testUtility.Service.ProcessLootItemAgainstFilterScript(_testUtility.TestLootItem, _testUtility.TestScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(testInputBackgroundColor, _testUtility.TestLootItem.BackgroundColor);
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.UniqueTextColor, _testUtility.TestLootItem.TextColor);
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.BorderColor, _testUtility.TestLootItem.BorderColor);
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.FontSize, _testUtility.TestLootItem.FontSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void ProcessLootItemAgainstScript_MatchingBorderColorOnly_RarityUnique_SetsColorsCorrectly()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var testInputBorderColor = new Color { R = 123, G = 5, B = 22, A = 200 };
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(new BorderColorBlockItem { Color = testInputBorderColor });
|
||||||
|
|
||||||
|
// Act
|
||||||
|
_testUtility.Service.ProcessLootItemAgainstFilterScript(_testUtility.TestLootItem, _testUtility.TestScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(testInputBorderColor, _testUtility.TestLootItem.BorderColor);
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.NormalTextColor, _testUtility.TestLootItem.TextColor);
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.BackgroundColor, _testUtility.TestLootItem.BackgroundColor);
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.FontSize, _testUtility.TestLootItem.FontSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void ProcessLootItemAgainstScript_MatchingFontSizeOnly_RarityUnique_SetsColorsCorrectly()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var testInputFontSize = 22;
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(new FontSizeBlockItem(22));
|
||||||
|
|
||||||
|
// Act
|
||||||
|
_testUtility.Service.ProcessLootItemAgainstFilterScript(_testUtility.TestLootItem, _testUtility.TestScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(testInputFontSize, _testUtility.TestLootItem.FontSize);
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.NormalTextColor, _testUtility.TestLootItem.TextColor);
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.BackgroundColor, _testUtility.TestLootItem.BackgroundColor);
|
||||||
|
Assert.AreEqual(DefaultLootItemAppearanceConstants.BorderColor, _testUtility.TestLootItem.BorderColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void ProcessLootItemAgainstScript_AllAppearanceMatching_SetsColorsCorrectly()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var testInputFontSize = 22;
|
||||||
|
var testInputTextColor = new Color { R = 123, G = 5, B = 22, A = 200 };
|
||||||
|
var testInputBackgroundColor = new Color { R = 123, G = 59, B = 27, A = 50 };
|
||||||
|
var testInputBorderColor = new Color { R = 166, G = 0, B = 100, A = 255 };
|
||||||
|
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(new FontSizeBlockItem(22));
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(new BorderColorBlockItem { Color = testInputBorderColor });
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(new BackgroundColorBlockItem { Color = testInputBackgroundColor });
|
||||||
|
_testUtility.TestBlock.BlockItems.Add(new TextColorBlockItem { Color = testInputTextColor });
|
||||||
|
|
||||||
|
// Act
|
||||||
|
_testUtility.Service.ProcessLootItemAgainstFilterScript(_testUtility.TestLootItem, _testUtility.TestScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(testInputFontSize, _testUtility.TestLootItem.FontSize);
|
||||||
|
Assert.AreEqual(testInputTextColor, _testUtility.TestLootItem.TextColor);
|
||||||
|
Assert.AreEqual(testInputBackgroundColor, _testUtility.TestLootItem.BackgroundColor);
|
||||||
|
Assert.AreEqual(testInputBorderColor, _testUtility.TestLootItem.BorderColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
private class LootItemAppearanceServiceTestUtility
|
||||||
|
{
|
||||||
|
public LootItemAppearanceServiceTestUtility()
|
||||||
|
{
|
||||||
|
TestBlock = new ItemFilterBlock();
|
||||||
|
TestScript = new ItemFilterScript();
|
||||||
|
TestScript.ItemFilterBlocks.Add(TestBlock);
|
||||||
|
TestLootItem = new LootItem();
|
||||||
|
|
||||||
|
MockItemFilterBlockFinderService = new Mock<IItemFilterBlockFinderService>();
|
||||||
|
MockItemFilterBlockFinderService.Setup(
|
||||||
|
b => b.FindBlockForLootItem(TestLootItem, TestScript))
|
||||||
|
.Returns(TestBlock);
|
||||||
|
|
||||||
|
Service = new LootItemAppearanceService(MockItemFilterBlockFinderService.Object);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Mock<IItemFilterBlockFinderService> MockItemFilterBlockFinderService { get; private set; }
|
||||||
|
|
||||||
|
public ItemFilterScript TestScript { get; private set; }
|
||||||
|
public ItemFilterBlock TestBlock { get; private set; }
|
||||||
|
public LootItem TestLootItem { get; private set; }
|
||||||
|
public LootItemAppearanceService Service { get; private set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="Moq" version="4.2.1507.0118" targetFramework="net451" />
|
||||||
|
<package id="NUnit" version="2.6.4" targetFramework="net451" />
|
||||||
|
</packages>
|
|
@ -1,17 +1,16 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
<ProjectGuid>{46383F20-02DF-48B4-B092-9088FA4ACD5A}</ProjectGuid>
|
<ProjectGuid>{C8009B11-14D0-4421-94F0-9EF4603CB363}</ProjectGuid>
|
||||||
<OutputType>Library</OutputType>
|
<OutputType>Library</OutputType>
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>Filtration.Parser.Interface</RootNamespace>
|
<RootNamespace>Filtration.LootExplosionStudio</RootNamespace>
|
||||||
<AssemblyName>Filtration.Parser.Interface</AssemblyName>
|
<AssemblyName>Filtration.LootExplosionStudio</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<TargetFrameworkProfile />
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
@ -31,23 +30,27 @@
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Reference Include="Castle.Core">
|
||||||
|
<HintPath>..\packages\Castle.Core.3.3.0\lib\net45\Castle.Core.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Castle.Windsor">
|
||||||
|
<HintPath>..\packages\Castle.Windsor.3.3.0\lib\net45\Castle.Windsor.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="PresentationCore" />
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.Xml.Linq" />
|
<Reference Include="System.Xml.Linq" />
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
<Reference Include="Microsoft.CSharp" />
|
<Reference Include="Microsoft.CSharp" />
|
||||||
<Reference Include="System.Data" />
|
<Reference Include="System.Data" />
|
||||||
<Reference Include="System.Net.Http" />
|
|
||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="Services\IBlockGroupHierarchyBuilder.cs" />
|
<Compile Include="Services\ItemFilterBlockFinderService.cs" />
|
||||||
<Compile Include="Services\IItemFilterBlockTranslator.cs" />
|
<Compile Include="Services\LootItemAppearanceService.cs" />
|
||||||
<Compile Include="Services\IItemFilterScriptTranslator.cs" />
|
<Compile Include="Services\LootItemCollectionItemFilterCombinerService.cs" />
|
||||||
</ItemGroup>
|
<Compile Include="WindsorInstallers\ServicesInstaller.cs" />
|
||||||
<ItemGroup>
|
|
||||||
<None Include="app.config" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\Filtration.ObjectModel\Filtration.ObjectModel.csproj">
|
<ProjectReference Include="..\Filtration.ObjectModel\Filtration.ObjectModel.csproj">
|
||||||
|
@ -55,6 +58,9 @@
|
||||||
<Name>Filtration.ObjectModel</Name>
|
<Name>Filtration.ObjectModel</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="packages.config" />
|
||||||
|
</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.
|
|
@ -5,12 +5,12 @@ using System.Runtime.InteropServices;
|
||||||
// General Information about an assembly is controlled through the following
|
// General Information about an assembly is controlled through the following
|
||||||
// set of attributes. Change these attribute values to modify the information
|
// set of attributes. Change these attribute values to modify the information
|
||||||
// associated with an assembly.
|
// associated with an assembly.
|
||||||
[assembly: AssemblyTitle("Filtration.ItemFilterPreview.Data")]
|
[assembly: AssemblyTitle("Filtration.LootExplosionStudio")]
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("Microsoft")]
|
||||||
[assembly: AssemblyProduct("Filtration.ItemFilterPreview.Data")]
|
[assembly: AssemblyProduct("Filtration.LootExplosionStudio")]
|
||||||
[assembly: AssemblyCopyright("Copyright © 2016")]
|
[assembly: AssemblyCopyright("Copyright © Microsoft 2015")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
[assembly: Guid("855b38cc-eef2-471d-bbbc-eb3e2ff3d387")]
|
[assembly: Guid("b33dec95-6eec-4e14-81d5-3d8ce0db77d1")]
|
||||||
|
|
||||||
// Version information for an assembly consists of the following four values:
|
// Version information for an assembly consists of the following four values:
|
||||||
//
|
//
|
||||||
|
@ -34,3 +34,6 @@ using System.Runtime.InteropServices;
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("1.0.0.0")]
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
|
|
||||||
|
[assembly: InternalsVisibleTo("Filtration.LootExplosionStudio.Tests")]
|
||||||
|
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
|
|
@ -0,0 +1,37 @@
|
||||||
|
using System.Linq;
|
||||||
|
using Filtration.ObjectModel;
|
||||||
|
using Filtration.ObjectModel.BlockItemBaseTypes;
|
||||||
|
using Filtration.ObjectModel.LootExplosionStudio;
|
||||||
|
|
||||||
|
namespace Filtration.LootExplosionStudio.Services
|
||||||
|
{
|
||||||
|
internal interface IItemFilterBlockFinderService
|
||||||
|
{
|
||||||
|
ItemFilterBlock FindBlockForLootItem(LootItem lootItem, ItemFilterScript script);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class ItemFilterBlockFinderService : IItemFilterBlockFinderService
|
||||||
|
{
|
||||||
|
public ItemFilterBlock FindBlockForLootItem(LootItem lootItem, ItemFilterScript script)
|
||||||
|
{
|
||||||
|
return script.ItemFilterBlocks.FirstOrDefault(block => BlockMatchesLootItem(lootItem, block));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool BlockMatchesLootItem(LootItem lootItem, ItemFilterBlock block)
|
||||||
|
{
|
||||||
|
if (!block.BlockItems.OfType<StringListBlockItem>().All(blockItem => blockItem.MatchesLootItem(lootItem)))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
!block.BlockItems.OfType<NumericFilterPredicateBlockItem>()
|
||||||
|
.All(blockItem => blockItem.MatchesLootItem(lootItem)))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,80 @@
|
||||||
|
using System.Linq;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using Filtration.ObjectModel;
|
||||||
|
using Filtration.ObjectModel.BlockItemTypes;
|
||||||
|
using Filtration.ObjectModel.Enums;
|
||||||
|
using Filtration.ObjectModel.LootExplosionStudio;
|
||||||
|
|
||||||
|
namespace Filtration.LootExplosionStudio.Services
|
||||||
|
{
|
||||||
|
internal interface ILootItemAppearanceService
|
||||||
|
{
|
||||||
|
void ProcessLootItemAgainstFilterScript(LootItem lootItem, ItemFilterScript script);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class LootItemAppearanceService : ILootItemAppearanceService
|
||||||
|
{
|
||||||
|
private readonly IItemFilterBlockFinderService _blockFinderService;
|
||||||
|
|
||||||
|
public LootItemAppearanceService(IItemFilterBlockFinderService blockFinderService)
|
||||||
|
{
|
||||||
|
_blockFinderService = blockFinderService;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ProcessLootItemAgainstFilterScript(LootItem lootItem, ItemFilterScript script)
|
||||||
|
{
|
||||||
|
var matchedBlock = _blockFinderService.FindBlockForLootItem(lootItem, script);
|
||||||
|
if (matchedBlock == null)
|
||||||
|
{
|
||||||
|
lootItem.TextColor = GetDefaultTextColorForRarity(lootItem.Rarity);
|
||||||
|
lootItem.BackgroundColor = DefaultLootItemAppearanceConstants.BackgroundColor;
|
||||||
|
lootItem.BorderColor = DefaultLootItemAppearanceConstants.BorderColor;
|
||||||
|
lootItem.FontSize = 35;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
lootItem.TextColor = matchedBlock.HasBlockItemOfType<TextColorBlockItem>()
|
||||||
|
? matchedBlock.BlockItems.OfType<TextColorBlockItem>().First().Color
|
||||||
|
: GetDefaultTextColorForRarity(lootItem.Rarity);
|
||||||
|
|
||||||
|
lootItem.BackgroundColor = matchedBlock.HasBlockItemOfType<BackgroundColorBlockItem>()
|
||||||
|
? matchedBlock.BlockItems.OfType<BackgroundColorBlockItem>().First().Color
|
||||||
|
: DefaultLootItemAppearanceConstants.BackgroundColor;
|
||||||
|
|
||||||
|
lootItem.BorderColor = matchedBlock.HasBlockItemOfType<BorderColorBlockItem>()
|
||||||
|
? matchedBlock.BlockItems.OfType<BorderColorBlockItem>().First().Color
|
||||||
|
: DefaultLootItemAppearanceConstants.BorderColor;
|
||||||
|
|
||||||
|
lootItem.FontSize = matchedBlock.HasBlockItemOfType<FontSizeBlockItem>()
|
||||||
|
? matchedBlock.BlockItems.OfType<FontSizeBlockItem>().First().Value
|
||||||
|
: 35;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Color GetDefaultTextColorForRarity(ItemRarity rarity)
|
||||||
|
{
|
||||||
|
switch (rarity)
|
||||||
|
{
|
||||||
|
case ItemRarity.Normal:
|
||||||
|
{
|
||||||
|
return DefaultLootItemAppearanceConstants.NormalTextColor;
|
||||||
|
}
|
||||||
|
case ItemRarity.Magic:
|
||||||
|
{
|
||||||
|
return DefaultLootItemAppearanceConstants.MagicTextColor;
|
||||||
|
}
|
||||||
|
case ItemRarity.Rare:
|
||||||
|
{
|
||||||
|
return DefaultLootItemAppearanceConstants.RareTextColor;
|
||||||
|
}
|
||||||
|
case ItemRarity.Unique:
|
||||||
|
{
|
||||||
|
return DefaultLootItemAppearanceConstants.UniqueTextColor;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
return DefaultLootItemAppearanceConstants.NormalTextColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
using Filtration.ObjectModel;
|
||||||
|
using Filtration.ObjectModel.LootExplosionStudio;
|
||||||
|
|
||||||
|
namespace Filtration.LootExplosionStudio.Services
|
||||||
|
{
|
||||||
|
internal interface ILootItemCollectionItemFilterCombinerService
|
||||||
|
{
|
||||||
|
void CombineLootItemCollectionWithItemFilterScript(LootItemCollection lootItemCollection,
|
||||||
|
ItemFilterScript script);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class LootItemCollectionItemFilterCombinerService : ILootItemCollectionItemFilterCombinerService
|
||||||
|
{
|
||||||
|
private readonly ILootItemAppearanceService _lootItemAppearanceService;
|
||||||
|
|
||||||
|
public LootItemCollectionItemFilterCombinerService(ILootItemAppearanceService lootItemAppearanceService)
|
||||||
|
{
|
||||||
|
_lootItemAppearanceService = lootItemAppearanceService;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CombineLootItemCollectionWithItemFilterScript(LootItemCollection lootItemCollection,
|
||||||
|
ItemFilterScript script)
|
||||||
|
{
|
||||||
|
foreach (var lootItem in lootItemCollection)
|
||||||
|
{
|
||||||
|
_lootItemAppearanceService.ProcessLootItemAgainstFilterScript(lootItem, script);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
using Castle.MicroKernel.Registration;
|
||||||
|
using Castle.MicroKernel.SubSystems.Configuration;
|
||||||
|
using Castle.Windsor;
|
||||||
|
using Filtration.LootExplosionStudio.Services;
|
||||||
|
|
||||||
|
namespace Filtration.LootExplosionStudio.WindsorInstallers
|
||||||
|
{
|
||||||
|
class ServicesInstaller : IWindsorInstaller
|
||||||
|
{
|
||||||
|
public void Install(IWindsorContainer container, IConfigurationStore store)
|
||||||
|
{
|
||||||
|
container.Register(
|
||||||
|
Component.For<IItemFilterBlockFinderService>()
|
||||||
|
.ImplementedBy<ItemFilterBlockFinderService>()
|
||||||
|
.LifeStyle.Singleton);
|
||||||
|
|
||||||
|
container.Register(
|
||||||
|
Component.For<ILootItemAppearanceService>()
|
||||||
|
.ImplementedBy<LootItemAppearanceService>()
|
||||||
|
.LifeStyle.Singleton);
|
||||||
|
container.Register(
|
||||||
|
Component.For<ILootItemCollectionItemFilterCombinerService>()
|
||||||
|
.ImplementedBy<LootItemCollectionItemFilterCombinerService>()
|
||||||
|
.LifeStyle.Singleton);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="Castle.Core" version="3.3.0" targetFramework="net451" />
|
||||||
|
<package id="Castle.Windsor" version="3.3.0" targetFramework="net451" />
|
||||||
|
</packages>
|
|
@ -0,0 +1,48 @@
|
||||||
|
using System;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using Filtration.ObjectModel.BlockItemBaseTypes;
|
||||||
|
using Filtration.ObjectModel.BlockItemTypes;
|
||||||
|
using Filtration.ObjectModel.LootExplosionStudio;
|
||||||
|
using NUnit.Framework;
|
||||||
|
|
||||||
|
namespace Filtration.ObjectModel.Tests.BlockItemBaseTypes
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class TestBaseTypeBlockItem
|
||||||
|
{
|
||||||
|
[Test]
|
||||||
|
public void MatchesBlockItem_BlankLootItem_ReturnsFalse()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
|
||||||
|
var blockItem = new BaseTypeBlockItem();
|
||||||
|
var testInputLootItem = new LootItem();
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = blockItem.MatchesLootItem(testInputLootItem);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.IsFalse(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void MatchesBlockItem_StringMatch_ReturnsTrue()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var testInputBaseType = "Test Base Type";
|
||||||
|
|
||||||
|
var blockItem = new BaseTypeBlockItem();
|
||||||
|
blockItem.Items.Add("Testblah");
|
||||||
|
blockItem.Items.Add(testInputBaseType);
|
||||||
|
blockItem.Items.Add("Another Base Type");
|
||||||
|
|
||||||
|
var testInputLootItem = new LootItem { BaseType = testInputBaseType};
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = blockItem.MatchesLootItem(testInputLootItem);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.IsTrue(result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Filtration.ObjectModel.BlockItemTypes;
|
||||||
|
using Filtration.ObjectModel.LootExplosionStudio;
|
||||||
|
using NUnit.Framework;
|
||||||
|
|
||||||
|
namespace Filtration.ObjectModel.Tests.BlockItemBaseTypes
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class TestClassBlockItem
|
||||||
|
{
|
||||||
|
[Test]
|
||||||
|
public void MatchesBlockItem_BlankLootItem_ReturnsFalse()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
|
||||||
|
var blockItem = new ClassBlockItem();
|
||||||
|
var testInputLootItem = new LootItem();
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = blockItem.MatchesLootItem(testInputLootItem);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.IsFalse(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void MatchesBlockItem_StringMatch_ReturnsTrue()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var testInputClass = "Test Class";
|
||||||
|
|
||||||
|
var blockItem = new ClassBlockItem();
|
||||||
|
blockItem.Items.Add("Testblah");
|
||||||
|
blockItem.Items.Add(testInputClass);
|
||||||
|
blockItem.Items.Add("Another Base Type");
|
||||||
|
|
||||||
|
var testInputLootItem = new LootItem { Class = testInputClass };
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = blockItem.MatchesLootItem(testInputLootItem);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.IsTrue(result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,101 @@
|
||||||
|
using Filtration.ObjectModel.BlockItemTypes;
|
||||||
|
using Filtration.ObjectModel.Enums;
|
||||||
|
using Filtration.ObjectModel.LootExplosionStudio;
|
||||||
|
using NUnit.Framework;
|
||||||
|
|
||||||
|
namespace Filtration.ObjectModel.Tests.BlockItemBaseTypes
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class TestItemLevelBlockItem
|
||||||
|
{
|
||||||
|
[Test]
|
||||||
|
public void MatchesBlockItem_NoMatch_ReturnsFalse()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
|
||||||
|
var blockItem = new ItemLevelBlockItem(FilterPredicateOperator.GreaterThan, 10);
|
||||||
|
var lootItem = new LootItem {ItemLevel = 5};
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = blockItem.MatchesLootItem(lootItem);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.IsFalse(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void MatchesBlockItem_EqualsMatch_ReturnsTrue()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
|
||||||
|
var blockItem = new ItemLevelBlockItem(FilterPredicateOperator.Equal, 10);
|
||||||
|
var lootItem = new LootItem { ItemLevel = 10 };
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = blockItem.MatchesLootItem(lootItem);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.IsTrue(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void MatchesBlockItem_GreaterThanMatch_ReturnsTrue()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
|
||||||
|
var blockItem = new ItemLevelBlockItem(FilterPredicateOperator.GreaterThan, 10);
|
||||||
|
var lootItem = new LootItem { ItemLevel = 50 };
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = blockItem.MatchesLootItem(lootItem);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.IsTrue(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void MatchesBlockItem_GreaterThanOrEqualMatch_ReturnsTrue()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
|
||||||
|
var blockItem = new ItemLevelBlockItem(FilterPredicateOperator.GreaterThanOrEqual, 10);
|
||||||
|
var lootItem = new LootItem { ItemLevel = 50 };
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = blockItem.MatchesLootItem(lootItem);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.IsTrue(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void MatchesBlockItem_LessThan_ReturnsTrue()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
|
||||||
|
var blockItem = new ItemLevelBlockItem(FilterPredicateOperator.LessThan, 10);
|
||||||
|
var lootItem = new LootItem { ItemLevel = 1 };
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = blockItem.MatchesLootItem(lootItem);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.IsTrue(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void MatchesBlockItem_LessThanOrEqual_ReturnsTrue()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
|
||||||
|
var blockItem = new ItemLevelBlockItem(FilterPredicateOperator.LessThanOrEqual, 10);
|
||||||
|
var lootItem = new LootItem { ItemLevel = 1 };
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = blockItem.MatchesLootItem(lootItem);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.IsTrue(result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,92 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Sockets;
|
||||||
|
using Filtration.ObjectModel.BlockItemTypes;
|
||||||
|
using Filtration.ObjectModel.Enums;
|
||||||
|
using Filtration.ObjectModel.LootExplosionStudio;
|
||||||
|
using NUnit.Framework;
|
||||||
|
|
||||||
|
namespace Filtration.ObjectModel.Tests.BlockItemBaseTypes
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class TestSocketGroupBlockItem
|
||||||
|
{
|
||||||
|
[Test]
|
||||||
|
public void MatchesBlockItem_BlankLootItem_ReturnsFalse()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
|
||||||
|
var blockItem = new SocketGroupBlockItem();
|
||||||
|
var testInputLootItem = new LootItem();
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = blockItem.MatchesLootItem(testInputLootItem);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.IsFalse(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void MatchesBlockItem_SocketsMatch_ReturnsTrue()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var testInputSocketGroups = new List<SocketGroup>();
|
||||||
|
var testInputSocketGroup1 = new SocketGroup();
|
||||||
|
var testInputSocketGroup2 = new SocketGroup();
|
||||||
|
testInputSocketGroup1.Sockets = new List<SocketColor> {SocketColor.Blue, SocketColor.Red};
|
||||||
|
testInputSocketGroup2.Sockets = new List<SocketColor>
|
||||||
|
{
|
||||||
|
SocketColor.Blue,
|
||||||
|
SocketColor.Blue,
|
||||||
|
SocketColor.Blue,
|
||||||
|
SocketColor.Red
|
||||||
|
};
|
||||||
|
|
||||||
|
testInputSocketGroups.Add(testInputSocketGroup1);
|
||||||
|
testInputSocketGroups.Add(testInputSocketGroup2);
|
||||||
|
|
||||||
|
var blockItem = new SocketGroupBlockItem();
|
||||||
|
blockItem.Items.Add("RRG");
|
||||||
|
blockItem.Items.Add("BRB");
|
||||||
|
|
||||||
|
var testInputLootItem = new LootItem {SocketGroups = testInputSocketGroups};
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = blockItem.MatchesLootItem(testInputLootItem);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.IsTrue(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void MatchesBlockItem_SocketsAlmostMatch_ReturnsFalse()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var testInputSocketGroups = new List<SocketGroup>();
|
||||||
|
var testInputSocketGroup1 = new SocketGroup();
|
||||||
|
var testInputSocketGroup2 = new SocketGroup();
|
||||||
|
testInputSocketGroup1.Sockets = new List<SocketColor> { SocketColor.Blue, SocketColor.Red };
|
||||||
|
testInputSocketGroup2.Sockets = new List<SocketColor>
|
||||||
|
{
|
||||||
|
SocketColor.Blue,
|
||||||
|
SocketColor.Blue,
|
||||||
|
SocketColor.Blue,
|
||||||
|
SocketColor.Red,
|
||||||
|
SocketColor.Green
|
||||||
|
};
|
||||||
|
|
||||||
|
testInputSocketGroups.Add(testInputSocketGroup1);
|
||||||
|
testInputSocketGroups.Add(testInputSocketGroup2);
|
||||||
|
|
||||||
|
var blockItem = new SocketGroupBlockItem();
|
||||||
|
blockItem.Items.Add("BGBRWB");
|
||||||
|
|
||||||
|
var testInputLootItem = new LootItem { SocketGroups = testInputSocketGroups };
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = blockItem.MatchesLootItem(testInputLootItem);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.IsFalse(result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,11 +9,8 @@
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>Filtration.ObjectModel.Tests</RootNamespace>
|
<RootNamespace>Filtration.ObjectModel.Tests</RootNamespace>
|
||||||
<AssemblyName>Filtration.ObjectModel.Tests</AssemblyName>
|
<AssemblyName>Filtration.ObjectModel.Tests</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<TargetFrameworkProfile />
|
|
||||||
<NuGetPackageImportStamp>
|
|
||||||
</NuGetPackageImportStamp>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
@ -33,9 +30,14 @@
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Reference Include="Moq">
|
||||||
|
<HintPath>..\packages\Moq.4.2.1506.2016\lib\net40\Moq.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="nunit.framework">
|
||||||
|
<HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="PresentationCore" />
|
<Reference Include="PresentationCore" />
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Configuration" />
|
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.Xml.Linq" />
|
<Reference Include="System.Xml.Linq" />
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
@ -44,6 +46,10 @@
|
||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Compile Include="BlockItemBaseTypes\TestBaseTypeBlockItem.cs" />
|
||||||
|
<Compile Include="BlockItemBaseTypes\TestClassBlockItem.cs" />
|
||||||
|
<Compile Include="BlockItemBaseTypes\TestItemLevelBlockItem.cs" />
|
||||||
|
<Compile Include="BlockItemBaseTypes\TestSocketGroupBlockItem.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="TestItemFilterBlock.cs" />
|
<Compile Include="TestItemFilterBlock.cs" />
|
||||||
<Compile Include="TestItemFilterBlockGroup.cs" />
|
<Compile Include="TestItemFilterBlockGroup.cs" />
|
||||||
|
@ -57,28 +63,9 @@
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="app.config" />
|
<None Include="packages.config" />
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="Castle.Core">
|
|
||||||
<Version>4.4.0</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="Moq">
|
|
||||||
<Version>4.10.1</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="NUnit">
|
|
||||||
<Version>3.11.0</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="System.Threading.Tasks.Extensions">
|
|
||||||
<Version>4.5.2</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="System.ValueTuple">
|
|
||||||
<Version>4.5.0</Version>
|
|
||||||
</PackageReference>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<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.
|
||||||
|
|
|
@ -6,6 +6,23 @@ namespace Filtration.ObjectModel.Tests
|
||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class TestItemFilterBlock
|
public class TestItemFilterBlock
|
||||||
{
|
{
|
||||||
|
[Test]
|
||||||
|
public void ItemFilterBlock_BlockCount_ReturnsCorrectNumber()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var block = new ItemFilterBlock();
|
||||||
|
block.BlockItems.Add(new ItemLevelBlockItem());
|
||||||
|
block.BlockItems.Add(new ItemLevelBlockItem());
|
||||||
|
block.BlockItems.Add(new ItemLevelBlockItem());
|
||||||
|
block.BlockItems.Add(new ItemLevelBlockItem());
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var count = block.BlockCount(typeof (ItemLevelBlockItem));
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(4, count);
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void ItemFilterBlock_AddBlockItemAllowed_LessThanMaximum_ReturnsTrue()
|
public void ItemFilterBlock_AddBlockItemAllowed_LessThanMaximum_ReturnsTrue()
|
||||||
{
|
{
|
||||||
|
|
|
@ -9,7 +9,7 @@ namespace Filtration.ObjectModel.Tests
|
||||||
public void ToString_ReturnsFullBlockHierarchy()
|
public void ToString_ReturnsFullBlockHierarchy()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
const string expectedResult = "Child 1 Block Group - Child 2 Block Group";
|
const string ExpectedResult = "Child 1 Block Group - Child 2 Block Group";
|
||||||
|
|
||||||
var rootBlockGroup = new ItemFilterBlockGroup("Root Block Group", null);
|
var rootBlockGroup = new ItemFilterBlockGroup("Root Block Group", null);
|
||||||
var child1BlockGroup = new ItemFilterBlockGroup("Child 1 Block Group", rootBlockGroup);
|
var child1BlockGroup = new ItemFilterBlockGroup("Child 1 Block Group", rootBlockGroup);
|
||||||
|
@ -19,14 +19,14 @@ namespace Filtration.ObjectModel.Tests
|
||||||
var result = child2BlockGroup.ToString();
|
var result = child2BlockGroup.ToString();
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.AreEqual(expectedResult, result);
|
Assert.AreEqual(ExpectedResult, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void ToString_AddsTildeForAdvancedBlock()
|
public void ToString_AddsTildeForAdvancedBlock()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
const string expectedResult = "~Child 1 Block Group - Child 2 Block Group";
|
const string ExpectedResult = "~Child 1 Block Group - Child 2 Block Group";
|
||||||
|
|
||||||
var rootBlockGroup = new ItemFilterBlockGroup("Root Block Group", null);
|
var rootBlockGroup = new ItemFilterBlockGroup("Root Block Group", null);
|
||||||
var child1BlockGroup = new ItemFilterBlockGroup("Child 1 Block Group", rootBlockGroup, true);
|
var child1BlockGroup = new ItemFilterBlockGroup("Child 1 Block Group", rootBlockGroup, true);
|
||||||
|
@ -36,7 +36,7 @@ namespace Filtration.ObjectModel.Tests
|
||||||
var result = child2BlockGroup.ToString();
|
var result = child2BlockGroup.ToString();
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.AreEqual(expectedResult, result);
|
Assert.AreEqual(ExpectedResult, result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,27 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<configuration>
|
|
||||||
<runtime>
|
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="Castle.Core" publicKeyToken="407dd0808d44fbdc" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<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" />
|
|
||||||
</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.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" />
|
|
||||||
</dependentAssembly>
|
|
||||||
</assemblyBinding>
|
|
||||||
</runtime>
|
|
||||||
</configuration>
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="Moq" version="4.2.1506.2016" targetFramework="net451" />
|
||||||
|
<package id="NUnit" version="2.6.4" targetFramework="net451" />
|
||||||
|
</packages>
|
|
@ -1,10 +1,11 @@
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using Filtration.ObjectModel.Enums;
|
using Filtration.ObjectModel.Enums;
|
||||||
using Filtration.ObjectModel.Extensions;
|
using Filtration.ObjectModel.Extensions;
|
||||||
|
using Filtration.ObjectModel.LootExplosionStudio;
|
||||||
|
|
||||||
namespace Filtration.ObjectModel.BlockItemBaseTypes
|
namespace Filtration.ObjectModel.BlockItemBaseTypes
|
||||||
{
|
{
|
||||||
public sealed class ActionBlockItem : BlockItemBase
|
public class ActionBlockItem : BlockItemBase
|
||||||
{
|
{
|
||||||
private BlockAction _action;
|
private BlockAction _action;
|
||||||
|
|
||||||
|
@ -15,33 +16,65 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
|
||||||
|
|
||||||
public BlockAction Action
|
public BlockAction Action
|
||||||
{
|
{
|
||||||
get => _action;
|
get { return _action; }
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_action = value;
|
_action = value;
|
||||||
IsDirty = true;
|
|
||||||
OnPropertyChanged();
|
OnPropertyChanged();
|
||||||
OnPropertyChanged(nameof(SummaryText));
|
OnPropertyChanged("SummaryText");
|
||||||
OnPropertyChanged(nameof(SummaryBackgroundColor));
|
OnPropertyChanged("SummaryBackgroundColor");
|
||||||
OnPropertyChanged(nameof(SummaryTextColor));
|
OnPropertyChanged("SummaryTextColor");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string OutputText => Action.GetAttributeDescription();
|
public override string OutputText
|
||||||
|
{
|
||||||
|
get { return Action.GetAttributeDescription(); }
|
||||||
|
}
|
||||||
|
|
||||||
public override string PrefixText => string.Empty;
|
public override string PrefixText
|
||||||
|
{
|
||||||
|
get { return string.Empty; }
|
||||||
|
}
|
||||||
|
|
||||||
public override int MaximumAllowed => 1;
|
public override int MaximumAllowed
|
||||||
|
{
|
||||||
|
get { return 1; }
|
||||||
|
}
|
||||||
|
|
||||||
public override string DisplayHeading => "Action";
|
public override string DisplayHeading
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return "Action";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public override string SummaryText => Action == BlockAction.Show ? "Show" : "Hide";
|
public override string SummaryText
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Action == BlockAction.Show ? "Show" : "Hide";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public override Color SummaryBackgroundColor => Action == BlockAction.Show ? Colors.LimeGreen : Colors.OrangeRed;
|
public override Color SummaryBackgroundColor
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Action == BlockAction.Show ? Colors.LimeGreen : Colors.OrangeRed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public override Color SummaryTextColor => Action == BlockAction.Show ? Colors.Black : Colors.White;
|
public override Color SummaryTextColor
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Action == BlockAction.Show ? Colors.Black : Colors.White;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public override BlockItemOrdering SortOrder => BlockItemOrdering.Action;
|
public override int SortOrder { get { return 0; } }
|
||||||
|
|
||||||
public void ToggleAction()
|
public void ToggleAction()
|
||||||
{
|
{
|
||||||
|
|
|
@ -2,14 +2,11 @@
|
||||||
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
|
||||||
{
|
{
|
||||||
public abstract class BlockItemBase : IItemFilterBlockItem
|
public abstract class BlockItemBase : IItemFilterBlockItem
|
||||||
{
|
{
|
||||||
private bool _isDirty;
|
|
||||||
|
|
||||||
public abstract string PrefixText { get; }
|
public abstract string PrefixText { get; }
|
||||||
public abstract string OutputText { get; }
|
public abstract string OutputText { get; }
|
||||||
public abstract int MaximumAllowed { get; }
|
public abstract int MaximumAllowed { get; }
|
||||||
|
@ -17,18 +14,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 BlockItemOrdering SortOrder { get; }
|
public abstract int SortOrder { get; }
|
||||||
public string Comment { get; set; }
|
|
||||||
|
|
||||||
public bool IsDirty
|
|
||||||
{
|
|
||||||
get { return _isDirty; }
|
|
||||||
protected set
|
|
||||||
{
|
|
||||||
_isDirty = value;
|
|
||||||
OnPropertyChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public event PropertyChangedEventHandler PropertyChanged;
|
public event PropertyChangedEventHandler PropertyChanged;
|
||||||
|
|
||||||
|
@ -36,7 +22,7 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
|
||||||
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
|
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
|
||||||
{
|
{
|
||||||
var handler = PropertyChanged;
|
var handler = PropertyChanged;
|
||||||
handler?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,38 +0,0 @@
|
||||||
namespace Filtration.ObjectModel.BlockItemBaseTypes
|
|
||||||
{
|
|
||||||
public abstract class BooleanBlockItem : BlockItemBase
|
|
||||||
{
|
|
||||||
private bool _booleanValue;
|
|
||||||
|
|
||||||
protected BooleanBlockItem()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
protected BooleanBlockItem(bool booleanValue)
|
|
||||||
{
|
|
||||||
BooleanValue = booleanValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool BooleanValue
|
|
||||||
{
|
|
||||||
get { return _booleanValue; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
_booleanValue = value;
|
|
||||||
IsDirty = true;
|
|
||||||
OnPropertyChanged();
|
|
||||||
OnPropertyChanged(nameof(SummaryText));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string OutputText => PrefixText + " " + BooleanValue;
|
|
||||||
public override string SummaryText => DisplayHeading + " = " + BooleanValue;
|
|
||||||
public override int MaximumAllowed => 1;
|
|
||||||
|
|
||||||
public void ToggleValue()
|
|
||||||
{
|
|
||||||
BooleanValue = !BooleanValue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,10 +1,11 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
|
using Filtration.ObjectModel.LootExplosionStudio;
|
||||||
using Filtration.ObjectModel.ThemeEditor;
|
using Filtration.ObjectModel.ThemeEditor;
|
||||||
|
|
||||||
namespace Filtration.ObjectModel.BlockItemBaseTypes
|
namespace Filtration.ObjectModel.BlockItemBaseTypes
|
||||||
{
|
{
|
||||||
public abstract class ColorBlockItem : BlockItemBase, IAudioVisualBlockItem, IBlockItemWithTheme
|
public abstract class ColorBlockItem : BlockItemBase, IAudioVisualBlockItem
|
||||||
{
|
{
|
||||||
private Color _color;
|
private Color _color;
|
||||||
private ThemeComponent _themeComponent;
|
private ThemeComponent _themeComponent;
|
||||||
|
@ -18,11 +19,20 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
|
||||||
Color = color;
|
Color = color;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string OutputText => PrefixText + " " + +Color.R + " " + Color.G + " "
|
public override string OutputText
|
||||||
+ Color.B + (Color.A != 240 ? " " + Color.A : string.Empty) +
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return PrefixText + " " + +Color.R + " " + Color.G + " "
|
||||||
|
+ Color.B + (Color.A < 255 ? " " + Color.A : string.Empty) +
|
||||||
(ThemeComponent != null ? " # " + ThemeComponent.ComponentName : string.Empty);
|
(ThemeComponent != null ? " # " + ThemeComponent.ComponentName : string.Empty);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public override string SummaryText => string.Empty;
|
public override string SummaryText
|
||||||
|
{
|
||||||
|
get { return string.Empty; }
|
||||||
|
}
|
||||||
|
|
||||||
public ThemeComponent ThemeComponent
|
public ThemeComponent ThemeComponent
|
||||||
{
|
{
|
||||||
|
@ -47,8 +57,8 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Color SummaryBackgroundColor => Colors.Transparent;
|
public override Color SummaryBackgroundColor { get { return Colors.Transparent; } }
|
||||||
public override Color SummaryTextColor => Colors.Transparent;
|
public override Color SummaryTextColor { get { return Colors.Transparent; } }
|
||||||
|
|
||||||
public Color Color
|
public Color Color
|
||||||
{
|
{
|
||||||
|
@ -56,14 +66,13 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_color = value;
|
_color = value;
|
||||||
IsDirty = true;
|
|
||||||
OnPropertyChanged();
|
OnPropertyChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnThemeComponentUpdated(object sender, EventArgs e)
|
private void OnThemeComponentUpdated(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Color = ((ColorThemeComponent) sender).Color;
|
Color = ((ThemeComponent) sender).Color;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnThemeComponentDeleted(object sender, EventArgs e)
|
private void OnThemeComponentDeleted(object sender, EventArgs e)
|
||||||
|
|
|
@ -1,53 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Windows.Media;
|
|
||||||
using Filtration.ObjectModel.ThemeEditor;
|
|
||||||
|
|
||||||
namespace Filtration.ObjectModel.BlockItemBaseTypes
|
|
||||||
{
|
|
||||||
public abstract class ColorBooleanBlockItem : BlockItemBase, IAudioVisualBlockItem
|
|
||||||
{
|
|
||||||
private Color _color;
|
|
||||||
private bool _booleanValue;
|
|
||||||
|
|
||||||
protected ColorBooleanBlockItem()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
protected ColorBooleanBlockItem(Color color, bool booleanValue)
|
|
||||||
{
|
|
||||||
Color = color;
|
|
||||||
BooleanValue = booleanValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string OutputText => PrefixText + " " + +Color.R + " " + Color.G + " "
|
|
||||||
+ Color.B + (Color.A < 255 ? " " + Color.A : string.Empty) +
|
|
||||||
(BooleanValue ? " True" : " False");
|
|
||||||
|
|
||||||
public override string SummaryText => string.Empty;
|
|
||||||
|
|
||||||
public override Color SummaryBackgroundColor => Colors.Transparent;
|
|
||||||
public override Color SummaryTextColor => Colors.Transparent;
|
|
||||||
|
|
||||||
public Color Color
|
|
||||||
{
|
|
||||||
get { return _color; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
_color = value;
|
|
||||||
IsDirty = true;
|
|
||||||
OnPropertyChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool BooleanValue
|
|
||||||
{
|
|
||||||
get { return _booleanValue; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
_booleanValue = value;
|
|
||||||
IsDirty = true;
|
|
||||||
OnPropertyChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,4 +1,5 @@
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
|
using Filtration.ObjectModel.LootExplosionStudio;
|
||||||
|
|
||||||
namespace Filtration.ObjectModel.BlockItemBaseTypes
|
namespace Filtration.ObjectModel.BlockItemBaseTypes
|
||||||
{
|
{
|
||||||
|
@ -17,11 +18,14 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
|
||||||
SecondValue = secondValue;
|
SecondValue = secondValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string OutputText => PrefixText + " " + Value + " " + SecondValue;
|
public override string OutputText
|
||||||
|
{
|
||||||
|
get { return PrefixText + " " + Value + " " + SecondValue; }
|
||||||
|
}
|
||||||
|
|
||||||
public override string SummaryText => string.Empty;
|
public override string SummaryText { get { return string.Empty; } }
|
||||||
public override Color SummaryBackgroundColor => Colors.Transparent;
|
public override Color SummaryBackgroundColor { get { return Colors.Transparent; } }
|
||||||
public override Color SummaryTextColor => Colors.Transparent;
|
public override Color SummaryTextColor { get { return Colors.Transparent; } }
|
||||||
|
|
||||||
public int Value
|
public int Value
|
||||||
{
|
{
|
||||||
|
@ -29,7 +33,6 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_value = value;
|
_value = value;
|
||||||
IsDirty = true;
|
|
||||||
OnPropertyChanged();
|
OnPropertyChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,7 +43,6 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_secondValue = value;
|
_secondValue = value;
|
||||||
IsDirty = true;
|
|
||||||
OnPropertyChanged();
|
OnPropertyChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,90 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Windows.Media;
|
|
||||||
using Filtration.ObjectModel.Enums;
|
|
||||||
using Filtration.ObjectModel.Extensions;
|
|
||||||
using Filtration.ObjectModel.ThemeEditor;
|
|
||||||
|
|
||||||
namespace Filtration.ObjectModel.BlockItemBaseTypes
|
|
||||||
{
|
|
||||||
public abstract class EffectColorBlockItem : BlockItemBase, IAudioVisualBlockItem, IBlockItemWithTheme
|
|
||||||
{
|
|
||||||
private EffectColor _color;
|
|
||||||
private bool _temporary;
|
|
||||||
private ThemeComponent _themeComponent;
|
|
||||||
|
|
||||||
protected EffectColorBlockItem()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
protected EffectColorBlockItem(EffectColor color, bool temporary)
|
|
||||||
{
|
|
||||||
Color = color;
|
|
||||||
Temporary = temporary;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string OutputText => PrefixText + " " + Color.GetAttributeDescription() +
|
|
||||||
(Temporary ? " " + "Temp" : string.Empty) +
|
|
||||||
(ThemeComponent != null ? " # " + ThemeComponent.ComponentName : string.Empty);
|
|
||||||
|
|
||||||
public override string SummaryText => string.Empty;
|
|
||||||
|
|
||||||
public ThemeComponent ThemeComponent
|
|
||||||
{
|
|
||||||
get { return _themeComponent; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (_themeComponent == value) { return; }
|
|
||||||
|
|
||||||
if (_themeComponent != null)
|
|
||||||
{
|
|
||||||
_themeComponent.ThemeComponentUpdated -= OnThemeComponentUpdated;
|
|
||||||
_themeComponent.ThemeComponentDeleted -= OnThemeComponentDeleted;
|
|
||||||
}
|
|
||||||
if (value != null)
|
|
||||||
{
|
|
||||||
value.ThemeComponentUpdated += OnThemeComponentUpdated;
|
|
||||||
value.ThemeComponentDeleted += OnThemeComponentDeleted;
|
|
||||||
}
|
|
||||||
|
|
||||||
_themeComponent = value;
|
|
||||||
OnPropertyChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override Color SummaryBackgroundColor => Colors.Transparent;
|
|
||||||
public override Color SummaryTextColor => Colors.Transparent;
|
|
||||||
|
|
||||||
public EffectColor Color
|
|
||||||
{
|
|
||||||
get { return _color; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
_color = value;
|
|
||||||
IsDirty = true;
|
|
||||||
OnPropertyChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool Temporary
|
|
||||||
{
|
|
||||||
get { return _temporary; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
_temporary = value;
|
|
||||||
IsDirty = true;
|
|
||||||
OnPropertyChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnThemeComponentUpdated(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Color = ((EffectColorThemeComponent)sender).EffectColor;
|
|
||||||
Temporary = ((EffectColorThemeComponent)sender).Temporary;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnThemeComponentDeleted(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
ThemeComponent = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,103 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Windows.Media;
|
|
||||||
using Filtration.ObjectModel.Enums;
|
|
||||||
using Filtration.ObjectModel.Extensions;
|
|
||||||
using Filtration.ObjectModel.ThemeEditor;
|
|
||||||
|
|
||||||
namespace Filtration.ObjectModel.BlockItemBaseTypes
|
|
||||||
{
|
|
||||||
public abstract class IconBlockItem : BlockItemBase, IAudioVisualBlockItem, IBlockItemWithTheme
|
|
||||||
{
|
|
||||||
private IconSize _size;
|
|
||||||
private IconColor _color;
|
|
||||||
private IconShape _shape;
|
|
||||||
private ThemeComponent _themeComponent;
|
|
||||||
|
|
||||||
protected IconBlockItem()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
protected IconBlockItem(IconSize size, IconColor color, IconShape shape)
|
|
||||||
{
|
|
||||||
Size = size;
|
|
||||||
Color = color;
|
|
||||||
Shape = shape;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string OutputText => PrefixText + " " + (int)Size + " " + Color.GetAttributeDescription() + " " + Shape.GetAttributeDescription() +
|
|
||||||
(ThemeComponent != null ? " # " + ThemeComponent.ComponentName : string.Empty);
|
|
||||||
|
|
||||||
public override string SummaryText => string.Empty;
|
|
||||||
|
|
||||||
public ThemeComponent ThemeComponent
|
|
||||||
{
|
|
||||||
get { return _themeComponent; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (_themeComponent == value) { return; }
|
|
||||||
|
|
||||||
if (_themeComponent != null)
|
|
||||||
{
|
|
||||||
_themeComponent.ThemeComponentUpdated -= OnThemeComponentUpdated;
|
|
||||||
_themeComponent.ThemeComponentDeleted -= OnThemeComponentDeleted;
|
|
||||||
}
|
|
||||||
if (value != null)
|
|
||||||
{
|
|
||||||
value.ThemeComponentUpdated += OnThemeComponentUpdated;
|
|
||||||
value.ThemeComponentDeleted += OnThemeComponentDeleted;
|
|
||||||
}
|
|
||||||
|
|
||||||
_themeComponent = value;
|
|
||||||
OnPropertyChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override Color SummaryBackgroundColor => Colors.Transparent;
|
|
||||||
public override Color SummaryTextColor => Colors.Transparent;
|
|
||||||
|
|
||||||
public IconSize Size
|
|
||||||
{
|
|
||||||
get { return _size; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
_size = value;
|
|
||||||
IsDirty = true;
|
|
||||||
OnPropertyChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public IconColor Color
|
|
||||||
{
|
|
||||||
get { return _color; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
_color = value;
|
|
||||||
IsDirty = true;
|
|
||||||
OnPropertyChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public IconShape Shape
|
|
||||||
{
|
|
||||||
get { return _shape; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
_shape = value;
|
|
||||||
IsDirty = true;
|
|
||||||
OnPropertyChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnThemeComponentUpdated(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Size = ((IconThemeComponent)sender).IconSize;
|
|
||||||
Color = ((IconThemeComponent)sender).IconColor;
|
|
||||||
Shape = ((IconThemeComponent)sender).IconShape;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnThemeComponentDeleted(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
ThemeComponent = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,13 +1,11 @@
|
||||||
using System;
|
using System.Windows.Media;
|
||||||
using System.Windows.Media;
|
using Filtration.ObjectModel.LootExplosionStudio;
|
||||||
using Filtration.ObjectModel.ThemeEditor;
|
|
||||||
|
|
||||||
namespace Filtration.ObjectModel.BlockItemBaseTypes
|
namespace Filtration.ObjectModel.BlockItemBaseTypes
|
||||||
{
|
{
|
||||||
public abstract class IntegerBlockItem : BlockItemBase, IAudioVisualBlockItem, IBlockItemWithTheme
|
public abstract class IntegerBlockItem : BlockItemBase, IAudioVisualBlockItem
|
||||||
{
|
{
|
||||||
private int _value;
|
private int _value;
|
||||||
private ThemeComponent _themeComponent;
|
|
||||||
|
|
||||||
protected IntegerBlockItem()
|
protected IntegerBlockItem()
|
||||||
{
|
{
|
||||||
|
@ -18,57 +16,26 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
|
||||||
Value = value;
|
Value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string OutputText => PrefixText + " " + Value + (ThemeComponent != null ? " # " + ThemeComponent.ComponentName : string.Empty);
|
public override string OutputText
|
||||||
|
{
|
||||||
|
get { return PrefixText + " " + Value; }
|
||||||
|
}
|
||||||
|
|
||||||
public override string SummaryText => string.Empty;
|
public override string SummaryText { get { return string.Empty; } }
|
||||||
public override Color SummaryBackgroundColor => Colors.Transparent;
|
public override Color SummaryBackgroundColor { get { return Colors.Transparent; } }
|
||||||
public override Color SummaryTextColor => Colors.Transparent;
|
public override Color SummaryTextColor { get { return Colors.Transparent; } }
|
||||||
|
|
||||||
public abstract int Minimum { get; }
|
public abstract int Minimum { get; }
|
||||||
public abstract int Maximum { get; }
|
public abstract int Maximum { get; }
|
||||||
|
|
||||||
public ThemeComponent ThemeComponent
|
|
||||||
{
|
|
||||||
get { return _themeComponent; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (_themeComponent == value) { return; }
|
|
||||||
|
|
||||||
if (_themeComponent != null)
|
|
||||||
{
|
|
||||||
_themeComponent.ThemeComponentUpdated -= OnThemeComponentUpdated;
|
|
||||||
_themeComponent.ThemeComponentDeleted -= OnThemeComponentDeleted;
|
|
||||||
}
|
|
||||||
if (value != null)
|
|
||||||
{
|
|
||||||
value.ThemeComponentUpdated += OnThemeComponentUpdated;
|
|
||||||
value.ThemeComponentDeleted += OnThemeComponentDeleted;
|
|
||||||
}
|
|
||||||
|
|
||||||
_themeComponent = value;
|
|
||||||
OnPropertyChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int Value
|
public int Value
|
||||||
{
|
{
|
||||||
get { return _value; }
|
get { return _value; }
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_value = value;
|
_value = value;
|
||||||
IsDirty = true;
|
|
||||||
OnPropertyChanged();
|
OnPropertyChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnThemeComponentUpdated(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Value = ((IntegerBlockItem)sender).Value;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnThemeComponentDeleted(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
ThemeComponent = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
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; }
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,6 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using Filtration.ObjectModel.Enums;
|
using Filtration.ObjectModel.Enums;
|
||||||
using Filtration.ObjectModel.Extensions;
|
using Filtration.ObjectModel.Extensions;
|
||||||
|
using Filtration.ObjectModel.LootExplosionStudio;
|
||||||
|
|
||||||
namespace Filtration.ObjectModel.BlockItemBaseTypes
|
namespace Filtration.ObjectModel.BlockItemBaseTypes
|
||||||
{
|
{
|
||||||
|
@ -20,8 +21,14 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
|
||||||
FilterPredicate.PropertyChanged += OnFilterPredicateChanged;
|
FilterPredicate.PropertyChanged += OnFilterPredicateChanged;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string OutputText => PrefixText + " " + FilterPredicate.PredicateOperator.GetAttributeDescription() +
|
public override string OutputText
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return PrefixText + " " + FilterPredicate.PredicateOperator.GetAttributeDescription() +
|
||||||
" " + FilterPredicate.PredicateOperand;
|
" " + FilterPredicate.PredicateOperand;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public abstract int Minimum { get; }
|
public abstract int Minimum { get; }
|
||||||
public abstract int Maximum { get; }
|
public abstract int Maximum { get; }
|
||||||
|
@ -38,9 +45,48 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
|
||||||
|
|
||||||
private void OnFilterPredicateChanged(object sender, EventArgs e)
|
private void OnFilterPredicateChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
IsDirty = true;
|
OnPropertyChanged("FilterPredicate");
|
||||||
OnPropertyChanged(nameof(FilterPredicate));
|
OnPropertyChanged("SummaryText");
|
||||||
OnPropertyChanged(nameof(SummaryText));
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public abstract int GetLootItemProperty(LootItem lootItem);
|
||||||
|
|
||||||
|
public virtual bool MatchesLootItem(LootItem lootItem)
|
||||||
|
{
|
||||||
|
var lootItemProperty = GetLootItemProperty(lootItem);
|
||||||
|
var predicateOperand = FilterPredicate.PredicateOperand;
|
||||||
|
|
||||||
|
switch (FilterPredicate.PredicateOperator)
|
||||||
|
{
|
||||||
|
case FilterPredicateOperator.Equal:
|
||||||
|
{
|
||||||
|
return lootItemProperty == predicateOperand;
|
||||||
|
}
|
||||||
|
case FilterPredicateOperator.GreaterThan:
|
||||||
|
{
|
||||||
|
return lootItemProperty > predicateOperand;
|
||||||
|
}
|
||||||
|
case FilterPredicateOperator.GreaterThanOrEqual:
|
||||||
|
{
|
||||||
|
return lootItemProperty >= predicateOperand;
|
||||||
|
}
|
||||||
|
case FilterPredicateOperator.LessThan:
|
||||||
|
{
|
||||||
|
return lootItemProperty < predicateOperand;
|
||||||
|
}
|
||||||
|
case FilterPredicateOperator.LessThanOrEqual:
|
||||||
|
{
|
||||||
|
return lootItemProperty <= predicateOperand;
|
||||||
|
}
|
||||||
|
case FilterPredicateOperator.NotEqual:
|
||||||
|
{
|
||||||
|
return lootItemProperty != predicateOperand;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue