Compare commits
15 Commits
1.0.0-beta
...
1.0.0-beta
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
992bd21570 | ||
|
|
7d8b32b2e7 | ||
|
|
ac904c31ff | ||
|
|
f51fe315ad | ||
|
|
3ce2e12f56 | ||
|
|
43e5b30080 | ||
|
|
bc99339390 | ||
|
|
781faae85d | ||
|
|
c926808878 | ||
|
|
24d9f97717 | ||
|
|
7e4e6fe42e | ||
|
|
0209de3817 | ||
|
|
1e26a2ae3e | ||
|
|
54b72e44b0 | ||
|
|
24df1d7687 |
@@ -7,6 +7,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
|||||||
{
|
{
|
||||||
public BackgroundColorBlockItem()
|
public BackgroundColorBlockItem()
|
||||||
{
|
{
|
||||||
|
Color = new Color { A = 240, R = 0, G = 0, B = 0 };
|
||||||
}
|
}
|
||||||
|
|
||||||
public BackgroundColorBlockItem(Color color) : base(color)
|
public BackgroundColorBlockItem(Color color) : base(color)
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
|||||||
{
|
{
|
||||||
public BorderColorBlockItem()
|
public BorderColorBlockItem()
|
||||||
{
|
{
|
||||||
|
Color = new Color {A = 240, R = 0, G = 0, B = 0};
|
||||||
}
|
}
|
||||||
|
|
||||||
public BorderColorBlockItem(Color color) : base(color)
|
public BorderColorBlockItem(Color color) : base(color)
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using Filtration.ObjectModel.BlockItemBaseTypes;
|
using Filtration.ObjectModel.BlockItemBaseTypes;
|
||||||
|
using Filtration.ObjectModel.Enums;
|
||||||
|
|
||||||
namespace Filtration.ObjectModel.BlockItemTypes
|
namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
{
|
{
|
||||||
@@ -7,6 +8,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
|||||||
{
|
{
|
||||||
public TextColorBlockItem()
|
public TextColorBlockItem()
|
||||||
{
|
{
|
||||||
|
Color = PathOfExileNamedColors.Colors[PathOfExileNamedColor.WhiteItem];
|
||||||
}
|
}
|
||||||
|
|
||||||
public TextColorBlockItem(Color color) : base(color)
|
public TextColorBlockItem(Color color) : base(color)
|
||||||
|
|||||||
@@ -1308,6 +1308,86 @@ namespace Filtration.Parser.Tests.Services
|
|||||||
Assert.AreEqual(ItemRarity.Magic, (ItemRarity)rarityBlockItem.FilterPredicate.PredicateOperand);
|
Assert.AreEqual(ItemRarity.Magic, (ItemRarity)rarityBlockItem.FilterPredicate.PredicateOperand);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TranslateStringToItemFilterBlock_CustomSoundDocumentsFile()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var inputString = @"Show" + Environment.NewLine +
|
||||||
|
"CustomAlertSound \"test.mp3\"";
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(1, result.BlockItems.Count(b => b is CustomSoundBlockItem));
|
||||||
|
var customSoundBlockItem = result.BlockItems.OfType<CustomSoundBlockItem>().First();
|
||||||
|
Assert.AreEqual("test.mp3", customSoundBlockItem.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TranslateStringToItemFilterBlock_CustomSoundDocumentsRelativeFile()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var inputString = @"Show" + Environment.NewLine +
|
||||||
|
"CustomAlertSound \"Sounds\test.mp3\"";
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(1, result.BlockItems.Count(b => b is CustomSoundBlockItem));
|
||||||
|
var customSoundBlockItem = result.BlockItems.OfType<CustomSoundBlockItem>().First();
|
||||||
|
Assert.AreEqual("Sounds\test.mp3", customSoundBlockItem.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TranslateStringToItemFilterBlock_CustomSoundFullBackSlashPath()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var inputString = @"Show" + Environment.NewLine +
|
||||||
|
"CustomAlertSound \"C:\\Sounds\\test.mp3\"";
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(1, result.BlockItems.Count(b => b is CustomSoundBlockItem));
|
||||||
|
var customSoundBlockItem = result.BlockItems.OfType<CustomSoundBlockItem>().First();
|
||||||
|
Assert.AreEqual("C:\\Sounds\\test.mp3", customSoundBlockItem.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TranslateStringToItemFilterBlock_CustomSoundFullForwardSlashPath()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var inputString = @"Show" + Environment.NewLine +
|
||||||
|
"CustomAlertSound \"C:/Sounds/test.mp3\"";
|
||||||
|
|
||||||
|
//Act
|
||||||
|
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(1, result.BlockItems.Count(b => b is CustomSoundBlockItem));
|
||||||
|
var customSoundBlockItem = result.BlockItems.OfType<CustomSoundBlockItem>().First();
|
||||||
|
Assert.AreEqual("C:/Sounds/test.mp3", customSoundBlockItem.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TranslateStringToItemFilterBlock_CustomSoundFullMixedPath()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var inputString = @"Show" + Environment.NewLine +
|
||||||
|
"CustomAlertSound \"C:\\Sounds/test.mp3\"";
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(1, result.BlockItems.Count(b => b is CustomSoundBlockItem));
|
||||||
|
var customSoundBlockItem = result.BlockItems.OfType<CustomSoundBlockItem>().First();
|
||||||
|
Assert.AreEqual("C:\\Sounds/test.mp3", customSoundBlockItem.Value);
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TranslateItemFilterBlockToString_NothingPopulated_ReturnsCorrectString()
|
public void TranslateItemFilterBlockToString_NothingPopulated_ReturnsCorrectString()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -32,8 +32,7 @@ namespace Filtration.Parser.Services
|
|||||||
// Converts a string into an ItemFilterCommentBlock maintaining newlines and spaces but removing # characters
|
// Converts a string into an ItemFilterCommentBlock maintaining newlines and spaces but removing # characters
|
||||||
public IItemFilterCommentBlock TranslateStringToItemFilterCommentBlock(string inputString, IItemFilterScript parentItemFilterScript, string originalString = "")
|
public IItemFilterCommentBlock TranslateStringToItemFilterCommentBlock(string inputString, IItemFilterScript parentItemFilterScript, string originalString = "")
|
||||||
{
|
{
|
||||||
var itemFilterCommentBlock = new ItemFilterCommentBlock(parentItemFilterScript);
|
var itemFilterCommentBlock = new ItemFilterCommentBlock(parentItemFilterScript) {OriginalText = originalString};
|
||||||
itemFilterCommentBlock.OriginalText = originalString;
|
|
||||||
|
|
||||||
foreach (var line in new LineReader(() => new StringReader(inputString)))
|
foreach (var line in new LineReader(() => new StringReader(inputString)))
|
||||||
{
|
{
|
||||||
@@ -217,8 +216,7 @@ namespace Filtration.Parser.Services
|
|||||||
|
|
||||||
var result = Regex.Matches(trimmedLine, @"([\w\s]*)");
|
var result = Regex.Matches(trimmedLine, @"([\w\s]*)");
|
||||||
|
|
||||||
var blockItem = new TextColorBlockItem();
|
var blockItem = new TextColorBlockItem {Color = GetColorFromString(result[0].Groups[1].Value)};
|
||||||
blockItem.Color = GetColorFromString(result[0].Groups[1].Value);
|
|
||||||
block.BlockItems.Add(blockItem);
|
block.BlockItems.Add(blockItem);
|
||||||
themeComponentType = (int)ThemeComponentType.TextColor;
|
themeComponentType = (int)ThemeComponentType.TextColor;
|
||||||
break;
|
break;
|
||||||
@@ -230,8 +228,7 @@ namespace Filtration.Parser.Services
|
|||||||
|
|
||||||
var result = Regex.Matches(trimmedLine, @"([\w\s]*)");
|
var result = Regex.Matches(trimmedLine, @"([\w\s]*)");
|
||||||
|
|
||||||
var blockItem = new BackgroundColorBlockItem();
|
var blockItem = new BackgroundColorBlockItem {Color = GetColorFromString(result[0].Groups[1].Value)};
|
||||||
blockItem.Color = GetColorFromString(result[0].Groups[1].Value);
|
|
||||||
block.BlockItems.Add(blockItem);
|
block.BlockItems.Add(blockItem);
|
||||||
themeComponentType = (int)ThemeComponentType.BackgroundColor;
|
themeComponentType = (int)ThemeComponentType.BackgroundColor;
|
||||||
break;
|
break;
|
||||||
@@ -243,8 +240,7 @@ namespace Filtration.Parser.Services
|
|||||||
|
|
||||||
var result = Regex.Matches(trimmedLine, @"([\w\s]*)");
|
var result = Regex.Matches(trimmedLine, @"([\w\s]*)");
|
||||||
|
|
||||||
var blockItem = new BorderColorBlockItem();
|
var blockItem = new BorderColorBlockItem {Color = GetColorFromString(result[0].Groups[1].Value)};
|
||||||
blockItem.Color = GetColorFromString(result[0].Groups[1].Value);
|
|
||||||
block.BlockItems.Add(blockItem);
|
block.BlockItems.Add(blockItem);
|
||||||
themeComponentType = (int)ThemeComponentType.BorderColor;
|
themeComponentType = (int)ThemeComponentType.BorderColor;
|
||||||
break;
|
break;
|
||||||
@@ -276,16 +272,8 @@ namespace Filtration.Parser.Services
|
|||||||
if (match.Success)
|
if (match.Success)
|
||||||
{
|
{
|
||||||
string firstValue = match.Groups[1].Value;
|
string firstValue = match.Groups[1].Value;
|
||||||
int secondValue;
|
|
||||||
|
|
||||||
if (match.Groups[2].Success)
|
var secondValue = match.Groups[2].Success ? Convert.ToInt16(match.Groups[2].Value) : 79;
|
||||||
{
|
|
||||||
secondValue = Convert.ToInt16(match.Groups[2].Value);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
secondValue = 79;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (lineOption == "PlayAlertSound")
|
if (lineOption == "PlayAlertSound")
|
||||||
{
|
{
|
||||||
@@ -351,15 +339,15 @@ namespace Filtration.Parser.Services
|
|||||||
{
|
{
|
||||||
var blockItemValue = new MapIconBlockItem
|
var blockItemValue = new MapIconBlockItem
|
||||||
{
|
{
|
||||||
Size = (IconSize)Int16.Parse(match.Groups[1].Value),
|
Size = (IconSize)short.Parse(match.Groups[1].Value),
|
||||||
Color = EnumHelper.GetEnumValueFromDescription<IconColor>(match.Groups[2].Value),
|
Color = EnumHelper.GetEnumValueFromDescription<IconColor>(match.Groups[2].Value),
|
||||||
Shape = EnumHelper.GetEnumValueFromDescription<IconShape>(match.Groups[3].Value)
|
Shape = EnumHelper.GetEnumValueFromDescription<IconShape>(match.Groups[3].Value)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.Icon, match.Groups[5].Value.Trim(),
|
||||||
|
blockItemValue.Size, blockItemValue.Color, blockItemValue.Shape);
|
||||||
if(match.Groups[4].Value == "#" && !string.IsNullOrWhiteSpace(match.Groups[5].Value))
|
if(match.Groups[4].Value == "#" && !string.IsNullOrWhiteSpace(match.Groups[5].Value))
|
||||||
{
|
{
|
||||||
ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.Icon, match.Groups[5].Value.Trim(),
|
|
||||||
blockItemValue.Size, blockItemValue.Color, blockItemValue.Shape);
|
|
||||||
blockItemValue.ThemeComponent = themeComponent;
|
blockItemValue.ThemeComponent = themeComponent;
|
||||||
}
|
}
|
||||||
block.BlockItems.Add(blockItemValue);
|
block.BlockItems.Add(blockItemValue);
|
||||||
@@ -394,7 +382,7 @@ namespace Filtration.Parser.Services
|
|||||||
RemoveExistingBlockItemsOfType<SoundBlockItem>(block);
|
RemoveExistingBlockItemsOfType<SoundBlockItem>(block);
|
||||||
RemoveExistingBlockItemsOfType<PositionalSoundBlockItem>(block);
|
RemoveExistingBlockItemsOfType<PositionalSoundBlockItem>(block);
|
||||||
|
|
||||||
var match = Regex.Match(trimmedLine, @"\S+\s+""(\S+)""");
|
var match = Regex.Match(trimmedLine, @"\S+\s+""([^\*\<\>\?|]+)""");
|
||||||
|
|
||||||
if (match.Success)
|
if (match.Success)
|
||||||
{
|
{
|
||||||
@@ -416,8 +404,7 @@ namespace Filtration.Parser.Services
|
|||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(blockComment) && block.BlockItems.Count > 1)
|
if (!string.IsNullOrWhiteSpace(blockComment) && block.BlockItems.Count > 1)
|
||||||
{
|
{
|
||||||
var blockItemWithTheme = block.BlockItems.Last() as IBlockItemWithTheme;
|
if(!(block.BlockItems.Last() is IBlockItemWithTheme blockItemWithTheme))
|
||||||
if(blockItemWithTheme == null)
|
|
||||||
{
|
{
|
||||||
block.BlockItems.Last().Comment = blockComment;
|
block.BlockItems.Last().Comment = blockComment;
|
||||||
}
|
}
|
||||||
@@ -427,11 +414,11 @@ namespace Filtration.Parser.Services
|
|||||||
{
|
{
|
||||||
case ThemeComponentType.AlertSound:
|
case ThemeComponentType.AlertSound:
|
||||||
{
|
{
|
||||||
ThemeComponent themeComponent = null;
|
ThemeComponent themeComponent;
|
||||||
if(blockItemWithTheme is SoundBlockItem)
|
if(blockItemWithTheme is SoundBlockItem item)
|
||||||
{
|
{
|
||||||
themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.AlertSound, blockComment.Trim(),
|
themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.AlertSound, blockComment.Trim(),
|
||||||
((SoundBlockItem)blockItemWithTheme).Value, ((SoundBlockItem)blockItemWithTheme).SecondValue);
|
item.Value, item.SecondValue);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -598,8 +585,7 @@ namespace Filtration.Parser.Services
|
|||||||
{
|
{
|
||||||
var result = Regex.Matches(trimmedLine, @"([\w\s]*)");
|
var result = Regex.Matches(trimmedLine, @"([\w\s]*)");
|
||||||
|
|
||||||
var blockItem = new TextColorBlockItem();
|
var blockItem = new TextColorBlockItem {Color = GetColorFromString(result[0].Groups[1].Value)};
|
||||||
blockItem.Color = GetColorFromString(result[0].Groups[1].Value);
|
|
||||||
if(_masterComponentCollection != null && !string.IsNullOrWhiteSpace(blockComment))
|
if(_masterComponentCollection != null && !string.IsNullOrWhiteSpace(blockComment))
|
||||||
{
|
{
|
||||||
ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.TextColor,
|
ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.TextColor,
|
||||||
@@ -613,8 +599,7 @@ namespace Filtration.Parser.Services
|
|||||||
{
|
{
|
||||||
var result = Regex.Matches(trimmedLine, @"([\w\s]*)");
|
var result = Regex.Matches(trimmedLine, @"([\w\s]*)");
|
||||||
|
|
||||||
var blockItem = new BackgroundColorBlockItem();
|
var blockItem = new BackgroundColorBlockItem {Color = GetColorFromString(result[0].Groups[1].Value)};
|
||||||
blockItem.Color = GetColorFromString(result[0].Groups[1].Value);
|
|
||||||
if(_masterComponentCollection != null && !string.IsNullOrWhiteSpace(blockComment))
|
if(_masterComponentCollection != null && !string.IsNullOrWhiteSpace(blockComment))
|
||||||
{
|
{
|
||||||
ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.BackgroundColor,
|
ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.BackgroundColor,
|
||||||
@@ -628,8 +613,7 @@ namespace Filtration.Parser.Services
|
|||||||
{
|
{
|
||||||
var result = Regex.Matches(trimmedLine, @"([\w\s]*)");
|
var result = Regex.Matches(trimmedLine, @"([\w\s]*)");
|
||||||
|
|
||||||
var blockItem = new BorderColorBlockItem();
|
var blockItem = new BorderColorBlockItem {Color = GetColorFromString(result[0].Groups[1].Value)};
|
||||||
blockItem.Color = GetColorFromString(result[0].Groups[1].Value);
|
|
||||||
if(_masterComponentCollection != null && !string.IsNullOrWhiteSpace(blockComment))
|
if(_masterComponentCollection != null && !string.IsNullOrWhiteSpace(blockComment))
|
||||||
{
|
{
|
||||||
ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.BorderColor,
|
ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.BorderColor,
|
||||||
|
|||||||
@@ -66,7 +66,6 @@
|
|||||||
<Compile Include="Repositories\TestItemFilterScriptRepository.cs" />
|
<Compile Include="Repositories\TestItemFilterScriptRepository.cs" />
|
||||||
<Compile Include="Services\TestHTTPService.cs" />
|
<Compile Include="Services\TestHTTPService.cs" />
|
||||||
<Compile Include="Services\TestItemFilterPersistenceService.cs" />
|
<Compile Include="Services\TestItemFilterPersistenceService.cs" />
|
||||||
<Compile Include="Services\TestStaticDataService.cs" />
|
|
||||||
<Compile Include="Services\TestUpdateService.cs" />
|
<Compile Include="Services\TestUpdateService.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -1,44 +0,0 @@
|
|||||||
using Filtration.Common.Services;
|
|
||||||
using Filtration.Services;
|
|
||||||
using Moq;
|
|
||||||
using NUnit.Framework;
|
|
||||||
|
|
||||||
namespace Filtration.Tests.Services
|
|
||||||
{
|
|
||||||
[TestFixture]
|
|
||||||
public class TestStaticDataService
|
|
||||||
{
|
|
||||||
[Test]
|
|
||||||
public void Constructor_CallsFileSystemService()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
|
|
||||||
var mockFileSystemService = new Mock<IFileSystemService>();
|
|
||||||
mockFileSystemService.Setup(f => f.ReadFileAsString(It.IsAny<string>())).Returns("TestResult").Verifiable();
|
|
||||||
|
|
||||||
var service = new StaticDataService(mockFileSystemService.Object);
|
|
||||||
|
|
||||||
// Act
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
mockFileSystemService.Verify();
|
|
||||||
}
|
|
||||||
|
|
||||||
[Ignore("Integration Test")]
|
|
||||||
[Test]
|
|
||||||
public void Constructor_ReadsFromFileCorrectly()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
|
|
||||||
var fileSystemService = new FileSystemService();
|
|
||||||
|
|
||||||
var service = new StaticDataService(fileSystemService);
|
|
||||||
|
|
||||||
// Act
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
14
Filtration/Enums/UpdateSource.cs
Normal file
14
Filtration/Enums/UpdateSource.cs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Filtration.Enums
|
||||||
|
{
|
||||||
|
internal enum UpdateSource
|
||||||
|
{
|
||||||
|
GitHub,
|
||||||
|
Local
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -203,6 +203,7 @@
|
|||||||
<Compile Include="Converters\HashSignRemovalConverter.cs" />
|
<Compile Include="Converters\HashSignRemovalConverter.cs" />
|
||||||
<Compile Include="Converters\ItemRarityConverter.cs" />
|
<Compile Include="Converters\ItemRarityConverter.cs" />
|
||||||
<Compile Include="Converters\TreeViewMarginConverter.cs" />
|
<Compile Include="Converters\TreeViewMarginConverter.cs" />
|
||||||
|
<Compile Include="Enums\UpdateSource.cs" />
|
||||||
<Compile Include="Models\UpdateData.cs" />
|
<Compile Include="Models\UpdateData.cs" />
|
||||||
<Compile Include="Properties\Annotations.cs" />
|
<Compile Include="Properties\Annotations.cs" />
|
||||||
<Compile Include="Repositories\ItemFilterScriptRepository.cs" />
|
<Compile Include="Repositories\ItemFilterScriptRepository.cs" />
|
||||||
@@ -438,6 +439,7 @@
|
|||||||
<DependentUpon>Settings.settings</DependentUpon>
|
<DependentUpon>Settings.settings</DependentUpon>
|
||||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<EmbeddedResource Include="Resources\ItemMods.txt" />
|
||||||
<Resource Include="Resources\loading_spinner.gif" />
|
<Resource Include="Resources\loading_spinner.gif" />
|
||||||
<EmbeddedResource Include="Properties\Resources.resx">
|
<EmbeddedResource Include="Properties\Resources.resx">
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
@@ -586,8 +588,8 @@
|
|||||||
<Content Include="Resources\AlertSounds\SH22Vaal.mp3">
|
<Content Include="Resources\AlertSounds\SH22Vaal.mp3">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Include="Resources\ItemBaseTypes.txt" />
|
<EmbeddedResource Include="Resources\ItemBaseTypes.txt" />
|
||||||
<Content Include="Resources\ItemClasses.txt" />
|
<EmbeddedResource Include="Resources\ItemClasses.txt" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\Filtration.Common\Filtration.Common.csproj">
|
<ProjectReference Include="..\Filtration.Common\Filtration.Common.csproj">
|
||||||
|
|||||||
@@ -9,7 +9,13 @@
|
|||||||
<description>A Path of Exile loot filter script editor</description>
|
<description>A Path of Exile loot filter script editor</description>
|
||||||
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
||||||
<copyright>Copyright 2018</copyright>
|
<copyright>Copyright 2018</copyright>
|
||||||
<releaseNotes>The release notes for 1.0.0 have not been written yet!</releaseNotes>
|
<releaseNotes>Still no 1.0.0 release notes
|
||||||
|
|
||||||
|
Changes since 1.0.0-beta1:
|
||||||
|
|
||||||
|
* Static data (ItemBaseTypes and ItemClasses) is now correctly loaded from embedded resources instead of the legacy text files in appdata
|
||||||
|
* Updates to static data files
|
||||||
|
* Disabled setting themes for MinimapIcon, PlayEffect and SetFontSize blocks as a temporary fix for issue #68</releaseNotes>
|
||||||
<dependencies />
|
<dependencies />
|
||||||
</metadata>
|
</metadata>
|
||||||
<files>
|
<files>
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ using System.Runtime.CompilerServices;
|
|||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
[assembly: AssemblyVersion("1.0.0")]
|
[assembly: AssemblyVersion("1.0.0")]
|
||||||
[assembly: AssemblyInformationalVersion("1.0.0-beta1")]
|
[assembly: AssemblyInformationalVersion("1.0.0-beta3")]
|
||||||
|
|
||||||
[assembly: InternalsVisibleTo("Filtration.Tests")]
|
[assembly: InternalsVisibleTo("Filtration.Tests")]
|
||||||
[assembly: InternalsVisibleTo("Filtration.ItemFilterPreview.Tests")]
|
[assembly: InternalsVisibleTo("Filtration.ItemFilterPreview.Tests")]
|
||||||
|
|||||||
158
Filtration/Properties/Resources.Designer.cs
generated
158
Filtration/Properties/Resources.Designer.cs
generated
@@ -224,6 +224,164 @@ namespace Filtration.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to A Mother's Parting Gift
|
||||||
|
///Abandoned Wealth
|
||||||
|
///Aberrant Fossil
|
||||||
|
///Abyssal Axe
|
||||||
|
///Abyssal Cry
|
||||||
|
///Abyssal Sceptre
|
||||||
|
///Academy Map
|
||||||
|
///Acid Lakes Map
|
||||||
|
///Added Chaos Damage Support
|
||||||
|
///Added Cold Damage Support
|
||||||
|
///Added Fire Damage Support
|
||||||
|
///Added Lightning Damage Support
|
||||||
|
///Additional Accuracy Support
|
||||||
|
///Aetheric Fossil
|
||||||
|
///Agate Amulet
|
||||||
|
///Albino Rhoa Feather
|
||||||
|
///Alchemy Shard
|
||||||
|
///Alder Spiked Shield
|
||||||
|
///Alira's Amulet
|
||||||
|
///Alleyways Map
|
||||||
|
///Allflame
|
||||||
|
///Alloyed Spiked Shield
|
||||||
|
///Alteration Shard
|
||||||
|
///Amber Amulet
|
||||||
|
///Ambush Boots
|
||||||
|
///Ambush Leaguestone
|
||||||
|
///Ambush Mitts
|
||||||
|
///Ambusher
|
||||||
|
///Amethyst Flask
|
||||||
|
///Amethyst [rest of string was truncated]";.
|
||||||
|
/// </summary>
|
||||||
|
internal static string ItemBaseTypes {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("ItemBaseTypes", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Abyss Jewel
|
||||||
|
///Active Skill Gems
|
||||||
|
///Amulets
|
||||||
|
///Axe
|
||||||
|
///Belts
|
||||||
|
///Body Armours
|
||||||
|
///Boots
|
||||||
|
///Bows
|
||||||
|
///Claws
|
||||||
|
///Currency
|
||||||
|
///Daggers
|
||||||
|
///Delve Socketable Currency
|
||||||
|
///Divination Card
|
||||||
|
///Fishing Rods
|
||||||
|
///Flasks
|
||||||
|
///Gems
|
||||||
|
///Gloves
|
||||||
|
///Helmets
|
||||||
|
///Hybrid Flasks
|
||||||
|
///Incursion Item
|
||||||
|
///Jewel
|
||||||
|
///Labyrinth Item
|
||||||
|
///Labyrinth Map Item
|
||||||
|
///Labyrinth Trinket
|
||||||
|
///Large Relics
|
||||||
|
///Leaguestone
|
||||||
|
///Life Flasks
|
||||||
|
///Mace
|
||||||
|
///Mana Flasks
|
||||||
|
///Map Fragments
|
||||||
|
///Maps
|
||||||
|
///Misc Map Items
|
||||||
|
///One Hand Axes
|
||||||
|
///One Hand Maces
|
||||||
|
///One Hand Swords
|
||||||
|
///Pantheon Soul
|
||||||
|
///Piece
|
||||||
|
///Quest Items
|
||||||
|
///Quivers
|
||||||
|
///Rings
|
||||||
|
///Sceptres
|
||||||
|
///Shields
|
||||||
|
///Stackable Currency
|
||||||
|
///Staves
|
||||||
|
///Support Skill Gems
|
||||||
|
///Sword
|
||||||
|
///T [rest of string was truncated]";.
|
||||||
|
/// </summary>
|
||||||
|
internal static string ItemClasses {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("ItemClasses", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Abbot's
|
||||||
|
///Abhorrent
|
||||||
|
///Acrobat's
|
||||||
|
///Adept's
|
||||||
|
///Agile
|
||||||
|
///Alchemist's
|
||||||
|
///Alluring
|
||||||
|
///Alpine
|
||||||
|
///Ample
|
||||||
|
///Anarchic
|
||||||
|
///Anarchist's
|
||||||
|
///Annealed
|
||||||
|
///Antagonist's
|
||||||
|
///Apprentice's
|
||||||
|
///Aqua
|
||||||
|
///Archmage's
|
||||||
|
///Arcing
|
||||||
|
///Arctic
|
||||||
|
///Armadillo's
|
||||||
|
///Arming
|
||||||
|
///Armoured
|
||||||
|
///Athlete's
|
||||||
|
///Avalanching
|
||||||
|
///Avenger's
|
||||||
|
///Azure
|
||||||
|
///Bandit's
|
||||||
|
///Barbed
|
||||||
|
///Battlemage's
|
||||||
|
///Beating
|
||||||
|
///Beautiful
|
||||||
|
///Beetle's
|
||||||
|
///Beryl
|
||||||
|
///Betrayer's
|
||||||
|
///Bipedal
|
||||||
|
///Biting
|
||||||
|
///Bitter
|
||||||
|
///Blasting
|
||||||
|
///Blazing
|
||||||
|
///Blistering
|
||||||
|
///Bloodthirsty
|
||||||
|
///Blue
|
||||||
|
///Blunt
|
||||||
|
///Blurred
|
||||||
|
///Boggart's
|
||||||
|
///Bolting
|
||||||
|
///Brawler's
|
||||||
|
///Breathtaking
|
||||||
|
///Brinerot
|
||||||
|
///Brutal
|
||||||
|
///Bubbling
|
||||||
|
///Burning
|
||||||
|
///Burnished
|
||||||
|
///Butterfly's
|
||||||
|
///Buttressed
|
||||||
|
///Buzzing
|
||||||
|
///Calming
|
||||||
|
///Capric [rest of string was truncated]";.
|
||||||
|
/// </summary>
|
||||||
|
internal static string ItemMods {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("ItemMods", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
|
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -202,4 +202,13 @@
|
|||||||
<data name="SH22Vaal" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="SH22Vaal" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\AlertSounds\SH22Vaal.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>..\Resources\AlertSounds\SH22Vaal.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ItemBaseTypes" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\ItemBaseTypes.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||||
|
</data>
|
||||||
|
<data name="ItemClasses" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\ItemClasses.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
|
||||||
|
</data>
|
||||||
|
<data name="ItemMods" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\ItemMods.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -11,6 +11,7 @@ Added Cold Damage Support
|
|||||||
Added Fire Damage Support
|
Added Fire Damage Support
|
||||||
Added Lightning Damage Support
|
Added Lightning Damage Support
|
||||||
Additional Accuracy Support
|
Additional Accuracy Support
|
||||||
|
Advanced Traps Support
|
||||||
Aetheric Fossil
|
Aetheric Fossil
|
||||||
Agate Amulet
|
Agate Amulet
|
||||||
Albino Rhoa Feather
|
Albino Rhoa Feather
|
||||||
@@ -64,6 +65,7 @@ Arcane Surge Support
|
|||||||
Arcanist Gloves
|
Arcanist Gloves
|
||||||
Arcanist Slippers
|
Arcanist Slippers
|
||||||
Archon Kite Shield
|
Archon Kite Shield
|
||||||
|
Archon Kite Shield Piece
|
||||||
Arctic Armour
|
Arctic Armour
|
||||||
Arctic Breath
|
Arctic Breath
|
||||||
Arena Map
|
Arena Map
|
||||||
@@ -87,6 +89,7 @@ Atziri's Arsenal
|
|||||||
Audacity
|
Audacity
|
||||||
Auric Mace
|
Auric Mace
|
||||||
Aventail Helmet
|
Aventail Helmet
|
||||||
|
Avian Slippers
|
||||||
Avian Twins Talisman
|
Avian Twins Talisman
|
||||||
Awl
|
Awl
|
||||||
Baleful Gem
|
Baleful Gem
|
||||||
@@ -154,6 +157,7 @@ Bloodlust Support
|
|||||||
Bloodstained Fossil
|
Bloodstained Fossil
|
||||||
Blue Pearl Amulet
|
Blue Pearl Amulet
|
||||||
Blunt Arrow Quiver
|
Blunt Arrow Quiver
|
||||||
|
Blunt Arrow Quiver Piece
|
||||||
Boarding Axe
|
Boarding Axe
|
||||||
Bodyswap
|
Bodyswap
|
||||||
Bog Map
|
Bog Map
|
||||||
@@ -207,7 +211,28 @@ Caldera Map
|
|||||||
Calendar of Fortune
|
Calendar of Fortune
|
||||||
Call to the First Ones
|
Call to the First Ones
|
||||||
Callous Mask
|
Callous Mask
|
||||||
|
Callous Mask Piece
|
||||||
Canyon Map
|
Canyon Map
|
||||||
|
Captured Soul
|
||||||
|
Captured Soul of Arachnoxia
|
||||||
|
Captured Soul of Armala, the Widow
|
||||||
|
Captured Soul of Drek, Apex Hunter
|
||||||
|
Captured Soul of Erebix, Light's Bane
|
||||||
|
Captured Soul of Gorulis, Will-Thief
|
||||||
|
Captured Soul of Jorus, Sky's Edge
|
||||||
|
Captured Soul of Lycius, Midnight's Howl
|
||||||
|
Captured Soul of Mephod, the Earth Scorcher
|
||||||
|
Captured Soul of Nassar, Lion of the Seas
|
||||||
|
Captured Soul of Puruna, the Challenger
|
||||||
|
Captured Soul of Sebbert, Crescent's Point
|
||||||
|
Captured Soul of Shadow of the Vaal
|
||||||
|
Captured Soul of Shock and Horror
|
||||||
|
Captured Soul of Stalker of the Endless Dunes
|
||||||
|
Captured Soul of Suncaller Asha
|
||||||
|
Captured Soul of Terror of the Infinite Drifts
|
||||||
|
Captured Soul of The Forgotten Soldier
|
||||||
|
Captured Soul of Thraxia
|
||||||
|
Captured Soul of Varhesh, Shimmering Aberration
|
||||||
Carcass Map
|
Carcass Map
|
||||||
Cardinal Round Shield
|
Cardinal Round Shield
|
||||||
Carnal Armour
|
Carnal Armour
|
||||||
@@ -246,11 +271,11 @@ Chainmail Vest
|
|||||||
Champion Kite Shield
|
Champion Kite Shield
|
||||||
Chance to Bleed Support
|
Chance to Bleed Support
|
||||||
Chance to Flee Support
|
Chance to Flee Support
|
||||||
Chance to Ignite Support
|
|
||||||
Channel Map
|
Channel Map
|
||||||
Chaos Orb
|
Chaos Orb
|
||||||
Chaos Shard
|
Chaos Shard
|
||||||
Chaotic Disposition
|
Chaotic Disposition
|
||||||
|
Charan's Sword
|
||||||
Charged Dash
|
Charged Dash
|
||||||
Charged Traps Support
|
Charged Traps Support
|
||||||
Chateau Map
|
Chateau Map
|
||||||
@@ -271,6 +296,7 @@ Cleave
|
|||||||
Cleaver
|
Cleaver
|
||||||
Close Helmet
|
Close Helmet
|
||||||
Cloth Belt
|
Cloth Belt
|
||||||
|
Cloth Belt Piece
|
||||||
Cluster Traps Support
|
Cluster Traps Support
|
||||||
Clutching Talisman
|
Clutching Talisman
|
||||||
Cobalt Jewel
|
Cobalt Jewel
|
||||||
@@ -287,6 +313,7 @@ Colossal Tower Shield
|
|||||||
Colosseum Map
|
Colosseum Map
|
||||||
Colosseum Plate
|
Colosseum Plate
|
||||||
Colossus Mallet
|
Colossus Mallet
|
||||||
|
Combustion Support
|
||||||
Commander's Brigandine
|
Commander's Brigandine
|
||||||
Composite Bow
|
Composite Bow
|
||||||
Compound Bow
|
Compound Bow
|
||||||
@@ -457,6 +484,7 @@ Eelskin Gloves
|
|||||||
Eelskin Tunic
|
Eelskin Tunic
|
||||||
Efficacy Support
|
Efficacy Support
|
||||||
Elder Sword
|
Elder Sword
|
||||||
|
Elder's Orb
|
||||||
Elegant Foil
|
Elegant Foil
|
||||||
Elegant Ringmail
|
Elegant Ringmail
|
||||||
Elegant Round Shield
|
Elegant Round Shield
|
||||||
@@ -487,10 +515,30 @@ Enlighten Support
|
|||||||
Esh's Breachstone
|
Esh's Breachstone
|
||||||
Essence Drain
|
Essence Drain
|
||||||
Essence Leaguestone
|
Essence Leaguestone
|
||||||
|
Essence of Anger
|
||||||
|
Essence of Anguish
|
||||||
|
Essence of Contempt
|
||||||
Essence of Delirium
|
Essence of Delirium
|
||||||
|
Essence of Doubt
|
||||||
|
Essence of Dread
|
||||||
|
Essence of Envy
|
||||||
|
Essence of Fear
|
||||||
|
Essence of Greed
|
||||||
|
Essence of Hatred
|
||||||
Essence of Horror
|
Essence of Horror
|
||||||
Essence of Hysteria
|
Essence of Hysteria
|
||||||
Essence of Insanity
|
Essence of Insanity
|
||||||
|
Essence of Loathing
|
||||||
|
Essence of Misery
|
||||||
|
Essence of Rage
|
||||||
|
Essence of Scorn
|
||||||
|
Essence of Sorrow
|
||||||
|
Essence of Spite
|
||||||
|
Essence of Suffering
|
||||||
|
Essence of Torment
|
||||||
|
Essence of Woe
|
||||||
|
Essence of Wrath
|
||||||
|
Essence of Zeal
|
||||||
Estoc
|
Estoc
|
||||||
Estuary Map
|
Estuary Map
|
||||||
Etched Greatsword
|
Etched Greatsword
|
||||||
@@ -673,6 +721,7 @@ Hallowed Life Flask
|
|||||||
Hallowed Mana Flask
|
Hallowed Mana Flask
|
||||||
Hammered Buckler
|
Hammered Buckler
|
||||||
Harbinger Bow
|
Harbinger Bow
|
||||||
|
Harbinger Map
|
||||||
Harbinger's Orb
|
Harbinger's Orb
|
||||||
Harbinger's Shard
|
Harbinger's Shard
|
||||||
Harlequin Mask
|
Harlequin Mask
|
||||||
@@ -740,6 +789,7 @@ Imperial Claw
|
|||||||
Imperial Maul
|
Imperial Maul
|
||||||
Imperial Skean
|
Imperial Skean
|
||||||
Imperial Staff
|
Imperial Staff
|
||||||
|
Imperial Staff Piece
|
||||||
Imprinted Bestiary Orb
|
Imprinted Bestiary Orb
|
||||||
Incinerate
|
Incinerate
|
||||||
Increased Area of Effect Support
|
Increased Area of Effect Support
|
||||||
@@ -831,15 +881,16 @@ Legion Boots
|
|||||||
Legion Gloves
|
Legion Gloves
|
||||||
Legion Hammer
|
Legion Hammer
|
||||||
Legion Sword
|
Legion Sword
|
||||||
|
Legion Sword Piece
|
||||||
Less Duration Support
|
Less Duration Support
|
||||||
Lesser Multiple Projectiles Support
|
Lesser Multiple Projectiles Support
|
||||||
Lesser Poison Support
|
Lesser Poison Support
|
||||||
Leyline Map
|
Leyline Map
|
||||||
Life Gain on Hit Support
|
Life Gain on Hit Support
|
||||||
Life Leech Support
|
Life Leech Support
|
||||||
Light and Truth
|
|
||||||
Light Brigandine
|
Light Brigandine
|
||||||
Light Quiver
|
Light Quiver
|
||||||
|
Light and Truth
|
||||||
Lighthouse Map
|
Lighthouse Map
|
||||||
Lightning Arrow
|
Lightning Arrow
|
||||||
Lightning Penetration Support
|
Lightning Penetration Support
|
||||||
@@ -901,6 +952,17 @@ Medium Life Flask
|
|||||||
Medium Mana Flask
|
Medium Mana Flask
|
||||||
Melee Physical Damage Support
|
Melee Physical Damage Support
|
||||||
Melee Splash Support
|
Melee Splash Support
|
||||||
|
Memory Fragment
|
||||||
|
Memory Fragment I
|
||||||
|
Memory Fragment II
|
||||||
|
Memory Fragment III
|
||||||
|
Memory Fragment IV
|
||||||
|
Memory Fragment V
|
||||||
|
Memory Fragment VI
|
||||||
|
Memory Fragment VII
|
||||||
|
Memory Fragment VIII
|
||||||
|
Memory Fragment IX
|
||||||
|
Memory Fragment X
|
||||||
Merciless Armament
|
Merciless Armament
|
||||||
Mesa Map
|
Mesa Map
|
||||||
Mesh Boots
|
Mesh Boots
|
||||||
@@ -913,14 +975,14 @@ Military Staff
|
|||||||
Mind Cage
|
Mind Cage
|
||||||
Minefield Support
|
Minefield Support
|
||||||
Mineral Pools Map
|
Mineral Pools Map
|
||||||
Minion and Totem Elemental Resistance Support
|
|
||||||
Minion Damage Support
|
Minion Damage Support
|
||||||
Minion Life Support
|
Minion Life Support
|
||||||
Minion Speed Support
|
Minion Speed Support
|
||||||
|
Minion and Totem Elemental Resistance Support
|
||||||
Mirage Archer Support
|
Mirage Archer Support
|
||||||
Mirror Arrow
|
Mirror Arrow
|
||||||
Mirror of Kalandra
|
|
||||||
Mirror Shard
|
Mirror Shard
|
||||||
|
Mirror of Kalandra
|
||||||
Mirrored Spiked Shield
|
Mirrored Spiked Shield
|
||||||
Mitts
|
Mitts
|
||||||
Molten Shell
|
Molten Shell
|
||||||
@@ -1098,9 +1160,9 @@ Quartz Wand
|
|||||||
Quicksilver Flask
|
Quicksilver Flask
|
||||||
Quilted Jacket
|
Quilted Jacket
|
||||||
Racecourse Map
|
Racecourse Map
|
||||||
|
Rain Tempter
|
||||||
Rain of Arrows
|
Rain of Arrows
|
||||||
Rain of Chaos
|
Rain of Chaos
|
||||||
Rain Tempter
|
|
||||||
Raise Spectre
|
Raise Spectre
|
||||||
Raise Zombie
|
Raise Zombie
|
||||||
Rallying Cry
|
Rallying Cry
|
||||||
@@ -1117,6 +1179,7 @@ Reave
|
|||||||
Reaver Axe
|
Reaver Axe
|
||||||
Reaver Helmet
|
Reaver Helmet
|
||||||
Reaver Sword
|
Reaver Sword
|
||||||
|
Rebirth
|
||||||
Reckoning
|
Reckoning
|
||||||
Recurve Bow
|
Recurve Bow
|
||||||
Reduced Mana Support
|
Reduced Mana Support
|
||||||
@@ -1572,6 +1635,7 @@ The Scavenger
|
|||||||
The Scholar
|
The Scholar
|
||||||
The Sephirot
|
The Sephirot
|
||||||
The Shaper's Key
|
The Shaper's Key
|
||||||
|
The Shaper's Realm
|
||||||
The Sigil
|
The Sigil
|
||||||
The Siren
|
The Siren
|
||||||
The Soul
|
The Soul
|
||||||
@@ -1655,9 +1719,8 @@ Toxic Rain
|
|||||||
Toxic Sewer Map
|
Toxic Sewer Map
|
||||||
Tranquillity
|
Tranquillity
|
||||||
Transmutation Shard
|
Transmutation Shard
|
||||||
Trap and Mine Damage Support
|
|
||||||
Trap Cooldown Support
|
|
||||||
Trap Support
|
Trap Support
|
||||||
|
Trap and Mine Damage Support
|
||||||
Trapper Boots
|
Trapper Boots
|
||||||
Trapper Mitts
|
Trapper Mitts
|
||||||
Trarthan Powder
|
Trarthan Powder
|
||||||
@@ -1752,16 +1815,16 @@ Vault Map
|
|||||||
Velvet Gloves
|
Velvet Gloves
|
||||||
Velvet Slippers
|
Velvet Slippers
|
||||||
Vengeance
|
Vengeance
|
||||||
|
Vial Of Power
|
||||||
Vial of Awakening
|
Vial of Awakening
|
||||||
Vial of Consequence
|
Vial of Consequence
|
||||||
Vial of Dominance
|
Vial of Dominance
|
||||||
Vial of Fate
|
Vial of Fate
|
||||||
Vial Of Power
|
|
||||||
Vial of Sacrifice
|
Vial of Sacrifice
|
||||||
Vial of Summoning
|
Vial of Summoning
|
||||||
|
Vial of Transcendence
|
||||||
Vial of the Ghost
|
Vial of the Ghost
|
||||||
Vial of the Ritual
|
Vial of the Ritual
|
||||||
Vial of Transcendence
|
|
||||||
Vicious Projectiles Support
|
Vicious Projectiles Support
|
||||||
Vigilant Strike
|
Vigilant Strike
|
||||||
Vile Staff
|
Vile Staff
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
Abyss Jewel
|
Abyss Jewel
|
||||||
Active Skill Gems
|
Active Skill Gems
|
||||||
Amulets
|
Amulets
|
||||||
Axe
|
Axes
|
||||||
Belts
|
Belts
|
||||||
Body Armours
|
Body Armours
|
||||||
Boots
|
Boots
|
||||||
@@ -25,7 +25,7 @@ Labyrinth Trinket
|
|||||||
Large Relics
|
Large Relics
|
||||||
Leaguestone
|
Leaguestone
|
||||||
Life Flasks
|
Life Flasks
|
||||||
Mace
|
Maces
|
||||||
Mana Flasks
|
Mana Flasks
|
||||||
Map Fragments
|
Map Fragments
|
||||||
Maps
|
Maps
|
||||||
@@ -43,7 +43,7 @@ Shields
|
|||||||
Stackable Currency
|
Stackable Currency
|
||||||
Staves
|
Staves
|
||||||
Support Skill Gems
|
Support Skill Gems
|
||||||
Sword
|
Swords
|
||||||
Thrusting One Hand Swords
|
Thrusting One Hand Swords
|
||||||
Two Hand Axes
|
Two Hand Axes
|
||||||
Two Hand Maces
|
Two Hand Maces
|
||||||
|
|||||||
786
Filtration/Resources/ItemMods.txt
Normal file
786
Filtration/Resources/ItemMods.txt
Normal file
@@ -0,0 +1,786 @@
|
|||||||
|
Abbot's
|
||||||
|
Abhorrent
|
||||||
|
Acrobat's
|
||||||
|
Adept's
|
||||||
|
Agile
|
||||||
|
Alchemist's
|
||||||
|
Alluring
|
||||||
|
Alpine
|
||||||
|
Ample
|
||||||
|
Anarchic
|
||||||
|
Anarchist's
|
||||||
|
Annealed
|
||||||
|
Antagonist's
|
||||||
|
Apprentice's
|
||||||
|
Aqua
|
||||||
|
Archmage's
|
||||||
|
Arcing
|
||||||
|
Arctic
|
||||||
|
Armadillo's
|
||||||
|
Arming
|
||||||
|
Armoured
|
||||||
|
Athlete's
|
||||||
|
Avalanching
|
||||||
|
Avenger's
|
||||||
|
Azure
|
||||||
|
Bandit's
|
||||||
|
Barbed
|
||||||
|
Battlemage's
|
||||||
|
Beating
|
||||||
|
Beautiful
|
||||||
|
Beetle's
|
||||||
|
Beryl
|
||||||
|
Betrayer's
|
||||||
|
Bipedal
|
||||||
|
Biting
|
||||||
|
Bitter
|
||||||
|
Blasting
|
||||||
|
Blazing
|
||||||
|
Blistering
|
||||||
|
Bloodthirsty
|
||||||
|
Blue
|
||||||
|
Blunt
|
||||||
|
Blurred
|
||||||
|
Boggart's
|
||||||
|
Bolting
|
||||||
|
Brawler's
|
||||||
|
Breathtaking
|
||||||
|
Brinerot
|
||||||
|
Brutal
|
||||||
|
Bubbling
|
||||||
|
Burning
|
||||||
|
Burnished
|
||||||
|
Butterfly's
|
||||||
|
Buttressed
|
||||||
|
Buzzing
|
||||||
|
Calming
|
||||||
|
Capricious
|
||||||
|
Captivating
|
||||||
|
Carapaced
|
||||||
|
Carved
|
||||||
|
Caster's
|
||||||
|
Catalysed
|
||||||
|
Catalyzing
|
||||||
|
Caustic
|
||||||
|
Cauterising
|
||||||
|
Cautious
|
||||||
|
Ceremonial
|
||||||
|
Cerulean
|
||||||
|
Chaining
|
||||||
|
Chalybeous
|
||||||
|
Champion's
|
||||||
|
Chanter's
|
||||||
|
Chaotic
|
||||||
|
Charged
|
||||||
|
Charging
|
||||||
|
Cheetah's
|
||||||
|
Chemist's
|
||||||
|
Chilled
|
||||||
|
Chilling
|
||||||
|
Citaqualotl's
|
||||||
|
Cleaving
|
||||||
|
Clouded
|
||||||
|
Cobalt
|
||||||
|
Combatant's
|
||||||
|
Conflagrating
|
||||||
|
Conqueror's
|
||||||
|
Corrupted
|
||||||
|
Coursing
|
||||||
|
Crab's
|
||||||
|
Crackling
|
||||||
|
Cremating
|
||||||
|
Crocodile's
|
||||||
|
Cruel
|
||||||
|
Cryomancer's
|
||||||
|
Cryomantic
|
||||||
|
Crystalline
|
||||||
|
Dancer's
|
||||||
|
Darkened
|
||||||
|
Dauntless
|
||||||
|
Dazzling
|
||||||
|
Deadly
|
||||||
|
Deafening
|
||||||
|
Deceiver's
|
||||||
|
Deflecting
|
||||||
|
Degenerative
|
||||||
|
Demonic
|
||||||
|
Devastating
|
||||||
|
Dictator's
|
||||||
|
Discharging
|
||||||
|
Dissipating
|
||||||
|
Djinn's
|
||||||
|
Dragon's
|
||||||
|
Dragonfly's
|
||||||
|
Duelist's
|
||||||
|
Eldritch
|
||||||
|
Electrocuting
|
||||||
|
Electromantic
|
||||||
|
Elephant's
|
||||||
|
Emanant
|
||||||
|
Emperor's
|
||||||
|
Empowered
|
||||||
|
Empowering
|
||||||
|
Encased
|
||||||
|
Energetic
|
||||||
|
Energising
|
||||||
|
Enlightened
|
||||||
|
Entombing
|
||||||
|
Enveloped
|
||||||
|
Ephemeral
|
||||||
|
Esh's
|
||||||
|
Ethereal
|
||||||
|
Evanescent
|
||||||
|
Evasive
|
||||||
|
Exarch's
|
||||||
|
Exemplary
|
||||||
|
Experimenter's
|
||||||
|
Exuberant
|
||||||
|
Fawn's
|
||||||
|
Fearless
|
||||||
|
Feasting
|
||||||
|
Fecund
|
||||||
|
Fencer's
|
||||||
|
Fencing
|
||||||
|
Feral
|
||||||
|
Fevered
|
||||||
|
Fierce
|
||||||
|
Filigree
|
||||||
|
Flame Spinner's
|
||||||
|
Flaming
|
||||||
|
Flanking
|
||||||
|
Flaring
|
||||||
|
Flawless
|
||||||
|
Flea's
|
||||||
|
Fleet
|
||||||
|
Fletcher's
|
||||||
|
Fortified
|
||||||
|
Freezing
|
||||||
|
Frigid
|
||||||
|
Frost Weaver's
|
||||||
|
Frosted
|
||||||
|
Frozen
|
||||||
|
Fuelling
|
||||||
|
Gazelle's
|
||||||
|
Gentian
|
||||||
|
Ghost's
|
||||||
|
Girded
|
||||||
|
Glaciated
|
||||||
|
Gladiator's
|
||||||
|
Gleaming
|
||||||
|
Glimmering
|
||||||
|
Glinting
|
||||||
|
Glittering
|
||||||
|
Glowing
|
||||||
|
Glyphic
|
||||||
|
Gremlin's
|
||||||
|
Grounded
|
||||||
|
Guatelitzi's
|
||||||
|
Hailing
|
||||||
|
Hale
|
||||||
|
Halting
|
||||||
|
Harming
|
||||||
|
Harmonic
|
||||||
|
Haunting
|
||||||
|
Healthy
|
||||||
|
Heated
|
||||||
|
Heavy
|
||||||
|
Hellion's
|
||||||
|
Hero's
|
||||||
|
Hexproof
|
||||||
|
Hexwarded
|
||||||
|
Hissing
|
||||||
|
Honed
|
||||||
|
Humming
|
||||||
|
Hummingbird's
|
||||||
|
Ibex's
|
||||||
|
Icy
|
||||||
|
Illusion's
|
||||||
|
Illusory
|
||||||
|
Impenetrable
|
||||||
|
Impervious
|
||||||
|
Impregnable
|
||||||
|
Incandescent
|
||||||
|
Incanter's
|
||||||
|
Incinerating
|
||||||
|
Incombustible
|
||||||
|
Incorporeal
|
||||||
|
Inculcated
|
||||||
|
Indomitable
|
||||||
|
Infernal
|
||||||
|
Infixed
|
||||||
|
Infused
|
||||||
|
Infusing
|
||||||
|
Ingrained
|
||||||
|
Inspirational
|
||||||
|
Inspired
|
||||||
|
Inspiring
|
||||||
|
Instilled
|
||||||
|
Interpermeated
|
||||||
|
Interpolated
|
||||||
|
Ionising
|
||||||
|
Jagged
|
||||||
|
Jinxing
|
||||||
|
Journeyman's
|
||||||
|
Judging
|
||||||
|
Lacquered
|
||||||
|
Lamprey's
|
||||||
|
Lava Caller's
|
||||||
|
Layered
|
||||||
|
Leadership
|
||||||
|
Legend's
|
||||||
|
Lethal
|
||||||
|
Lich's
|
||||||
|
Lively
|
||||||
|
Lobstered
|
||||||
|
Lunar
|
||||||
|
Mage's
|
||||||
|
Magician's
|
||||||
|
Magmatic
|
||||||
|
Magpie's
|
||||||
|
Malicious
|
||||||
|
Malignant
|
||||||
|
Mammoth's
|
||||||
|
Master's
|
||||||
|
Matatl's
|
||||||
|
Mazarine
|
||||||
|
Mercenary's
|
||||||
|
Merciless
|
||||||
|
Mirage's
|
||||||
|
Mirrored
|
||||||
|
Molten
|
||||||
|
Monk's
|
||||||
|
Mosquito's
|
||||||
|
Moth's
|
||||||
|
Multifarious
|
||||||
|
Mutewind
|
||||||
|
Muttering
|
||||||
|
Naga's
|
||||||
|
Nautilus's
|
||||||
|
Necromancer's
|
||||||
|
Nightmare's
|
||||||
|
Nihilist's
|
||||||
|
Occultist's
|
||||||
|
Opalescent
|
||||||
|
Otherworldly
|
||||||
|
Overlord's
|
||||||
|
Overpowering
|
||||||
|
Oyster's
|
||||||
|
Panicked
|
||||||
|
Paragon's
|
||||||
|
Parched
|
||||||
|
Parrying
|
||||||
|
Perandus'
|
||||||
|
Perpetual
|
||||||
|
Phantasm's
|
||||||
|
Phased
|
||||||
|
Piercing
|
||||||
|
Pirate's
|
||||||
|
Pixie's
|
||||||
|
Plated
|
||||||
|
Polar
|
||||||
|
Polished
|
||||||
|
Prime
|
||||||
|
Prior's
|
||||||
|
Professor's
|
||||||
|
Protective
|
||||||
|
Pulsing
|
||||||
|
Puncturing
|
||||||
|
Punishing
|
||||||
|
Pyroclastic
|
||||||
|
Pyromantic
|
||||||
|
Quintessential
|
||||||
|
Radiating
|
||||||
|
Ram's
|
||||||
|
Rapturous
|
||||||
|
Razor-sharp
|
||||||
|
Reanimator's
|
||||||
|
Reaver's
|
||||||
|
Recovering
|
||||||
|
Redblade
|
||||||
|
Reinforced
|
||||||
|
Remora's
|
||||||
|
Resistant
|
||||||
|
Resolute
|
||||||
|
Resonant
|
||||||
|
Resonating
|
||||||
|
Resplendent
|
||||||
|
Rhino's
|
||||||
|
Ribbed
|
||||||
|
Ripping
|
||||||
|
Robust
|
||||||
|
Rotund
|
||||||
|
Runic
|
||||||
|
Runner's
|
||||||
|
Rupturing
|
||||||
|
Sabotage
|
||||||
|
Sanguine
|
||||||
|
Sapphire
|
||||||
|
Sapping
|
||||||
|
Saturated
|
||||||
|
Savage
|
||||||
|
Scholar's
|
||||||
|
Scintillating
|
||||||
|
Scorching
|
||||||
|
Scrapper's
|
||||||
|
Screaming
|
||||||
|
Searing
|
||||||
|
Seething
|
||||||
|
Seraphim's
|
||||||
|
Serene
|
||||||
|
Serrated
|
||||||
|
Shade's
|
||||||
|
Shadowy
|
||||||
|
Shaman's
|
||||||
|
Sharpened
|
||||||
|
Sharpshooter's
|
||||||
|
Shielding
|
||||||
|
Shimmering
|
||||||
|
Shining
|
||||||
|
Shocking
|
||||||
|
Shrieking
|
||||||
|
Sinister
|
||||||
|
Sizzling
|
||||||
|
Skeletal
|
||||||
|
Slicing
|
||||||
|
Slithering
|
||||||
|
Smiting
|
||||||
|
Smoking
|
||||||
|
Smouldering
|
||||||
|
Snapping
|
||||||
|
Snowy
|
||||||
|
Solar
|
||||||
|
Soldier's
|
||||||
|
Sorcerer's
|
||||||
|
Sparking
|
||||||
|
Spectre's
|
||||||
|
Spiny
|
||||||
|
Spirited
|
||||||
|
Splitting
|
||||||
|
Sprinter's
|
||||||
|
Squire's
|
||||||
|
Stallion's
|
||||||
|
Stalwart
|
||||||
|
Stout
|
||||||
|
Striking
|
||||||
|
Strong-Willed
|
||||||
|
Studded
|
||||||
|
Subterranean
|
||||||
|
Summoner's
|
||||||
|
Sundering
|
||||||
|
Surgeon's
|
||||||
|
Surging
|
||||||
|
Tacati's
|
||||||
|
Tainted
|
||||||
|
Technical
|
||||||
|
Tempered
|
||||||
|
Tempest King's
|
||||||
|
Thaumaturgist's
|
||||||
|
The Shaper's
|
||||||
|
Thickened
|
||||||
|
Thirsty
|
||||||
|
Thorny
|
||||||
|
Thunder Lord's
|
||||||
|
Thundering
|
||||||
|
Thwarting
|
||||||
|
Titan's
|
||||||
|
Topotante's
|
||||||
|
Trapping
|
||||||
|
Tul's
|
||||||
|
Turncoat's
|
||||||
|
Twinned
|
||||||
|
Tyrannical
|
||||||
|
Unassailable
|
||||||
|
Undead
|
||||||
|
Unfaltering
|
||||||
|
Unleashed
|
||||||
|
Unreal
|
||||||
|
Unstoppable
|
||||||
|
Unwavering
|
||||||
|
Unworldly
|
||||||
|
Urchin's
|
||||||
|
Vaal
|
||||||
|
Vampire's
|
||||||
|
Vaporous
|
||||||
|
Vicious
|
||||||
|
Victor's
|
||||||
|
Vigorous
|
||||||
|
Vile
|
||||||
|
Virile
|
||||||
|
Vivacious
|
||||||
|
Vivid
|
||||||
|
Volcanic
|
||||||
|
Volleying
|
||||||
|
Wailing
|
||||||
|
Warding
|
||||||
|
Warlock's
|
||||||
|
Warrior's
|
||||||
|
Wasp's
|
||||||
|
Weaponmaster's
|
||||||
|
Weeping
|
||||||
|
Whispering
|
||||||
|
Wicked
|
||||||
|
Winterbringer's
|
||||||
|
Wizard's
|
||||||
|
Wraith's
|
||||||
|
Wright's
|
||||||
|
Xopec's
|
||||||
|
Xoph's
|
||||||
|
Youthful
|
||||||
|
Zaffre
|
||||||
|
Zana's
|
||||||
|
of Absorption
|
||||||
|
of Abuse
|
||||||
|
of Acclaim
|
||||||
|
of Acclimatisation
|
||||||
|
of Accuracy
|
||||||
|
of Adamantite Skin
|
||||||
|
of Adaption
|
||||||
|
of Adrenaline
|
||||||
|
of Amassment
|
||||||
|
of Anger
|
||||||
|
of Animation
|
||||||
|
of Annihilation
|
||||||
|
of Archaeology
|
||||||
|
of Archery
|
||||||
|
of Arcing
|
||||||
|
of Ashes
|
||||||
|
of Athletics
|
||||||
|
of Authority
|
||||||
|
of Balance
|
||||||
|
of Bameth
|
||||||
|
of Banishing
|
||||||
|
of Banishment
|
||||||
|
of Berserking
|
||||||
|
of Blasting
|
||||||
|
of Bleeding
|
||||||
|
of Blinding
|
||||||
|
of Bliss
|
||||||
|
of Bloodlines
|
||||||
|
of Burning
|
||||||
|
of Calamity
|
||||||
|
of Calm
|
||||||
|
of Celebration
|
||||||
|
of Champions
|
||||||
|
of Chilling
|
||||||
|
of Cinders
|
||||||
|
of Citaqualotl
|
||||||
|
of Coals
|
||||||
|
of Collecting
|
||||||
|
of Collision
|
||||||
|
of Combat
|
||||||
|
of Combusting
|
||||||
|
of Commanders
|
||||||
|
of Confidence
|
||||||
|
of Conflagrating
|
||||||
|
of Congealment
|
||||||
|
of Consumption
|
||||||
|
of Corundum Skin
|
||||||
|
of Crafting
|
||||||
|
of Craiceann
|
||||||
|
of Craving
|
||||||
|
of Cunning
|
||||||
|
of Curing
|
||||||
|
of Dampening
|
||||||
|
of Darting
|
||||||
|
of Dazing
|
||||||
|
of Deadliness
|
||||||
|
of Delaying
|
||||||
|
of Demolishing
|
||||||
|
of Desecration
|
||||||
|
of Destruction
|
||||||
|
of Dexterity
|
||||||
|
of Disaster
|
||||||
|
of Discharge
|
||||||
|
of Dishonour
|
||||||
|
of Distraction
|
||||||
|
of Dousing
|
||||||
|
of Drought
|
||||||
|
of Ease
|
||||||
|
of Efficiency
|
||||||
|
of Elation
|
||||||
|
of Electricity
|
||||||
|
of Elemental Weakness
|
||||||
|
of Embers
|
||||||
|
of Enchanting
|
||||||
|
of Endurance
|
||||||
|
of Enfeeblement
|
||||||
|
of Entropy
|
||||||
|
of Ephij
|
||||||
|
of Euphoria
|
||||||
|
of Eviction
|
||||||
|
of Excavation
|
||||||
|
of Excitement
|
||||||
|
of Exile
|
||||||
|
of Expertise
|
||||||
|
of Exposure
|
||||||
|
of Expulsion
|
||||||
|
of Extinguishing
|
||||||
|
of Exuberance
|
||||||
|
of Fame
|
||||||
|
of Farrul
|
||||||
|
of Fending
|
||||||
|
of Fenumus
|
||||||
|
of Ferocity
|
||||||
|
of Finesse
|
||||||
|
of Flames
|
||||||
|
of Flight
|
||||||
|
of Floe
|
||||||
|
of Focus
|
||||||
|
of Fog
|
||||||
|
of Fortitude
|
||||||
|
of Fracturing
|
||||||
|
of Freezing
|
||||||
|
of Frenzy
|
||||||
|
of Fury
|
||||||
|
of Gathering
|
||||||
|
of Giants
|
||||||
|
of Glaciation
|
||||||
|
of Gluttony
|
||||||
|
of Grandmastery
|
||||||
|
of Grounding
|
||||||
|
of Guarding
|
||||||
|
of Guatelitzi
|
||||||
|
of Haast
|
||||||
|
of Haemophilia
|
||||||
|
of Harm
|
||||||
|
of Havoc
|
||||||
|
of Haze
|
||||||
|
of Heat
|
||||||
|
of Hemomancy
|
||||||
|
of Hindering
|
||||||
|
of Hoarding
|
||||||
|
of Hordes
|
||||||
|
of Ice
|
||||||
|
of Immolation
|
||||||
|
of Impact
|
||||||
|
of Impotence
|
||||||
|
of Incision
|
||||||
|
of Infamy
|
||||||
|
of Instinct
|
||||||
|
of Insulating
|
||||||
|
of Insulation
|
||||||
|
of Intelligence
|
||||||
|
of Intercepting
|
||||||
|
of Ire
|
||||||
|
of Iron Skin
|
||||||
|
of Joy
|
||||||
|
of Legerdemain
|
||||||
|
of Light
|
||||||
|
of Lightning
|
||||||
|
of Lioneye
|
||||||
|
of Longevity
|
||||||
|
of Malevolence
|
||||||
|
of Malice
|
||||||
|
of Maneuvering
|
||||||
|
of Marshalling
|
||||||
|
of Mastery
|
||||||
|
of Matatl
|
||||||
|
of Menace
|
||||||
|
of Mending
|
||||||
|
of Miring
|
||||||
|
of Momentum
|
||||||
|
of Mysticism
|
||||||
|
of Needling
|
||||||
|
of Nimbleness
|
||||||
|
of Nirvana
|
||||||
|
of Nourishment
|
||||||
|
of Numbing
|
||||||
|
of Onslaught
|
||||||
|
of Opportunity
|
||||||
|
of Orchestration
|
||||||
|
of Order
|
||||||
|
of Osmosis
|
||||||
|
of Overflowing
|
||||||
|
of Penetrating
|
||||||
|
of Phasing
|
||||||
|
of Piercing
|
||||||
|
of Plunder
|
||||||
|
of Poisoning
|
||||||
|
of Potency
|
||||||
|
of Power
|
||||||
|
of Praxis
|
||||||
|
of Precision
|
||||||
|
of Preparation
|
||||||
|
of Prestidigitation
|
||||||
|
of Propulsion
|
||||||
|
of Puhuarte
|
||||||
|
of Radiance
|
||||||
|
of Rage
|
||||||
|
of Raiding
|
||||||
|
of Rallying
|
||||||
|
of Readiness
|
||||||
|
of Recovery
|
||||||
|
of Refilling
|
||||||
|
of Reflexes
|
||||||
|
of Regrowth
|
||||||
|
of Rejuvenation
|
||||||
|
of Rending
|
||||||
|
of Renown
|
||||||
|
of Resilience
|
||||||
|
of Resistance
|
||||||
|
of Restoration
|
||||||
|
of Retaliation
|
||||||
|
of Righteousness
|
||||||
|
of Rime
|
||||||
|
of Ruin
|
||||||
|
of Runes
|
||||||
|
of Rupturing
|
||||||
|
of Rust
|
||||||
|
of Saqawal
|
||||||
|
of Savouring
|
||||||
|
of Shaping
|
||||||
|
of Shelter
|
||||||
|
of Shining
|
||||||
|
of Shocking
|
||||||
|
of Sin
|
||||||
|
of Sipping
|
||||||
|
of Skill
|
||||||
|
of Skirmishing
|
||||||
|
of Slamming
|
||||||
|
of Sleet
|
||||||
|
of Smothering
|
||||||
|
of Snow
|
||||||
|
of Soaring
|
||||||
|
of Sortilege
|
||||||
|
of Sparks
|
||||||
|
of Spellcraft
|
||||||
|
of Spirit
|
||||||
|
of Staggering
|
||||||
|
of Stasis
|
||||||
|
of Static
|
||||||
|
of Staunching
|
||||||
|
of Steadiness
|
||||||
|
of Steel Skin
|
||||||
|
of Stifling
|
||||||
|
of Stinging
|
||||||
|
of Stone Skin
|
||||||
|
of Strength
|
||||||
|
of Stunning
|
||||||
|
of Success
|
||||||
|
of Tacati
|
||||||
|
of Talent
|
||||||
|
of Taunting
|
||||||
|
of Temporal Chains
|
||||||
|
of Thick Skin
|
||||||
|
of Tolerance
|
||||||
|
of Toughness
|
||||||
|
of Training
|
||||||
|
of Triumph
|
||||||
|
of Tzteosh
|
||||||
|
of Unholy Might
|
||||||
|
of Unmaking
|
||||||
|
of Unwavering
|
||||||
|
of Vampirism
|
||||||
|
of Variegation
|
||||||
|
of Venom
|
||||||
|
of Vibrance
|
||||||
|
of Victory
|
||||||
|
of Vivaciousness
|
||||||
|
of Voltage
|
||||||
|
of Vulnerability
|
||||||
|
of Walling
|
||||||
|
of Warding
|
||||||
|
of Warming
|
||||||
|
of Weaponcraft
|
||||||
|
of Weight
|
||||||
|
of Wounding
|
||||||
|
of Zeal
|
||||||
|
of the Apocalypse
|
||||||
|
of the Apt
|
||||||
|
of the Assassin
|
||||||
|
of the Augur
|
||||||
|
of the Bear
|
||||||
|
of the Beast
|
||||||
|
of the Blur
|
||||||
|
of the Boxer
|
||||||
|
of the Brawler
|
||||||
|
of the Brute
|
||||||
|
of the Cloud
|
||||||
|
of the Clouds
|
||||||
|
of the Combatant
|
||||||
|
of the Comet
|
||||||
|
of the Crystal
|
||||||
|
of the Deadeye
|
||||||
|
of the Dragon
|
||||||
|
of the Drake
|
||||||
|
of the Elder
|
||||||
|
of the Elements
|
||||||
|
of the Falcon
|
||||||
|
of the Fox
|
||||||
|
of the Furnace
|
||||||
|
of the Galaxy
|
||||||
|
of the Gale
|
||||||
|
of the Genius
|
||||||
|
of the Gladiator
|
||||||
|
of the Gods
|
||||||
|
of the Godslayer
|
||||||
|
of the Goliath
|
||||||
|
of the Gorilla
|
||||||
|
of the Guardian
|
||||||
|
of the Hearth
|
||||||
|
of the Heavens
|
||||||
|
of the Hydra
|
||||||
|
of the Ice
|
||||||
|
of the Inferno
|
||||||
|
of the Infinite
|
||||||
|
of the Inquisitor
|
||||||
|
of the Inuit
|
||||||
|
of the Jaguar
|
||||||
|
of the Kaleidoscope
|
||||||
|
of the Kiln
|
||||||
|
of the Leopard
|
||||||
|
of the Leviathan
|
||||||
|
of the Lightning
|
||||||
|
of the Lion
|
||||||
|
of the Lizard
|
||||||
|
of the Lost
|
||||||
|
of the Lynx
|
||||||
|
of the Maelstrom
|
||||||
|
of the Magma
|
||||||
|
of the Marksman
|
||||||
|
of the Meteor
|
||||||
|
of the Mongoose
|
||||||
|
of the Multiverse
|
||||||
|
of the Newt
|
||||||
|
of the Panther
|
||||||
|
of the Penguin
|
||||||
|
of the Phantom
|
||||||
|
of the Philosopher
|
||||||
|
of the Phoenix
|
||||||
|
of the Polar Bear
|
||||||
|
of the Polymath
|
||||||
|
of the Prism
|
||||||
|
of the Prodigy
|
||||||
|
of the Pugilist
|
||||||
|
of the Pupil
|
||||||
|
of the Raider
|
||||||
|
of the Rainbow
|
||||||
|
of the Ranger
|
||||||
|
of the Sage
|
||||||
|
of the Salamander
|
||||||
|
of the Savant
|
||||||
|
of the Seal
|
||||||
|
of the Sky
|
||||||
|
of the Slayer
|
||||||
|
of the Sniper
|
||||||
|
of the Span
|
||||||
|
of the Squall
|
||||||
|
of the Starfish
|
||||||
|
of the Storm
|
||||||
|
of the Student
|
||||||
|
of the Tempest
|
||||||
|
of the Thunderhead
|
||||||
|
of the Titan
|
||||||
|
of the Troll
|
||||||
|
of the Underground
|
||||||
|
of the Universe
|
||||||
|
of the Virtuoso
|
||||||
|
of the Volcano
|
||||||
|
of the Wall
|
||||||
|
of the Walrus
|
||||||
|
of the Whelpling
|
||||||
|
of the Wind
|
||||||
|
of the Worthy
|
||||||
|
of the Wrestler
|
||||||
|
of the Yeti
|
||||||
|
of the Zephyr
|
||||||
@@ -39,7 +39,7 @@ namespace Filtration.Services
|
|||||||
|
|
||||||
_mainWindow.Show();
|
_mainWindow.Show();
|
||||||
|
|
||||||
await _updateService.CheckForUpdates();
|
await _updateService.CheckForUpdatesAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CurrentDomainOnUnhandledException(object sender, UnhandledExceptionEventArgs e)
|
private void CurrentDomainOnUnhandledException(object sender, UnhandledExceptionEventArgs e)
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
using System;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Filtration.Common.Services;
|
|
||||||
using Filtration.Common.Utilities;
|
using Filtration.Common.Utilities;
|
||||||
|
using Filtration.Properties;
|
||||||
|
|
||||||
namespace Filtration.Services
|
namespace Filtration.Services
|
||||||
{
|
{
|
||||||
@@ -11,15 +10,13 @@ namespace Filtration.Services
|
|||||||
{
|
{
|
||||||
IEnumerable<string> ItemBaseTypes { get; }
|
IEnumerable<string> ItemBaseTypes { get; }
|
||||||
IEnumerable<string> ItemClasses { get; }
|
IEnumerable<string> ItemClasses { get; }
|
||||||
|
IEnumerable<string> ItemMods { get; }
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class StaticDataService : IStaticDataService
|
internal class StaticDataService : IStaticDataService
|
||||||
{
|
{
|
||||||
private readonly IFileSystemService _fileSystemService;
|
public StaticDataService()
|
||||||
|
|
||||||
public StaticDataService(IFileSystemService fileSystemService)
|
|
||||||
{
|
{
|
||||||
_fileSystemService = fileSystemService;
|
|
||||||
PopulateStaticData();
|
PopulateStaticData();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -27,34 +24,13 @@ namespace Filtration.Services
|
|||||||
|
|
||||||
public IEnumerable<string> ItemClasses { get; private set; }
|
public IEnumerable<string> ItemClasses { get; private set; }
|
||||||
|
|
||||||
|
public IEnumerable<string> ItemMods { get; private set; }
|
||||||
|
|
||||||
private void PopulateStaticData()
|
private void PopulateStaticData()
|
||||||
{
|
{
|
||||||
var itemBaseTypesPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Filtration\ItemBaseTypes.txt";
|
ItemBaseTypes = new LineReader(() => new StringReader(Resources.ItemBaseTypes)).ToList();
|
||||||
var itemClassesPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Filtration\ItemClasses.txt";
|
ItemClasses = new LineReader(() => new StringReader(Resources.ItemClasses)).ToList();
|
||||||
|
ItemMods = new LineReader(() => new StringReader(Resources.ItemMods)).ToList();
|
||||||
string itemBaseTypes;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
itemBaseTypes = _fileSystemService.ReadFileAsString(itemBaseTypesPath);
|
|
||||||
}
|
|
||||||
catch (Exception)
|
|
||||||
{
|
|
||||||
itemBaseTypes = string.Empty;
|
|
||||||
}
|
|
||||||
|
|
||||||
ItemBaseTypes = new LineReader(() => new StringReader(itemBaseTypes)).ToList();
|
|
||||||
|
|
||||||
string itemClasses;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
itemClasses = _fileSystemService.ReadFileAsString(itemClassesPath);
|
|
||||||
}
|
|
||||||
catch (Exception)
|
|
||||||
{
|
|
||||||
itemClasses = string.Empty;
|
|
||||||
}
|
|
||||||
|
|
||||||
ItemClasses = new LineReader(() => new StringReader(itemClasses)).ToList();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Filtration.Enums;
|
||||||
using Filtration.Properties;
|
using Filtration.Properties;
|
||||||
using NLog;
|
using NLog;
|
||||||
using Squirrel;
|
using Squirrel;
|
||||||
@@ -52,7 +53,7 @@ namespace Filtration.Services
|
|||||||
|
|
||||||
string LatestReleaseVersion { get; }
|
string LatestReleaseVersion { get; }
|
||||||
|
|
||||||
Task CheckForUpdates();
|
Task CheckForUpdatesAsync();
|
||||||
|
|
||||||
Task DownloadUpdatesAsync();
|
Task DownloadUpdatesAsync();
|
||||||
|
|
||||||
@@ -63,13 +64,16 @@ namespace Filtration.Services
|
|||||||
|
|
||||||
internal class UpdateService : IUpdateService
|
internal class UpdateService : IUpdateService
|
||||||
{
|
{
|
||||||
private readonly ISettingsService _settingsService;
|
|
||||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||||
|
|
||||||
private const string _localUpdatePath = @"C:\Repos\Filtration\Releases";
|
private const string _localUpdatePath = @"C:\Repos\Filtration\Releases";
|
||||||
|
|
||||||
|
private readonly ISettingsService _settingsService;
|
||||||
|
private readonly UpdateSource _updateSource = UpdateSource.GitHub;
|
||||||
|
|
||||||
private ReleaseEntry _latestRelease;
|
private ReleaseEntry _latestRelease;
|
||||||
private UpdateInfo _updates;
|
private UpdateInfo _updates;
|
||||||
|
private bool _downloadPrereleaseUpdates;
|
||||||
private UpdateStatus _updateStatus;
|
private UpdateStatus _updateStatus;
|
||||||
|
|
||||||
public UpdateService(ISettingsService settingsService)
|
public UpdateService(ISettingsService settingsService)
|
||||||
@@ -96,35 +100,42 @@ namespace Filtration.Services
|
|||||||
|
|
||||||
public string LatestReleaseVersion { get; private set; }
|
public string LatestReleaseVersion { get; private set; }
|
||||||
|
|
||||||
public async Task CheckForUpdates()
|
public async Task CheckForUpdatesAsync()
|
||||||
{
|
{
|
||||||
if (UpdateStatus != UpdateStatus.NoUpdateAvailable)
|
if (UpdateStatus != UpdateStatus.NoUpdateAvailable)
|
||||||
{
|
{
|
||||||
throw new InvalidOperationException();
|
throw new InvalidOperationException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Logger.Debug("Checking for update...");
|
Logger.Debug("Checking for update...");
|
||||||
UpdateStatus = UpdateStatus.CheckingForUpdate;
|
UpdateStatus = UpdateStatus.CheckingForUpdate;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
bool downloadPrereleaseUpdates;
|
_downloadPrereleaseUpdates = Settings.Default.DownloadPrereleaseUpdates;
|
||||||
downloadPrereleaseUpdates = Settings.Default.DownloadPrereleaseUpdates;
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
downloadPrereleaseUpdates = true;
|
_downloadPrereleaseUpdates = true;
|
||||||
#endif
|
#endif
|
||||||
using (var mgr = await UpdateManager.GitHubUpdateManager("https://github.com/ben-wallis/Filtration", prerelease: downloadPrereleaseUpdates))
|
|
||||||
|
async Task CheckForUpdatesAsync(IUpdateManager updateManager)
|
||||||
{
|
{
|
||||||
_updates = await mgr.CheckForUpdate(progress: progress => UpdateProgressChanged?.Invoke(this, new UpdateProgressChangedEventArgs(progress)));
|
_updates = await updateManager.CheckForUpdate(progress: progress => UpdateProgressChanged?.Invoke(this, new UpdateProgressChangedEventArgs(progress)));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Local file update source for testing
|
if (_updateSource == UpdateSource.GitHub)
|
||||||
//using (var mgr = new UpdateManager(_localUpdatePath))
|
{
|
||||||
//{
|
using (var updateManager = await UpdateManager.GitHubUpdateManager("https://github.com/ben-wallis/Filtration", prerelease: _downloadPrereleaseUpdates))
|
||||||
|
{
|
||||||
// _updates = await mgr.CheckForUpdate(progress: progress => UpdateProgressChanged?.Invoke(this, new UpdateProgressChangedEventArgs(progress)));
|
await CheckForUpdatesAsync(updateManager);
|
||||||
//}
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
using (var updateManager = new UpdateManager(_localUpdatePath))
|
||||||
|
{
|
||||||
|
await CheckForUpdatesAsync(updateManager);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
@@ -133,25 +144,12 @@ namespace Filtration.Services
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (_updates.ReleasesToApply.Any())
|
if (_updates.ReleasesToApply.Any())
|
||||||
{
|
{
|
||||||
_latestRelease = _updates.ReleasesToApply.OrderBy(x => x.Version).Last();
|
_latestRelease = _updates.ReleasesToApply.OrderBy(x => x.Version).Last();
|
||||||
LatestReleaseVersion = _latestRelease.Version.ToString();
|
LatestReleaseVersion = _latestRelease.Version.ToString();
|
||||||
|
|
||||||
Logger.Debug($"Update found ({LatestReleaseVersion}), fetching release notes...");
|
Logger.Debug($"Update found ({LatestReleaseVersion})");
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var releaseNotes = _latestRelease.GetReleaseNotes(_localUpdatePath);
|
|
||||||
LatestReleaseNotes = ProcessReleaseNotes(releaseNotes);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
Logger.Error(e);
|
|
||||||
UpdateStatus = UpdateStatus.Error;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
UpdateStatus = UpdateStatus.UpdateAvailable;
|
UpdateStatus = UpdateStatus.UpdateAvailable;
|
||||||
}
|
}
|
||||||
@@ -162,7 +160,7 @@ namespace Filtration.Services
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private string ProcessReleaseNotes(string rawReleaseNotes)
|
private static string ProcessReleaseNotes(string rawReleaseNotes)
|
||||||
{
|
{
|
||||||
var regex = new Regex(@"<!\[CDATA\[(.*)]]>", RegexOptions.Singleline);
|
var regex = new Regex(@"<!\[CDATA\[(.*)]]>", RegexOptions.Singleline);
|
||||||
var matches = regex.Match(rawReleaseNotes);
|
var matches = regex.Match(rawReleaseNotes);
|
||||||
@@ -184,11 +182,31 @@ namespace Filtration.Services
|
|||||||
|
|
||||||
UpdateStatus = UpdateStatus.Downloading;
|
UpdateStatus = UpdateStatus.Downloading;
|
||||||
|
|
||||||
|
async Task DownloadUpdatesAsync(IUpdateManager updateManager)
|
||||||
|
{
|
||||||
|
Logger.Debug("Downloading update...");
|
||||||
|
await updateManager.DownloadReleases(_updates.ReleasesToApply, OnProgressChanged);
|
||||||
|
|
||||||
|
Logger.Debug("Fetching release notes...");
|
||||||
|
var releaseNotes = _updates.FetchReleaseNotes();
|
||||||
|
LatestReleaseNotes = ProcessReleaseNotes(releaseNotes[_latestRelease]);
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
|
{
|
||||||
|
if (_updateSource == UpdateSource.GitHub)
|
||||||
|
{
|
||||||
|
using (var updateManager = await UpdateManager.GitHubUpdateManager("https://github.com/ben-wallis/Filtration", prerelease: _downloadPrereleaseUpdates))
|
||||||
|
{
|
||||||
|
await DownloadUpdatesAsync(updateManager);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
using (var updateManager = new UpdateManager(_localUpdatePath))
|
using (var updateManager = new UpdateManager(_localUpdatePath))
|
||||||
{
|
{
|
||||||
await updateManager.DownloadReleases(_updates.ReleasesToApply, OnProgressChanged);
|
await DownloadUpdatesAsync(updateManager);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
@@ -215,13 +233,24 @@ namespace Filtration.Services
|
|||||||
// wipes out user settings due to the application directory changing with each update
|
// wipes out user settings due to the application directory changing with each update
|
||||||
_settingsService.BackupSettings();
|
_settingsService.BackupSettings();
|
||||||
|
|
||||||
|
Logger.Debug("Applying update...");
|
||||||
try
|
try
|
||||||
|
{
|
||||||
|
if (_updateSource == UpdateSource.GitHub)
|
||||||
|
{
|
||||||
|
using (var mgr = await UpdateManager.GitHubUpdateManager("https://github.com/ben-wallis/Filtration", prerelease: _downloadPrereleaseUpdates))
|
||||||
|
{
|
||||||
|
await mgr.ApplyReleases(_updates, OnProgressChanged);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
using (var updateManager = new UpdateManager(_localUpdatePath))
|
using (var updateManager = new UpdateManager(_localUpdatePath))
|
||||||
{
|
{
|
||||||
await updateManager.ApplyReleases(_updates, OnProgressChanged);
|
await updateManager.ApplyReleases(_updates, OnProgressChanged);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
Logger.Error(e);
|
Logger.Error(e);
|
||||||
@@ -229,6 +258,7 @@ namespace Filtration.Services
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Logger.Debug("Update complete");
|
||||||
UpdateStatus = UpdateStatus.UpdateComplete;
|
UpdateStatus = UpdateStatus.UpdateComplete;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -78,7 +78,7 @@
|
|||||||
|
|
||||||
<!-- Explicit Mods Template -->
|
<!-- Explicit Mods Template -->
|
||||||
<DataTemplate DataType="{x:Type blockItemTypes:HasExplicitModBlockItem}">
|
<DataTemplate DataType="{x:Type blockItemTypes:HasExplicitModBlockItem}">
|
||||||
<userControls:EditableListBoxControl Margin="5,5,5,5" ItemsSource="{Binding Items}" />
|
<userControls:EditableListBoxControl Margin="5,5,5,5" ItemsSource="{Binding Items}" AutoCompleteItemsSource="{Binding ElementName=TopLevelGrid, Path=DataContext.AutocompleteItemMods}" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
<!-- Socket Groups Template -->
|
<!-- Socket Groups Template -->
|
||||||
@@ -97,14 +97,15 @@
|
|||||||
DisplayMemberPath="Description"
|
DisplayMemberPath="Description"
|
||||||
SelectedValue="{Binding Color}"
|
SelectedValue="{Binding Color}"
|
||||||
SelectedValuePath="Value" />
|
SelectedValuePath="Value" />
|
||||||
<userControls:ThemeComponentSelectionControl ThemeComponent="{Binding ThemeComponent}" Margin="0,2,0,0">
|
<!-- Disabled until there is a solution to GitHub Issue #68 (certain block items do not support trailing comments) -->
|
||||||
|
<!--<userControls:ThemeComponentSelectionControl ThemeComponent="{Binding ThemeComponent}" Margin="0,2,0,0">
|
||||||
<userControls:ThemeComponentSelectionControl.AvailableThemeComponents>
|
<userControls:ThemeComponentSelectionControl.AvailableThemeComponents>
|
||||||
<MultiBinding Converter="{StaticResource AvailableThemeComponentsConverter}">
|
<MultiBinding Converter="{StaticResource AvailableThemeComponentsConverter}">
|
||||||
<Binding Path="DataContext.Script.ThemeComponents" RelativeSource="{RelativeSource AncestorType={x:Type views:ItemFilterScriptView}}"/>
|
<Binding Path="DataContext.Script.ThemeComponents" RelativeSource="{RelativeSource AncestorType={x:Type views:ItemFilterScriptView}}"/>
|
||||||
<Binding Path="." />
|
<Binding Path="." />
|
||||||
</MultiBinding>
|
</MultiBinding>
|
||||||
</userControls:ThemeComponentSelectionControl.AvailableThemeComponents>
|
</userControls:ThemeComponentSelectionControl.AvailableThemeComponents>
|
||||||
</userControls:ThemeComponentSelectionControl>
|
</userControls:ThemeComponentSelectionControl>-->
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
@@ -133,14 +134,15 @@
|
|||||||
<ColumnDefinition Width="*" />
|
<ColumnDefinition Width="*" />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<xctk:ShortUpDown Grid.Column="0" Value="{Binding Value}" Minimum="{Binding Minimum}" Maximum="{Binding Maximum}" Margin="0,0,10,0" />
|
<xctk:ShortUpDown Grid.Column="0" Value="{Binding Value}" Minimum="{Binding Minimum}" Maximum="{Binding Maximum}" Margin="0,0,10,0" />
|
||||||
<userControls:ThemeComponentSelectionControl Grid.Column="1" ThemeComponent="{Binding ThemeComponent}">
|
<!-- Disabled until there is a solution to GitHub Issue #68 (certain block items do not support trailing comments) -->
|
||||||
|
<!--<userControls:ThemeComponentSelectionControl Grid.Column="1" ThemeComponent="{Binding ThemeComponent}">
|
||||||
<userControls:ThemeComponentSelectionControl.AvailableThemeComponents>
|
<userControls:ThemeComponentSelectionControl.AvailableThemeComponents>
|
||||||
<MultiBinding Converter="{StaticResource AvailableThemeComponentsConverter}">
|
<MultiBinding Converter="{StaticResource AvailableThemeComponentsConverter}">
|
||||||
<Binding Path="DataContext.Script.ThemeComponents" RelativeSource="{RelativeSource AncestorType={x:Type views:ItemFilterScriptView}}"/>
|
<Binding Path="DataContext.Script.ThemeComponents" RelativeSource="{RelativeSource AncestorType={x:Type views:ItemFilterScriptView}}"/>
|
||||||
<Binding Path="." />
|
<Binding Path="." />
|
||||||
</MultiBinding>
|
</MultiBinding>
|
||||||
</userControls:ThemeComponentSelectionControl.AvailableThemeComponents>
|
</userControls:ThemeComponentSelectionControl.AvailableThemeComponents>
|
||||||
</userControls:ThemeComponentSelectionControl>
|
</userControls:ThemeComponentSelectionControl>-->
|
||||||
</Grid>
|
</Grid>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
@@ -197,14 +199,15 @@
|
|||||||
DisplayMemberPath="Description"
|
DisplayMemberPath="Description"
|
||||||
SelectedValue="{Binding Shape}"
|
SelectedValue="{Binding Shape}"
|
||||||
SelectedValuePath="Value" />
|
SelectedValuePath="Value" />
|
||||||
<userControls:ThemeComponentSelectionControl ThemeComponent="{Binding ThemeComponent}" Margin="0,2,0,0">
|
<!-- Disabled until there is a solution to GitHub Issue #68 (certain block items do not support trailing comments) -->
|
||||||
|
<!--<userControls:ThemeComponentSelectionControl ThemeComponent="{Binding ThemeComponent}" Margin="0,2,0,0">
|
||||||
<userControls:ThemeComponentSelectionControl.AvailableThemeComponents>
|
<userControls:ThemeComponentSelectionControl.AvailableThemeComponents>
|
||||||
<MultiBinding Converter="{StaticResource AvailableThemeComponentsConverter}">
|
<MultiBinding Converter="{StaticResource AvailableThemeComponentsConverter}">
|
||||||
<Binding Path="DataContext.Script.ThemeComponents" RelativeSource="{RelativeSource AncestorType={x:Type views:ItemFilterScriptView}}"/>
|
<Binding Path="DataContext.Script.ThemeComponents" RelativeSource="{RelativeSource AncestorType={x:Type views:ItemFilterScriptView}}"/>
|
||||||
<Binding Path="." />
|
<Binding Path="." />
|
||||||
</MultiBinding>
|
</MultiBinding>
|
||||||
</userControls:ThemeComponentSelectionControl.AvailableThemeComponents>
|
</userControls:ThemeComponentSelectionControl.AvailableThemeComponents>
|
||||||
</userControls:ThemeComponentSelectionControl>
|
</userControls:ThemeComponentSelectionControl>-->
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ using GalaSoft.MvvmLight.CommandWpf;
|
|||||||
using GalaSoft.MvvmLight.Messaging;
|
using GalaSoft.MvvmLight.Messaging;
|
||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
using Xceed.Wpf.Toolkit;
|
using Xceed.Wpf.Toolkit;
|
||||||
|
using static System.Int32;
|
||||||
|
|
||||||
namespace Filtration.ViewModels
|
namespace Filtration.ViewModels
|
||||||
{
|
{
|
||||||
@@ -59,8 +60,7 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
public override void Initialise(IItemFilterBlockBase itemFilterBlockBase, IItemFilterScriptViewModel parentScriptViewModel)
|
public override void Initialise(IItemFilterBlockBase itemFilterBlockBase, IItemFilterScriptViewModel parentScriptViewModel)
|
||||||
{
|
{
|
||||||
var itemFilterBlock = itemFilterBlockBase as IItemFilterBlock;
|
if (!(itemFilterBlockBase is IItemFilterBlock itemFilterBlock) || parentScriptViewModel == null)
|
||||||
if (itemFilterBlock == null || parentScriptViewModel == null)
|
|
||||||
{
|
{
|
||||||
throw new ArgumentNullException(nameof(itemFilterBlock));
|
throw new ArgumentNullException(nameof(itemFilterBlock));
|
||||||
}
|
}
|
||||||
@@ -136,7 +136,7 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
public bool AudioVisualBlockItemsGridVisible
|
public bool AudioVisualBlockItemsGridVisible
|
||||||
{
|
{
|
||||||
get { return _audioVisualBlockItemsGridVisible; }
|
get => _audioVisualBlockItemsGridVisible;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_audioVisualBlockItemsGridVisible = value;
|
_audioVisualBlockItemsGridVisible = value;
|
||||||
@@ -150,7 +150,7 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
public bool DisplaySettingsPopupOpen
|
public bool DisplaySettingsPopupOpen
|
||||||
{
|
{
|
||||||
get { return _displaySettingsPopupOpen; }
|
get => _displaySettingsPopupOpen;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_displaySettingsPopupOpen = value;
|
_displaySettingsPopupOpen = value;
|
||||||
@@ -162,6 +162,8 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
public IEnumerable<string> AutoCompleteItemBaseTypes => _staticDataService.ItemBaseTypes;
|
public IEnumerable<string> AutoCompleteItemBaseTypes => _staticDataService.ItemBaseTypes;
|
||||||
|
|
||||||
|
public IEnumerable<string> AutocompleteItemMods => _staticDataService.ItemMods;
|
||||||
|
|
||||||
public List<Type> BlockItemTypesAvailable => new List<Type>
|
public List<Type> BlockItemTypesAvailable => new List<Type>
|
||||||
{
|
{
|
||||||
typeof (ItemLevelBlockItem),
|
typeof (ItemLevelBlockItem),
|
||||||
@@ -203,7 +205,7 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
public bool BlockEnabled
|
public bool BlockEnabled
|
||||||
{
|
{
|
||||||
get { return Block.Enabled; }
|
get => Block.Enabled;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (Block.Enabled != value)
|
if (Block.Enabled != value)
|
||||||
@@ -217,10 +219,7 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
public string BlockDescription
|
public string BlockDescription
|
||||||
{
|
{
|
||||||
get
|
get => Block.Description;
|
||||||
{
|
|
||||||
return Block.Description;
|
|
||||||
}
|
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (Block.Description != value)
|
if (Block.Description != value)
|
||||||
@@ -267,8 +266,7 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
newBlockItem.PropertyChanged += OnBlockItemChanged;
|
newBlockItem.PropertyChanged += OnBlockItemChanged;
|
||||||
|
|
||||||
var customSoundBlockItem = newBlockItem as CustomSoundBlockItem;
|
if(newBlockItem is CustomSoundBlockItem customSoundBlockItem && _parentScriptViewModel.CustomSoundsAvailable.Count > 0)
|
||||||
if(customSoundBlockItem != null && _parentScriptViewModel.CustomSoundsAvailable.Count > 0)
|
|
||||||
{
|
{
|
||||||
customSoundBlockItem.Value = _parentScriptViewModel.CustomSoundsAvailable[0];
|
customSoundBlockItem.Value = _parentScriptViewModel.CustomSoundsAvailable[0];
|
||||||
}
|
}
|
||||||
@@ -362,17 +360,15 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
private string ComputeFilePartFromNumber(string identifier)
|
private string ComputeFilePartFromNumber(string identifier)
|
||||||
{
|
{
|
||||||
if (Int32.TryParse(identifier, out int x))
|
if (TryParse(identifier, out int x))
|
||||||
{
|
{
|
||||||
if (x <= 9)
|
if (x <= 9)
|
||||||
{
|
{
|
||||||
return "AlertSound_0" + x + ".mp3";
|
return "AlertSound_0" + x + ".mp3";
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
return "AlertSound_" + x + ".mp3";
|
return "AlertSound_" + x + ".mp3";
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
@@ -429,12 +425,10 @@ namespace Filtration.ViewModels
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
_mediaPlayer.Open(new Uri(prefix + filePart, UriKind.Relative));
|
_mediaPlayer.Open(new Uri(prefix + filePart, UriKind.Relative));
|
||||||
_mediaPlayer.Play();
|
_mediaPlayer.Play();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private void OnPlayPositionalSoundCommand()
|
private void OnPlayPositionalSoundCommand()
|
||||||
{
|
{
|
||||||
@@ -446,12 +440,10 @@ namespace Filtration.ViewModels
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
_mediaPlayer.Open(new Uri(prefix + filePart, UriKind.Relative));
|
_mediaPlayer.Open(new Uri(prefix + filePart, UriKind.Relative));
|
||||||
_mediaPlayer.Play();
|
_mediaPlayer.Play();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private void OnBlockEnabledStatusChanged(object sender, EventArgs e)
|
private void OnBlockEnabledStatusChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
@@ -460,13 +452,12 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
private void OnBlockItemChanged(object sender, EventArgs e)
|
private void OnBlockItemChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var itemFilterBlockItem = sender as IItemFilterBlockItem;
|
if (sender is IItemFilterBlockItem itemFilterBlockItem && itemFilterBlockItem.IsDirty)
|
||||||
if ( itemFilterBlockItem != null && itemFilterBlockItem.IsDirty)
|
|
||||||
{
|
{
|
||||||
IsDirty = true;
|
IsDirty = true;
|
||||||
}
|
}
|
||||||
var customSoundBlockItem = sender as CustomSoundBlockItem;
|
|
||||||
if (customSoundBlockItem != null)
|
if (sender is CustomSoundBlockItem customSoundBlockItem)
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrWhiteSpace(customSoundBlockItem.Value) && _parentScriptViewModel.CustomSoundsAvailable.IndexOf(customSoundBlockItem.Value) < 0)
|
if (!string.IsNullOrWhiteSpace(customSoundBlockItem.Value) && _parentScriptViewModel.CustomSoundsAvailable.IndexOf(customSoundBlockItem.Value) < 0)
|
||||||
{
|
{
|
||||||
@@ -505,12 +496,11 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
private void OnCustomSoundFileDialog()
|
private void OnCustomSoundFileDialog()
|
||||||
{
|
{
|
||||||
OpenFileDialog fileDialog = new OpenFileDialog();
|
OpenFileDialog fileDialog = new OpenFileDialog {DefaultExt = ".mp3"};
|
||||||
fileDialog.DefaultExt = ".mp3";
|
var poePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\My Games\Path of Exile\";
|
||||||
var poePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments).ToString() + @"\My Games\Path of Exile\";
|
|
||||||
fileDialog.InitialDirectory = poePath;
|
fileDialog.InitialDirectory = poePath;
|
||||||
|
|
||||||
Nullable<bool> result = fileDialog.ShowDialog();
|
bool? result = fileDialog.ShowDialog();
|
||||||
if (result == true)
|
if (result == true)
|
||||||
{
|
{
|
||||||
var fileName = fileDialog.FileName;
|
var fileName = fileDialog.FileName;
|
||||||
@@ -531,7 +521,7 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
private void OnPlayCustomSoundCommand()
|
private void OnPlayCustomSoundCommand()
|
||||||
{
|
{
|
||||||
var poePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments).ToString() + @"\My Games\Path of Exile\";
|
var poePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\My Games\Path of Exile\";
|
||||||
var identifier = BlockItems.OfType<CustomSoundBlockItem>().First().Value;
|
var identifier = BlockItems.OfType<CustomSoundBlockItem>().First().Value;
|
||||||
|
|
||||||
if(!Path.IsPathRooted(identifier))
|
if(!Path.IsPathRooted(identifier))
|
||||||
@@ -567,9 +557,11 @@ namespace Filtration.ViewModels
|
|||||||
var newGroup = new ItemFilterBlockGroup(BlockGroupSearch, null, AdvancedBlockGroup, false);
|
var newGroup = new ItemFilterBlockGroup(BlockGroupSearch, null, AdvancedBlockGroup, false);
|
||||||
if (baseBlock.BlockGroup == null)
|
if (baseBlock.BlockGroup == null)
|
||||||
{
|
{
|
||||||
baseBlock.BlockGroup = new ItemFilterBlockGroup("", null, false, true);
|
baseBlock.BlockGroup = new ItemFilterBlockGroup("", null, false, true)
|
||||||
baseBlock.BlockGroup.IsShowChecked = baseBlock.Action == BlockAction.Show;
|
{
|
||||||
baseBlock.BlockGroup.IsEnableChecked = BlockEnabled;
|
IsShowChecked = baseBlock.Action == BlockAction.Show,
|
||||||
|
IsEnableChecked = BlockEnabled
|
||||||
|
};
|
||||||
}
|
}
|
||||||
newGroup.AddOrJoinBlockGroup(baseBlock.BlockGroup);
|
newGroup.AddOrJoinBlockGroup(baseBlock.BlockGroup);
|
||||||
blockToAdd.AddOrJoinBlockGroup(newGroup);
|
blockToAdd.AddOrJoinBlockGroup(newGroup);
|
||||||
@@ -609,8 +601,7 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
private void UpdateBlockGroups()
|
private void UpdateBlockGroups()
|
||||||
{
|
{
|
||||||
var baseBlock = Block as ItemFilterBlock;
|
if (!(Block is ItemFilterBlock baseBlock))
|
||||||
if (baseBlock == null)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var currentGroup = baseBlock.BlockGroup;
|
var currentGroup = baseBlock.BlockGroup;
|
||||||
|
|||||||
@@ -144,7 +144,6 @@ namespace Filtration.ViewModels
|
|||||||
{
|
{
|
||||||
Visible = true;
|
Visible = true;
|
||||||
NextStepButtonText = "Download";
|
NextStepButtonText = "Download";
|
||||||
RaisePropertyChanged(nameof(ReleaseNotes));
|
|
||||||
RaisePropertyChanged(nameof(Version));
|
RaisePropertyChanged(nameof(Version));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -156,6 +155,7 @@ namespace Filtration.ViewModels
|
|||||||
}
|
}
|
||||||
case UpdateStatus.ReadyToApplyUpdate:
|
case UpdateStatus.ReadyToApplyUpdate:
|
||||||
{
|
{
|
||||||
|
RaisePropertyChanged(nameof(ReleaseNotes));
|
||||||
NextStepButtonText = "Update Ready";
|
NextStepButtonText = "Update Ready";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
Filtration is an editor for Path of Exile item filter scripts.
|
Filtration is an editor for Path of Exile item filter scripts.
|
||||||
|
|
||||||
## Current Release (Released 2018-08-30)
|
## Current Release (Released 2018-09-01)
|
||||||
<b>Installer</b> <a href="https://github.com/ben-wallis/Filtration/releases/download/0.19/filtration_0.19_setup.exe">filtration_0.19_setup.exe</a>
|
<b>Installer</b> <a href="https://github.com/ben-wallis/Filtration/releases/download/0.20/filtration_0.20_setup.exe">filtration_0.20_setup.exe</a>
|
||||||
|
|
||||||
<b>Zip File</b> <a href="https://github.com/ben-wallis/Filtration/releases/download/0.19/filtration_0.19.zip">filtration_0.19.zip</a>
|
<b>Zip File</b> <a href="https://github.com/ben-wallis/Filtration/releases/download/0.20/filtration_0.20.zip">filtration_0.20.zip</a>
|
||||||
|
|
||||||
## System Requirements
|
## System Requirements
|
||||||
Filtration requires .NET Framework 4.6.1 installed.
|
Filtration requires .NET Framework 4.6.1 installed.
|
||||||
|
|||||||
Reference in New Issue
Block a user