Compare commits
65 Commits
0.18
...
1.0.0-beta
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6007306346 | ||
|
|
992bd21570 | ||
|
|
7d8b32b2e7 | ||
|
|
ac904c31ff | ||
|
|
f51fe315ad | ||
|
|
3ce2e12f56 | ||
|
|
43e5b30080 | ||
|
|
bc99339390 | ||
|
|
781faae85d | ||
|
|
c926808878 | ||
|
|
24d9f97717 | ||
|
|
7e4e6fe42e | ||
|
|
c6d75cfff6 | ||
|
|
2f30eade7c | ||
|
|
e719f0bce0 | ||
|
|
dffbbf3591 | ||
|
|
07a7e8d05c | ||
|
|
1ba224906c | ||
|
|
32523787d2 | ||
|
|
ac6943d73b | ||
|
|
36c0aaea17 | ||
|
|
4b38a6a4e0 | ||
|
|
9c44dd7e7d | ||
|
|
18c878e350 | ||
|
|
5d30888597 | ||
|
|
bfd722d362 | ||
|
|
d23741555a | ||
|
|
820aa5499e | ||
|
|
1ee38b4c0e | ||
|
|
4bed777427 | ||
|
|
1f6cbeec86 | ||
|
|
550a2d8f25 | ||
|
|
ae38197052 | ||
|
|
4fd4ffc520 | ||
|
|
e15efe4e15 | ||
|
|
196db4c730 | ||
|
|
910b2b8c7f | ||
|
|
b31ce1d843 | ||
|
|
99a011c78c | ||
|
|
69ce542c1a | ||
|
|
2ff9ebf242 | ||
|
|
0eff63d706 | ||
|
|
1b8f37ca3a | ||
|
|
b4f02f872e | ||
|
|
cfef82e53a | ||
|
|
bdd121f48c | ||
|
|
0209de3817 | ||
|
|
1e26a2ae3e | ||
|
|
54b72e44b0 | ||
|
|
24df1d7687 | ||
|
|
7162e16b49 | ||
|
|
324ce4d0b3 | ||
|
|
de489e8b2c | ||
|
|
341b1d1eb2 | ||
|
|
6be29dbd28 | ||
|
|
3851ad51e1 | ||
|
|
65d3e07156 | ||
|
|
a86ab3ec8d | ||
|
|
41722e8a57 | ||
|
|
3cb0a041d7 | ||
|
|
c8778bb1eb | ||
|
|
8e849d6a8f | ||
|
|
0d3f01a856 | ||
|
|
178ff579c6 | ||
|
|
30aa52e788 |
@@ -31,9 +31,24 @@
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="GalaSoft.MvvmLight, Version=5.3.0.19026, Culture=neutral, PublicKeyToken=e7570ab207bcb616, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MvvmLightLibs.5.3.0.0\lib\net45\GalaSoft.MvvmLight.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GalaSoft.MvvmLight.Extras, Version=5.3.0.19032, Culture=neutral, PublicKeyToken=669f0b5e8f868abf, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MvvmLightLibs.5.3.0.0\lib\net45\GalaSoft.MvvmLight.Extras.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GalaSoft.MvvmLight.Platform, Version=5.3.0.19032, Culture=neutral, PublicKeyToken=5f873c45e98af8a1, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MvvmLightLibs.5.3.0.0\lib\net45\GalaSoft.MvvmLight.Platform.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Practices.ServiceLocation, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\CommonServiceLocator.1.3\lib\portable-net4+sl5+netcore45+wpa81+wp8\Microsoft.Practices.ServiceLocation.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MvvmLightLibs.5.3.0.0\lib\net45\System.Windows.Interactivity.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
@@ -46,6 +61,9 @@
|
||||
<Compile Include="IEditableDocument.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Input;
|
||||
using GalaSoft.MvvmLight.CommandWpf;
|
||||
|
||||
namespace Filtration.Interface
|
||||
{
|
||||
@@ -7,5 +9,6 @@ namespace Filtration.Interface
|
||||
bool IsScript { get; }
|
||||
bool IsTheme { get; }
|
||||
Task Close();
|
||||
RelayCommand CloseCommand { get; }
|
||||
}
|
||||
}
|
||||
|
||||
5
Filtration.Interface/packages.config
Normal file
5
Filtration.Interface/packages.config
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="CommonServiceLocator" version="1.3" targetFramework="net461" />
|
||||
<package id="MvvmLightLibs" version="5.3.0.0" targetFramework="net461" />
|
||||
</packages>
|
||||
@@ -27,8 +27,6 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
|
||||
}
|
||||
}
|
||||
|
||||
public string Comment { get; set; }
|
||||
|
||||
public override string OutputText => Action.GetAttributeDescription();
|
||||
|
||||
public override string PrefixText => string.Empty;
|
||||
|
||||
@@ -17,6 +17,7 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
|
||||
public abstract Color SummaryBackgroundColor { get; }
|
||||
public abstract Color SummaryTextColor { get; }
|
||||
public abstract int SortOrder { get; }
|
||||
public string Comment { get; set; }
|
||||
|
||||
public bool IsDirty
|
||||
{
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes
|
||||
}
|
||||
|
||||
public override string OutputText => PrefixText + " " + +Color.R + " " + Color.G + " "
|
||||
+ Color.B + (Color.A < 255 ? " " + Color.A : string.Empty) +
|
||||
+ Color.B + (Color.A != 240 ? " " + Color.A : string.Empty) +
|
||||
(ThemeComponent != null ? " # " + ThemeComponent.ComponentName : string.Empty);
|
||||
|
||||
public override string SummaryText => string.Empty;
|
||||
|
||||
@@ -7,6 +7,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||
{
|
||||
public BackgroundColorBlockItem()
|
||||
{
|
||||
Color = new Color { A = 240, R = 0, G = 0, B = 0 };
|
||||
}
|
||||
|
||||
public BackgroundColorBlockItem(Color color) : base(color)
|
||||
|
||||
@@ -7,6 +7,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||
{
|
||||
public BorderColorBlockItem()
|
||||
{
|
||||
Color = new Color {A = 240, R = 0, G = 0, B = 0};
|
||||
}
|
||||
|
||||
public BorderColorBlockItem(Color color) : base(color)
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||
public class HasExplicitModBlockItem : StringListBlockItem
|
||||
{
|
||||
public override string PrefixText => "HasExplicitMod";
|
||||
public override int MaximumAllowed => 1;
|
||||
public override int MaximumAllowed => 8;
|
||||
public override string DisplayHeading => "Has Explicit Mod";
|
||||
|
||||
public override string SummaryText
|
||||
|
||||
@@ -23,6 +23,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||
public override Color SummaryTextColor => Colors.White;
|
||||
public override int SortOrder => 3;
|
||||
public override int Minimum => 0;
|
||||
public override int Maximum => 20;
|
||||
public override int Maximum => 30;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.Windows.Media;
|
||||
using Filtration.ObjectModel.BlockItemBaseTypes;
|
||||
using Filtration.ObjectModel.Enums;
|
||||
|
||||
namespace Filtration.ObjectModel.BlockItemTypes
|
||||
{
|
||||
@@ -7,6 +8,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||
{
|
||||
public TextColorBlockItem()
|
||||
{
|
||||
Color = PathOfExileNamedColors.Colors[PathOfExileNamedColor.WhiteItem];
|
||||
}
|
||||
|
||||
public TextColorBlockItem(Color color) : base(color)
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace Filtration.ObjectModel.Commands.ItemFilterScript
|
||||
{
|
||||
public class MoveBlockDownCommand : IUndoableCommand
|
||||
{
|
||||
private readonly IItemFilterScript _itemFilterScript;
|
||||
private readonly IItemFilterBlockBase _blockToMove;
|
||||
private int _indexMovedFrom;
|
||||
|
||||
public MoveBlockDownCommand(IItemFilterScript itemFilterScript, IItemFilterBlockBase blockToMove)
|
||||
{
|
||||
_itemFilterScript = itemFilterScript;
|
||||
_blockToMove = blockToMove;
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
_indexMovedFrom = _itemFilterScript.ItemFilterBlocks.IndexOf(_blockToMove);
|
||||
|
||||
if (_indexMovedFrom >= _itemFilterScript.ItemFilterBlocks.Count)
|
||||
{
|
||||
throw new InvalidOperationException("Cannot move the bottom block down");
|
||||
}
|
||||
|
||||
_itemFilterScript.ItemFilterBlocks.Remove(_blockToMove);
|
||||
_itemFilterScript.ItemFilterBlocks.Insert(_indexMovedFrom + 1, _blockToMove);
|
||||
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.Remove(_blockToMove);
|
||||
_itemFilterScript.ItemFilterBlocks.Insert(_indexMovedFrom, _blockToMove);
|
||||
}
|
||||
|
||||
public void Redo() => Execute();
|
||||
}
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
namespace Filtration.ObjectModel.Commands.ItemFilterScript
|
||||
{
|
||||
public class MoveBlockToBottomCommand : IUndoableCommand
|
||||
{
|
||||
private readonly IItemFilterScript _itemFilterScript;
|
||||
private readonly IItemFilterBlockBase _blockToMove;
|
||||
private int _indexMovedFrom;
|
||||
|
||||
public MoveBlockToBottomCommand(IItemFilterScript itemFilterScript, IItemFilterBlockBase blockToMove)
|
||||
{
|
||||
_itemFilterScript = itemFilterScript;
|
||||
_blockToMove = blockToMove;
|
||||
}
|
||||
public void Execute()
|
||||
{
|
||||
_indexMovedFrom = _itemFilterScript.ItemFilterBlocks.IndexOf(_blockToMove);
|
||||
|
||||
_itemFilterScript.ItemFilterBlocks.Remove(_blockToMove);
|
||||
_itemFilterScript.ItemFilterBlocks.Add(_blockToMove);
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.Remove(_blockToMove);
|
||||
_itemFilterScript.ItemFilterBlocks.Insert(_indexMovedFrom, _blockToMove);
|
||||
}
|
||||
|
||||
public void Redo() => Execute();
|
||||
}
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
namespace Filtration.ObjectModel.Commands.ItemFilterScript
|
||||
{
|
||||
public class MoveBlockToTopCommand : IUndoableCommand
|
||||
{
|
||||
private readonly IItemFilterScript _itemFilterScript;
|
||||
private readonly IItemFilterBlockBase _blockToMove;
|
||||
private int _indexMovedFrom;
|
||||
|
||||
public MoveBlockToTopCommand(IItemFilterScript itemFilterScript, IItemFilterBlockBase blockToMove)
|
||||
{
|
||||
_itemFilterScript = itemFilterScript;
|
||||
_blockToMove = blockToMove;
|
||||
}
|
||||
public void Execute()
|
||||
{
|
||||
_indexMovedFrom = _itemFilterScript.ItemFilterBlocks.IndexOf(_blockToMove);
|
||||
|
||||
_itemFilterScript.ItemFilterBlocks.Remove(_blockToMove);
|
||||
_itemFilterScript.ItemFilterBlocks.Insert(0, _blockToMove);
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.Remove(_blockToMove);
|
||||
_itemFilterScript.ItemFilterBlocks.Insert(_indexMovedFrom, _blockToMove);
|
||||
}
|
||||
|
||||
public void Redo() => Execute();
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace Filtration.ObjectModel.Commands.ItemFilterScript
|
||||
{
|
||||
public class MoveBlockUpCommand : IUndoableCommand
|
||||
{
|
||||
private readonly IItemFilterScript _itemFilterScript;
|
||||
private readonly IItemFilterBlockBase _blockToMove;
|
||||
private int _indexMovedFrom;
|
||||
|
||||
public MoveBlockUpCommand(IItemFilterScript itemFilterScript, IItemFilterBlockBase blockToMove)
|
||||
{
|
||||
_itemFilterScript = itemFilterScript;
|
||||
_blockToMove = blockToMove;
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
_indexMovedFrom = _itemFilterScript.ItemFilterBlocks.IndexOf(_blockToMove);
|
||||
|
||||
if (_indexMovedFrom <= 0)
|
||||
{
|
||||
throw new InvalidOperationException("Cannot move the top block up");
|
||||
}
|
||||
|
||||
_itemFilterScript.ItemFilterBlocks.Remove(_blockToMove);
|
||||
_itemFilterScript.ItemFilterBlocks.Insert(_indexMovedFrom-1, _blockToMove);
|
||||
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.Remove(_blockToMove);
|
||||
_itemFilterScript.ItemFilterBlocks.Insert(_indexMovedFrom, _blockToMove);
|
||||
}
|
||||
|
||||
public void Redo() => Execute();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Filtration.ObjectModel.Commands.ItemFilterScript
|
||||
{
|
||||
public class MoveBlocksToBottomCommand : IUndoableCommand
|
||||
{
|
||||
private readonly IItemFilterScript _itemFilterScript;
|
||||
private readonly List<int> _sourceIndexes;
|
||||
|
||||
public MoveBlocksToBottomCommand(IItemFilterScript itemFilterScript, IItemFilterBlockBase block)
|
||||
{
|
||||
_itemFilterScript = itemFilterScript;
|
||||
_sourceIndexes = new List<int> { _itemFilterScript.ItemFilterBlocks.IndexOf(block) };
|
||||
}
|
||||
|
||||
public MoveBlocksToBottomCommand(IItemFilterScript itemFilterScript, List<int> sourceIndexes)
|
||||
{
|
||||
_itemFilterScript = itemFilterScript;
|
||||
_sourceIndexes = sourceIndexes;
|
||||
_sourceIndexes.Sort();
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
List<IItemFilterBlockBase> blocksToMove = new List<IItemFilterBlockBase>();
|
||||
for (var i = 0; i < _sourceIndexes.Count; i++)
|
||||
{
|
||||
blocksToMove.Add(_itemFilterScript.ItemFilterBlocks[_sourceIndexes[i]]);
|
||||
}
|
||||
|
||||
for (var i = _sourceIndexes.Count - 1; i >= 0; i--)
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.RemoveAt(_sourceIndexes[i]);
|
||||
}
|
||||
|
||||
foreach (var block in blocksToMove)
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.Add(block);
|
||||
}
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
List<IItemFilterBlockBase> blocksToMove = new List<IItemFilterBlockBase>();
|
||||
for (var i = 0; i < _sourceIndexes.Count; i++)
|
||||
{
|
||||
var movedIndex = _itemFilterScript.ItemFilterBlocks.Count - _sourceIndexes.Count;
|
||||
blocksToMove.Add(_itemFilterScript.ItemFilterBlocks[movedIndex]);
|
||||
_itemFilterScript.ItemFilterBlocks.RemoveAt(movedIndex);
|
||||
}
|
||||
|
||||
for (var i = 0; i < _sourceIndexes.Count; i++)
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.Insert(_sourceIndexes[i], blocksToMove[i]);
|
||||
}
|
||||
}
|
||||
|
||||
public void Redo() => Execute();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Filtration.ObjectModel.Commands.ItemFilterScript
|
||||
{
|
||||
public class MoveBlocksToIndexCommand : IUndoableCommand
|
||||
{
|
||||
private readonly IItemFilterScript _itemFilterScript;
|
||||
private List<int> _sourceIndexes;
|
||||
private int _targetIndex;
|
||||
|
||||
public MoveBlocksToIndexCommand(IItemFilterScript itemFilterScript, IItemFilterBlockBase block, int targetIndex)
|
||||
{
|
||||
_itemFilterScript = itemFilterScript;
|
||||
_sourceIndexes = new List<int> { _itemFilterScript.ItemFilterBlocks.IndexOf(block) };
|
||||
_targetIndex = targetIndex;
|
||||
}
|
||||
|
||||
public MoveBlocksToIndexCommand(IItemFilterScript itemFilterScript, List<int> sourceIndexes, int targetIndex)
|
||||
{
|
||||
_itemFilterScript = itemFilterScript;
|
||||
_sourceIndexes = sourceIndexes;
|
||||
_sourceIndexes.Sort();
|
||||
_targetIndex = targetIndex;
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
List<IItemFilterBlockBase> blocksToMove = new List<IItemFilterBlockBase>();
|
||||
for (var i = 0; i < _sourceIndexes.Count; i++)
|
||||
{
|
||||
blocksToMove.Add(_itemFilterScript.ItemFilterBlocks[_sourceIndexes[i]]);
|
||||
}
|
||||
|
||||
for (var i = _sourceIndexes.Count - 1; i >= 0; i--)
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.RemoveAt(_sourceIndexes[i]);
|
||||
}
|
||||
|
||||
for (var i = 0; i < blocksToMove.Count; i++)
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.Insert(_targetIndex + i, blocksToMove[i]);
|
||||
}
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
List<IItemFilterBlockBase> blocksToMove = new List<IItemFilterBlockBase>();
|
||||
for (var i = 0; i < _sourceIndexes.Count; i++)
|
||||
{
|
||||
blocksToMove.Add(_itemFilterScript.ItemFilterBlocks[_targetIndex]);
|
||||
_itemFilterScript.ItemFilterBlocks.RemoveAt(_targetIndex);
|
||||
}
|
||||
|
||||
for (var i = 0; i < _sourceIndexes.Count; i++)
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.Insert(_sourceIndexes[i], blocksToMove[i]);
|
||||
}
|
||||
}
|
||||
|
||||
public void Redo() => Execute();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Filtration.ObjectModel.Commands.ItemFilterScript
|
||||
{
|
||||
public class MoveBlocksToTopCommand : IUndoableCommand
|
||||
{
|
||||
private readonly IItemFilterScript _itemFilterScript;
|
||||
private readonly List<int> _sourceIndexes;
|
||||
|
||||
public MoveBlocksToTopCommand(IItemFilterScript itemFilterScript, IItemFilterBlockBase block)
|
||||
{
|
||||
_itemFilterScript = itemFilterScript;
|
||||
_sourceIndexes = new List<int> { _itemFilterScript.ItemFilterBlocks.IndexOf(block) };
|
||||
}
|
||||
|
||||
public MoveBlocksToTopCommand(IItemFilterScript itemFilterScript, List<int> sourceIndexes)
|
||||
{
|
||||
_itemFilterScript = itemFilterScript;
|
||||
_sourceIndexes = sourceIndexes;
|
||||
_sourceIndexes.Sort();
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
List<IItemFilterBlockBase> blocksToMove = new List<IItemFilterBlockBase>();
|
||||
for (var i = 0; i < _sourceIndexes.Count; i++)
|
||||
{
|
||||
blocksToMove.Add(_itemFilterScript.ItemFilterBlocks[_sourceIndexes[i]]);
|
||||
}
|
||||
|
||||
for (var i = _sourceIndexes.Count - 1; i >= 0; i--)
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.RemoveAt(_sourceIndexes[i]);
|
||||
}
|
||||
|
||||
for (var i = 0; i < _sourceIndexes.Count; i++)
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.Insert(i, blocksToMove[i]);
|
||||
}
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
List<IItemFilterBlockBase> blocksToMove = new List<IItemFilterBlockBase>();
|
||||
for (var i = 0; i < _sourceIndexes.Count; i++)
|
||||
{
|
||||
blocksToMove.Add(_itemFilterScript.ItemFilterBlocks[0]);
|
||||
_itemFilterScript.ItemFilterBlocks.RemoveAt(0);
|
||||
}
|
||||
|
||||
for (var i = 0; i < _sourceIndexes.Count; i++)
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.Insert(_sourceIndexes[i], blocksToMove[i]);
|
||||
}
|
||||
}
|
||||
|
||||
public void Redo() => Execute();
|
||||
}
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Filtration.ObjectModel.Commands.ItemFilterScript
|
||||
{
|
||||
public class MoveSectionToIndexCommand : IUndoableCommand
|
||||
{
|
||||
private readonly IItemFilterScript _itemFilterScript;
|
||||
private int _sectionStart;
|
||||
private int _sectionSize;
|
||||
private int _index;
|
||||
|
||||
public MoveSectionToIndexCommand(IItemFilterScript itemFilterScript, int sectionStart, int sectionSize, int index)
|
||||
{
|
||||
_itemFilterScript = itemFilterScript;
|
||||
_sectionStart = sectionStart;
|
||||
_sectionSize = sectionSize;
|
||||
_index = index;
|
||||
}
|
||||
public void Execute()
|
||||
{
|
||||
List<IItemFilterBlockBase> blocksToMove = new List<IItemFilterBlockBase>();
|
||||
for(var i = 0; i < _sectionSize; i++)
|
||||
{
|
||||
blocksToMove.Add(_itemFilterScript.ItemFilterBlocks[_sectionStart]);
|
||||
_itemFilterScript.ItemFilterBlocks.RemoveAt(_sectionStart);
|
||||
}
|
||||
for (var i = 0; i < _sectionSize; i++)
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.Insert(_index + i, blocksToMove[i]);
|
||||
}
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
List<IItemFilterBlockBase> blocksToMove = new List<IItemFilterBlockBase>();
|
||||
for (var i = 0; i < _sectionSize; i++)
|
||||
{
|
||||
blocksToMove.Add(_itemFilterScript.ItemFilterBlocks[_index]);
|
||||
_itemFilterScript.ItemFilterBlocks.RemoveAt(_index);
|
||||
}
|
||||
for (var i = 0; i < _sectionSize; i++)
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.Insert(_sectionStart + i, blocksToMove[i]);
|
||||
}
|
||||
}
|
||||
|
||||
public void Redo() => Execute();
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace Filtration.ObjectModel.Commands.ItemFilterScript
|
||||
{
|
||||
public class PasteBlockCommand : IUndoableCommand
|
||||
{
|
||||
private readonly IItemFilterScript _itemFilterScript;
|
||||
private readonly IItemFilterBlockBase _pastedItemFilterBlock;
|
||||
private readonly IItemFilterBlockBase _addAfterItemFilterBlock;
|
||||
|
||||
public PasteBlockCommand(IItemFilterScript itemFilterScript, IItemFilterBlockBase pastedItemFilterBlock, IItemFilterBlockBase addAfterItemFilterBlock)
|
||||
{
|
||||
_itemFilterScript = itemFilterScript;
|
||||
_pastedItemFilterBlock = pastedItemFilterBlock;
|
||||
_addAfterItemFilterBlock = addAfterItemFilterBlock;
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
if (_addAfterItemFilterBlock != null)
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.Insert(_itemFilterScript.ItemFilterBlocks.IndexOf(_addAfterItemFilterBlock) + 1, _pastedItemFilterBlock);
|
||||
}
|
||||
else
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.Add(_pastedItemFilterBlock);
|
||||
}
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.Remove(_pastedItemFilterBlock);
|
||||
}
|
||||
|
||||
public void Redo() => Execute();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Filtration.ObjectModel.Commands.ItemFilterScript
|
||||
{
|
||||
public class PasteBlocksCommand : IUndoableCommand
|
||||
{
|
||||
private readonly IItemFilterScript _itemFilterScript;
|
||||
private readonly List<IItemFilterBlockBase> _pastedItemFilterBlocks;
|
||||
private readonly IItemFilterBlockBase _addAfterItemFilterBlock;
|
||||
|
||||
public PasteBlocksCommand(IItemFilterScript itemFilterScript, IItemFilterBlockBase block, IItemFilterBlockBase addAfterItemFilterBlock)
|
||||
{
|
||||
_itemFilterScript = itemFilterScript;
|
||||
_pastedItemFilterBlocks = new List<IItemFilterBlockBase> { block };
|
||||
_addAfterItemFilterBlock = addAfterItemFilterBlock;
|
||||
}
|
||||
|
||||
public PasteBlocksCommand(IItemFilterScript itemFilterScript, List<IItemFilterBlockBase> pastedItemFilterBlocks, IItemFilterBlockBase addAfterItemFilterBlock)
|
||||
{
|
||||
_itemFilterScript = itemFilterScript;
|
||||
_pastedItemFilterBlocks = pastedItemFilterBlocks;
|
||||
_addAfterItemFilterBlock = addAfterItemFilterBlock;
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
if (_addAfterItemFilterBlock != null)
|
||||
{
|
||||
var lastAddedBlock = _addAfterItemFilterBlock;
|
||||
foreach (var block in _pastedItemFilterBlocks)
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.Insert(_itemFilterScript.ItemFilterBlocks.IndexOf(lastAddedBlock) + 1, block);
|
||||
lastAddedBlock = block;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var block in _pastedItemFilterBlocks)
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.Add(block);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
foreach (var block in _pastedItemFilterBlocks)
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.Remove(block);
|
||||
}
|
||||
}
|
||||
|
||||
public void Redo() => Execute();
|
||||
}
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace Filtration.ObjectModel.Commands.ItemFilterScript
|
||||
{
|
||||
public class RemoveBlockCommand : IUndoableCommand
|
||||
{
|
||||
private readonly IItemFilterScript _itemFilterScript;
|
||||
private IItemFilterBlockBase _removedItemFilterBlock;
|
||||
private int _indexRemovedFrom;
|
||||
|
||||
public RemoveBlockCommand(IItemFilterScript itemFilterScript, IItemFilterBlockBase itemFilterBlockBase)
|
||||
{
|
||||
_itemFilterScript = itemFilterScript;
|
||||
_removedItemFilterBlock = itemFilterBlockBase;
|
||||
}
|
||||
public void Execute()
|
||||
{
|
||||
_indexRemovedFrom = _itemFilterScript.ItemFilterBlocks.IndexOf(_removedItemFilterBlock);
|
||||
_itemFilterScript.ItemFilterBlocks.Remove(_removedItemFilterBlock);
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.Insert(_indexRemovedFrom, _removedItemFilterBlock);
|
||||
}
|
||||
|
||||
public void Redo() => Execute();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Filtration.ObjectModel.Commands.ItemFilterScript
|
||||
{
|
||||
public class RemoveBlocksCommand : IUndoableCommand
|
||||
{
|
||||
private readonly IItemFilterScript _itemFilterScript;
|
||||
private List<IItemFilterBlockBase> _removedItemFilterBlocks;
|
||||
private List<int> _sourceIndexes;
|
||||
|
||||
public RemoveBlocksCommand(IItemFilterScript itemFilterScript, IItemFilterBlockBase block)
|
||||
{
|
||||
_itemFilterScript = itemFilterScript;
|
||||
_sourceIndexes = new List<int> { _itemFilterScript.ItemFilterBlocks.IndexOf(block) };
|
||||
_removedItemFilterBlocks = new List<IItemFilterBlockBase> { block };
|
||||
}
|
||||
|
||||
public RemoveBlocksCommand(IItemFilterScript itemFilterScript, List<int> sourceIndexes)
|
||||
{
|
||||
_itemFilterScript = itemFilterScript;
|
||||
_sourceIndexes = sourceIndexes;
|
||||
_sourceIndexes.Sort();
|
||||
_removedItemFilterBlocks = new List<IItemFilterBlockBase>();
|
||||
for (var i = 0; i < _sourceIndexes.Count; i++)
|
||||
{
|
||||
_removedItemFilterBlocks.Add(_itemFilterScript.ItemFilterBlocks[_sourceIndexes[i]]);
|
||||
}
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
for (var i = _sourceIndexes.Count - 1; i >= 0; i--)
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.RemoveAt(_sourceIndexes[i]);
|
||||
}
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
for (var i = 0; i < _sourceIndexes.Count; i++)
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.Insert(_sourceIndexes[i], _removedItemFilterBlocks[i]);
|
||||
}
|
||||
}
|
||||
|
||||
public void Redo() => Execute();
|
||||
}
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Filtration.ObjectModel.Commands.ItemFilterScript
|
||||
{
|
||||
public class RemoveSectionCommand : IUndoableCommand
|
||||
{
|
||||
private readonly IItemFilterScript _itemFilterScript;
|
||||
private List<IItemFilterBlockBase> _removedItemFilterBlocks;
|
||||
private int _sectionStart;
|
||||
private int _sectionSize;
|
||||
|
||||
public RemoveSectionCommand(IItemFilterScript itemFilterScript, int sectionStart, int sectionSize)
|
||||
{
|
||||
_itemFilterScript = itemFilterScript;
|
||||
_sectionStart = sectionStart;
|
||||
_sectionSize = sectionSize;
|
||||
_removedItemFilterBlocks = new List<IItemFilterBlockBase>();
|
||||
for(var i = 0; i < _sectionSize; i++)
|
||||
{
|
||||
_removedItemFilterBlocks.Add(_itemFilterScript.ItemFilterBlocks[_sectionStart + i]);
|
||||
}
|
||||
}
|
||||
public void Execute()
|
||||
{
|
||||
for (var i = 0; i < _sectionSize; i++)
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.RemoveAt(_sectionStart);
|
||||
}
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
for (var i = 0; i < _sectionSize; i++)
|
||||
{
|
||||
_itemFilterScript.ItemFilterBlocks.Insert(_sectionStart + i, _removedItemFilterBlocks[i]);
|
||||
}
|
||||
}
|
||||
|
||||
public void Redo() => Execute();
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,22 @@
|
||||
|
||||
namespace Filtration.ObjectModel.Enums
|
||||
{
|
||||
public enum IconColor
|
||||
/// <summary>
|
||||
/// Each of the colors supported by the MinimapIcon block rule.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// The ordering here should match the ordering of the colors within the source image.
|
||||
/// </remarks>
|
||||
public enum IconColor
|
||||
{
|
||||
[Description("Red")]
|
||||
[Description("Blue")]
|
||||
Blue,
|
||||
[Description("Green")]
|
||||
Green,
|
||||
[Description("Brown")]
|
||||
Brown,
|
||||
[Description("Red")]
|
||||
Red,
|
||||
[Description("Green")]
|
||||
Green,
|
||||
[Description("Blue")]
|
||||
Blue,
|
||||
[Description("Brown")]
|
||||
Brown,
|
||||
[Description("White")]
|
||||
White,
|
||||
[Description("Yellow")]
|
||||
|
||||
@@ -2,7 +2,13 @@
|
||||
|
||||
namespace Filtration.ObjectModel.Enums
|
||||
{
|
||||
public enum IconShape
|
||||
/// <summary>
|
||||
/// Each of the shapes supported by the MinimapIcon block rule.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// The ordering here should match the ordering of the shapes within the source image.
|
||||
/// </remarks>
|
||||
public enum IconShape
|
||||
{
|
||||
[Description("Circle")]
|
||||
Circle,
|
||||
|
||||
@@ -2,7 +2,13 @@
|
||||
|
||||
namespace Filtration.ObjectModel.Enums
|
||||
{
|
||||
public enum IconSize
|
||||
/// <summary>
|
||||
/// Each of the sizes supported by the MinimapIcon block rule.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// The ordering here should match the ordering of the sizes within the source image.
|
||||
/// </remarks>
|
||||
public enum IconSize
|
||||
{
|
||||
[Description("Largest")]
|
||||
Largest,
|
||||
|
||||
@@ -24,8 +24,8 @@ namespace Filtration.ObjectModel
|
||||
ItemFilterBlock = itemFilterBlock;
|
||||
|
||||
BlockAction = itemFilterBlock?.Action ?? BlockAction.Show;
|
||||
BackgroundColor = itemFilterBlock?.DisplayBackgroundColor ?? new Color { A = 255, R = 0, G = 0, B = 0 };
|
||||
BorderColor = itemFilterBlock?.DisplayBorderColor ?? new Color {A = 255, R = 0, G = 0, B = 0};
|
||||
BackgroundColor = itemFilterBlock?.DisplayBackgroundColor ?? new Color { A = 240, R = 0, G = 0, B = 0 };
|
||||
BorderColor = itemFilterBlock?.DisplayBorderColor ?? new Color {A = 240, R = 0, G = 0, B = 0};
|
||||
FontSize = (itemFilterBlock?.DisplayFontSize ?? 34) / 1.8;
|
||||
|
||||
SetTextColor();
|
||||
|
||||
@@ -110,17 +110,13 @@
|
||||
<Compile Include="BlockItemTypes\WidthBlockItem.cs" />
|
||||
<Compile Include="Commands\CommandManager.cs" />
|
||||
<Compile Include="Commands\ICommand.cs" />
|
||||
<Compile Include="Commands\ItemFilterScript\MoveSectionToIndexCommand.cs" />
|
||||
<Compile Include="Commands\ItemFilterScript\PasteBlockCommand.cs" />
|
||||
<Compile Include="Commands\ItemFilterScript\MoveBlockToBottomCommand.cs" />
|
||||
<Compile Include="Commands\ItemFilterScript\MoveBlocksToIndexCommand.cs" />
|
||||
<Compile Include="Commands\ItemFilterScript\MoveBlocksToBottomCommand.cs" />
|
||||
<Compile Include="Commands\ItemFilterScript\AddCommentBlockCommand.cs" />
|
||||
<Compile Include="Commands\ItemFilterScript\MoveBlockDownCommand.cs" />
|
||||
<Compile Include="Commands\ItemFilterScript\MoveBlockUpCommand.cs" />
|
||||
<Compile Include="Commands\ItemFilterScript\MoveBlockToTopCommand.cs" />
|
||||
<Compile Include="Commands\ItemFilterScript\PasteSectionCommand.cs" />
|
||||
<Compile Include="Commands\ItemFilterScript\RemoveSectionCommand.cs" />
|
||||
<Compile Include="Commands\ItemFilterScript\MoveBlocksToTopCommand.cs" />
|
||||
<Compile Include="Commands\ItemFilterScript\PasteBlocksCommand.cs" />
|
||||
<Compile Include="Commands\ItemFilterScript\RemoveBlocksCommand.cs" />
|
||||
<Compile Include="Commands\ItemFilterScript\SetScriptDescriptionCommand.cs" />
|
||||
<Compile Include="Commands\ItemFilterScript\RemoveBlockCommand.cs" />
|
||||
<Compile Include="Commands\ItemFilterScript\AddBlockCommand.cs" />
|
||||
<Compile Include="Commands\IUndoableCommand.cs" />
|
||||
<Compile Include="Enums\BlockAction.cs" />
|
||||
|
||||
@@ -4,6 +4,6 @@ namespace Filtration.ObjectModel
|
||||
{
|
||||
public interface IBlockItemWithTheme : IItemFilterBlockItem
|
||||
{
|
||||
ThemeComponent ThemeComponent { get; }
|
||||
ThemeComponent ThemeComponent { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,5 +14,6 @@ namespace Filtration.ObjectModel
|
||||
int MaximumAllowed { get; }
|
||||
int SortOrder { get; }
|
||||
bool IsDirty { get; }
|
||||
string Comment { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ namespace Filtration.ObjectModel
|
||||
public interface IItemFilterBlock : IItemFilterBlockBase
|
||||
{
|
||||
bool Enabled { get; set; }
|
||||
event EventHandler EnabledStatusChanged;
|
||||
string Description { get; set; }
|
||||
ItemFilterBlockGroup BlockGroup { get; set; }
|
||||
BlockAction Action { get; set; }
|
||||
@@ -88,6 +89,7 @@ namespace Filtration.ObjectModel
|
||||
{
|
||||
BlockItems = new ObservableCollection<IItemFilterBlockItem> { ActionBlockItem };
|
||||
BlockItems.CollectionChanged += new NotifyCollectionChangedEventHandler(OnBlockItemsChanged);
|
||||
ActionBlockItem.PropertyChanged += OnActionBlockItemChanged;
|
||||
_enabled = true;
|
||||
}
|
||||
|
||||
@@ -95,6 +97,7 @@ namespace Filtration.ObjectModel
|
||||
{
|
||||
BlockItems = new ObservableCollection<IItemFilterBlockItem> { ActionBlockItem };
|
||||
BlockItems.CollectionChanged += new NotifyCollectionChangedEventHandler(OnBlockItemsChanged);
|
||||
ActionBlockItem.PropertyChanged += OnActionBlockItemChanged;
|
||||
_enabled = true;
|
||||
}
|
||||
|
||||
@@ -105,8 +108,16 @@ namespace Filtration.ObjectModel
|
||||
{
|
||||
_enabled = value;
|
||||
IsEdited = true;
|
||||
EnabledStatusChanged?.Invoke(null, null);
|
||||
if(BlockGroup != null && BlockGroup.IsEnableChecked != value)
|
||||
{
|
||||
BlockGroup.IsEnableChecked = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public event EventHandler EnabledStatusChanged;
|
||||
|
||||
public string Description
|
||||
{
|
||||
get { return _description; }
|
||||
@@ -165,6 +176,13 @@ namespace Filtration.ObjectModel
|
||||
{
|
||||
IsEdited = true;
|
||||
}
|
||||
private void OnActionBlockItemChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (BlockGroup != null && BlockGroup.IsShowChecked != (Action == BlockAction.Show))
|
||||
{
|
||||
BlockGroup.IsShowChecked = (Action == BlockAction.Show);
|
||||
}
|
||||
}
|
||||
|
||||
public bool AddBlockItemAllowed(Type type)
|
||||
{
|
||||
@@ -198,14 +216,23 @@ namespace Filtration.ObjectModel
|
||||
|
||||
private void OnBlockGroupStatusChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (BlockGroup.IsChecked == false && Action == BlockAction.Show)
|
||||
if (BlockGroup.IsShowChecked == false && Action == BlockAction.Show)
|
||||
{
|
||||
Action = BlockAction.Hide;
|
||||
}
|
||||
else if (BlockGroup.IsChecked && Action == BlockAction.Hide)
|
||||
else if (BlockGroup.IsShowChecked == true && Action == BlockAction.Hide)
|
||||
{
|
||||
Action = BlockAction.Show;
|
||||
}
|
||||
|
||||
if (BlockGroup.IsEnableChecked == false && Enabled)
|
||||
{
|
||||
Enabled = false;
|
||||
}
|
||||
else if (BlockGroup.IsEnableChecked == true && !Enabled)
|
||||
{
|
||||
Enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
public Color DisplayTextColor
|
||||
@@ -243,7 +270,7 @@ namespace Filtration.ObjectModel
|
||||
get
|
||||
{
|
||||
var backgroundColorBlockItem = BlockItems.OfType<BackgroundColorBlockItem>().FirstOrDefault();
|
||||
return backgroundColorBlockItem?.Color ?? new Color { A = 255, R = 0, G = 0, B = 0 };
|
||||
return backgroundColorBlockItem?.Color ?? new Color { A = 240, R = 0, G = 0, B = 0 };
|
||||
}
|
||||
}
|
||||
|
||||
@@ -252,7 +279,7 @@ namespace Filtration.ObjectModel
|
||||
get
|
||||
{
|
||||
var borderColorBlockItem = BlockItems.OfType<BorderColorBlockItem>().FirstOrDefault();
|
||||
return borderColorBlockItem?.Color ?? new Color { A = 255, R = 0, G = 0, B = 0 };
|
||||
return borderColorBlockItem?.Color ?? new Color { A = 240, R = 0, G = 0, B = 0 };
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,31 +5,34 @@ namespace Filtration.ObjectModel
|
||||
{
|
||||
public class ItemFilterBlockGroup
|
||||
{
|
||||
private bool _isChecked;
|
||||
private bool? _isShowChecked;
|
||||
private bool? _isEnableChecked;
|
||||
|
||||
public ItemFilterBlockGroup(string groupName, ItemFilterBlockGroup parent, bool advanced = false)
|
||||
public ItemFilterBlockGroup(string groupName, ItemFilterBlockGroup parent, bool advanced = false, bool isLeafNode = false)
|
||||
{
|
||||
GroupName = groupName;
|
||||
ParentGroup = parent;
|
||||
Advanced = advanced;
|
||||
ChildGroups = new List<ItemFilterBlockGroup>();
|
||||
IsLeafNode = isLeafNode;
|
||||
}
|
||||
|
||||
public string GroupName { get; }
|
||||
public ItemFilterBlockGroup ParentGroup { get; set; }
|
||||
public List<ItemFilterBlockGroup> ChildGroups { get; }
|
||||
public bool Advanced { get; }
|
||||
public bool IsLeafNode { get; }
|
||||
|
||||
public event EventHandler BlockGroupStatusChanged;
|
||||
|
||||
public string GroupName { get; }
|
||||
public ItemFilterBlockGroup ParentGroup { get; }
|
||||
public List<ItemFilterBlockGroup> ChildGroups { get; }
|
||||
public bool Advanced { get; }
|
||||
|
||||
public bool IsChecked
|
||||
public bool? IsShowChecked
|
||||
{
|
||||
get { return _isChecked; }
|
||||
get { return _isShowChecked; }
|
||||
set
|
||||
{
|
||||
if (value != _isChecked)
|
||||
if (value != _isShowChecked)
|
||||
{
|
||||
_isChecked = value;
|
||||
_isShowChecked = value;
|
||||
// Raise an event to let blocks that have this block group assigned that
|
||||
// they might need to change their Action due to the block group status changing.
|
||||
BlockGroupStatusChanged?.Invoke(null, null);
|
||||
@@ -37,20 +40,85 @@ namespace Filtration.ObjectModel
|
||||
}
|
||||
}
|
||||
|
||||
public bool? IsEnableChecked
|
||||
{
|
||||
get { return _isEnableChecked; }
|
||||
set
|
||||
{
|
||||
if (value != _isEnableChecked)
|
||||
{
|
||||
_isEnableChecked = value;
|
||||
// Raise an event to let blocks that have this block group assigned that
|
||||
// they might need to change their Enabled due to the block group status changing.
|
||||
BlockGroupStatusChanged?.Invoke(null, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void ClearStatusChangeSubscribers()
|
||||
{
|
||||
BlockGroupStatusChanged = null;
|
||||
}
|
||||
|
||||
public void AddOrJoinBlockGroup(ItemFilterBlockGroup blockGroup)
|
||||
{
|
||||
var childIndex = ChildGroups.FindIndex(item => item.GroupName.Equals(blockGroup.GroupName));
|
||||
if (!blockGroup.IsLeafNode && childIndex >= 0)
|
||||
{
|
||||
while(blockGroup.ChildGroups.Count > 0)
|
||||
{
|
||||
ChildGroups[childIndex].AddOrJoinBlockGroup(blockGroup.ChildGroups[0]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(blockGroup.ParentGroup != null)
|
||||
{
|
||||
blockGroup.ParentGroup.ChildGroups.Remove(blockGroup);
|
||||
}
|
||||
blockGroup.ParentGroup = this;
|
||||
ChildGroups.Add(blockGroup);
|
||||
}
|
||||
}
|
||||
|
||||
public void DetachSelf(bool keepChildren)
|
||||
{
|
||||
if(ParentGroup == null)
|
||||
return;
|
||||
|
||||
if(IsLeafNode && ParentGroup.ParentGroup != null && ParentGroup.ChildGroups.Count < 2)
|
||||
{
|
||||
ParentGroup.DetachSelf(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
ParentGroup.ChildGroups.Remove(this);
|
||||
|
||||
if (keepChildren)
|
||||
{
|
||||
foreach(var child in ChildGroups)
|
||||
{
|
||||
ParentGroup.AddOrJoinBlockGroup(child);
|
||||
}
|
||||
}
|
||||
|
||||
ParentGroup = null;
|
||||
}
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
var currentBlockGroup = this;
|
||||
if(ParentGroup == null)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
var outputString = (Advanced ? "~" : string.Empty) + GroupName;
|
||||
|
||||
// TODO: This is retarded, fix this.
|
||||
if (currentBlockGroup.ParentGroup != null)
|
||||
var parentOutput = ParentGroup.ToString();
|
||||
if(!string.IsNullOrWhiteSpace(parentOutput))
|
||||
{
|
||||
while (currentBlockGroup.ParentGroup.ParentGroup != null)
|
||||
{
|
||||
outputString = (currentBlockGroup.ParentGroup.Advanced ? "~" : string.Empty) + currentBlockGroup.ParentGroup.GroupName + " - " + outputString;
|
||||
currentBlockGroup = currentBlockGroup.ParentGroup;
|
||||
}
|
||||
outputString = parentOutput + (IsLeafNode ? string.Empty : " - " + outputString);
|
||||
}
|
||||
|
||||
return outputString;
|
||||
|
||||
@@ -8,36 +8,36 @@ namespace Filtration.ObjectModel
|
||||
{
|
||||
public static Dictionary<PathOfExileNamedColor, Color> Colors => new Dictionary<PathOfExileNamedColor, Color>
|
||||
{
|
||||
{PathOfExileNamedColor.Default, new Color {A = 255, R = 127, G = 127, B = 127}},
|
||||
{PathOfExileNamedColor.ValueDefault, new Color {A = 255, R = 255, G = 255, B = 255}},
|
||||
{PathOfExileNamedColor.Pink, new Color {A = 255, R = 255, G = 192, B = 203}},
|
||||
{PathOfExileNamedColor.DodgerBlue, new Color {A = 255, R = 30, G = 144, B = 255}},
|
||||
{PathOfExileNamedColor.Fire, new Color {A = 255, R = 150, G = 0, B = 0}},
|
||||
{PathOfExileNamedColor.Cold, new Color {A = 255, R = 54, G = 100, B = 146}},
|
||||
{PathOfExileNamedColor.Lightning, new Color {A = 255, R = 255, G = 215, B = 0}},
|
||||
{PathOfExileNamedColor.Chaos, new Color {A = 255, R = 208, G = 32, B = 144}},
|
||||
{PathOfExileNamedColor.Augmented, new Color {A = 255, R = 136, G = 136, B = 255}},
|
||||
{PathOfExileNamedColor.Crafted, new Color {A = 255, R = 184, G = 218, B = 242}},
|
||||
{PathOfExileNamedColor.Unmet, new Color {A = 255, R = 210, G = 0, B = 0}},
|
||||
{PathOfExileNamedColor.UniqueItem, new Color {A = 255, R = 175, G = 96, B = 37}},
|
||||
{PathOfExileNamedColor.RareItem, new Color {A = 255, R = 255, G = 255, B = 119}},
|
||||
{PathOfExileNamedColor.MagicItem, new Color {A = 255, R = 136, G = 136, B = 255}},
|
||||
{PathOfExileNamedColor.WhiteItem, new Color {A = 255, R = 200, G = 200, B = 200}},
|
||||
{PathOfExileNamedColor.GemItem, new Color {A = 255, R = 27, G = 162, B = 155}},
|
||||
{PathOfExileNamedColor.CurrencyItem, new Color {A = 255, R = 170, G = 158, B = 130}},
|
||||
{PathOfExileNamedColor.QuestItem, new Color {A = 255, R = 74, G = 230, B = 58}},
|
||||
{PathOfExileNamedColor.NemesisMod, new Color {A = 255, R = 255, G = 200, B = 0}},
|
||||
{PathOfExileNamedColor.Default, new Color {A = 240, R = 127, G = 127, B = 127}},
|
||||
{PathOfExileNamedColor.ValueDefault, new Color {A = 240, R = 255, G = 255, B = 255}},
|
||||
{PathOfExileNamedColor.Pink, new Color {A = 240, R = 255, G = 192, B = 203}},
|
||||
{PathOfExileNamedColor.DodgerBlue, new Color {A = 240, R = 30, G = 144, B = 255}},
|
||||
{PathOfExileNamedColor.Fire, new Color {A = 240, R = 150, G = 0, B = 0}},
|
||||
{PathOfExileNamedColor.Cold, new Color {A = 240, R = 54, G = 100, B = 146}},
|
||||
{PathOfExileNamedColor.Lightning, new Color {A = 240, R = 255, G = 215, B = 0}},
|
||||
{PathOfExileNamedColor.Chaos, new Color {A = 240, R = 208, G = 32, B = 144}},
|
||||
{PathOfExileNamedColor.Augmented, new Color {A = 240, R = 136, G = 136, B = 255}},
|
||||
{PathOfExileNamedColor.Crafted, new Color {A = 240, R = 184, G = 218, B = 242}},
|
||||
{PathOfExileNamedColor.Unmet, new Color {A = 240, R = 210, G = 0, B = 0}},
|
||||
{PathOfExileNamedColor.UniqueItem, new Color {A = 240, R = 175, G = 96, B = 37}},
|
||||
{PathOfExileNamedColor.RareItem, new Color {A = 240, R = 255, G = 255, B = 119}},
|
||||
{PathOfExileNamedColor.MagicItem, new Color {A = 240, R = 136, G = 136, B = 255}},
|
||||
{PathOfExileNamedColor.WhiteItem, new Color {A = 240, R = 200, G = 200, B = 200}},
|
||||
{PathOfExileNamedColor.GemItem, new Color {A = 240, R = 27, G = 162, B = 155}},
|
||||
{PathOfExileNamedColor.CurrencyItem, new Color {A = 240, R = 170, G = 158, B = 130}},
|
||||
{PathOfExileNamedColor.QuestItem, new Color {A = 240, R = 74, G = 230, B = 58}},
|
||||
{PathOfExileNamedColor.NemesisMod, new Color {A = 240, R = 255, G = 200, B = 0}},
|
||||
{PathOfExileNamedColor.NemesisModOutline, new Color {A = 220, R = 255, G = 40, B = 0}},
|
||||
{PathOfExileNamedColor.Title, new Color {A = 255, R = 231, G = 180, B = 120}},
|
||||
{PathOfExileNamedColor.Corrupted, new Color {A = 255, R = 210, G = 0, B = 0}},
|
||||
{PathOfExileNamedColor.Favour, new Color {A = 255, R = 170, G = 158, B = 130}},
|
||||
{PathOfExileNamedColor.SupporterPackNewItem, new Color {A = 255, R = 180, G = 96, B = 0}},
|
||||
{PathOfExileNamedColor.SupporterPackItem, new Color {A = 255, R = 163, G = 141, B = 109}},
|
||||
{PathOfExileNamedColor.BloodlineMod, new Color {A = 255, R = 210, G = 0, B = 220}},
|
||||
{PathOfExileNamedColor.Title, new Color {A = 240, R = 231, G = 180, B = 120}},
|
||||
{PathOfExileNamedColor.Corrupted, new Color {A = 240, R = 210, G = 0, B = 0}},
|
||||
{PathOfExileNamedColor.Favour, new Color {A = 240, R = 170, G = 158, B = 130}},
|
||||
{PathOfExileNamedColor.SupporterPackNewItem, new Color {A = 240, R = 180, G = 96, B = 0}},
|
||||
{PathOfExileNamedColor.SupporterPackItem, new Color {A = 240, R = 163, G = 141, B = 109}},
|
||||
{PathOfExileNamedColor.BloodlineMod, new Color {A = 240, R = 210, G = 0, B = 220}},
|
||||
{PathOfExileNamedColor.BloodlineModOutline, new Color {A = 200, R = 74, G = 0, B = 160}},
|
||||
{PathOfExileNamedColor.TormentMod, new Color {A = 255, R = 50, G = 230, B = 100}},
|
||||
{PathOfExileNamedColor.TormentMod, new Color {A = 240, R = 50, G = 230, B = 100}},
|
||||
{PathOfExileNamedColor.TormentModOutline, new Color {A = 200, R = 0, G = 100, B = 150}},
|
||||
{PathOfExileNamedColor.CantTradeorModify, new Color {A = 255, R = 210, G = 0, B = 0}},
|
||||
{PathOfExileNamedColor.CantTradeorModify, new Color {A = 240, R = 210, G = 0, B = 0}},
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Linq;
|
||||
using Filtration.ObjectModel.Enums;
|
||||
using GalaSoft.MvvmLight.Command;
|
||||
using Microsoft.Win32;
|
||||
@@ -25,13 +26,34 @@ namespace Filtration.ObjectModel.ThemeEditor
|
||||
|
||||
if (_customSoundsAvailable == null || _customSoundsAvailable.Count < 1)
|
||||
{
|
||||
_customSoundsAvailable = new ObservableCollection<string> {
|
||||
"1maybevaluable.mp3", "2currency.mp3", "3uniques.mp3", "4maps.mp3", "5highmaps.mp3",
|
||||
"6veryvaluable.mp3", "7chancing.mp3", "12leveling.mp3", "placeholder.mp3"
|
||||
};
|
||||
|
||||
_customSoundsAvailable = new ObservableCollection<string>();
|
||||
|
||||
var poeFolderPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments).ToString() + @"\My Games\Path of Exile\";
|
||||
if(System.IO.Directory.Exists(poeFolderPath))
|
||||
{
|
||||
var poeFolderFiles = System.IO.Directory.GetFiles(poeFolderPath).Where(
|
||||
s => s.EndsWith(".mp3")
|
||||
|| s.EndsWith(".wav")
|
||||
|| s.EndsWith(".wma")
|
||||
|| s.EndsWith(".3gp")
|
||||
|| s.EndsWith(".aag")
|
||||
|| s.EndsWith(".m4a")
|
||||
|| s.EndsWith(".ogg")
|
||||
).OrderBy(f => f);
|
||||
|
||||
foreach (var file in poeFolderFiles)
|
||||
{
|
||||
_customSoundsAvailable.Add(file.Replace(poeFolderPath, ""));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (_customSoundsAvailable.IndexOf(Value) < 0)
|
||||
if(string.IsNullOrWhiteSpace(Value))
|
||||
{
|
||||
Value = _customSoundsAvailable.Count > 0 ? _customSoundsAvailable[0] : "";
|
||||
}
|
||||
else if (_customSoundsAvailable.IndexOf(Value) < 0)
|
||||
{
|
||||
_customSoundsAvailable.Add(Value);
|
||||
}
|
||||
|
||||
@@ -93,5 +93,10 @@ namespace Filtration.ObjectModel.ThemeEditor
|
||||
Items.Count(c => c.ComponentName == componentName && c.ComponentType == componentType);
|
||||
return componentCount > 0;
|
||||
}
|
||||
|
||||
public bool ComponentExists(ThemeComponent themeComponent)
|
||||
{
|
||||
return ComponentExists(themeComponent.ComponentType, themeComponent.ComponentName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,6 @@ namespace Filtration.Parser.Interface.Services
|
||||
{
|
||||
void Initialise(ItemFilterBlockGroup rootBlockGroup);
|
||||
void Cleanup();
|
||||
ItemFilterBlockGroup IntegrateStringListIntoBlockGroupHierarchy(IEnumerable<string> groupStrings);
|
||||
ItemFilterBlockGroup IntegrateStringListIntoBlockGroupHierarchy(IEnumerable<string> groupStrings, bool show, bool enabled);
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,7 @@ namespace Filtration.Parser.Interface.Services
|
||||
public interface IItemFilterScriptTranslator
|
||||
{
|
||||
IItemFilterScript TranslateStringToItemFilterScript(string inputString);
|
||||
IItemFilterScript TranslatePastedStringToItemFilterScript(string inputString, bool blockGroupsEnabled);
|
||||
string TranslateItemFilterScriptToString(IItemFilterScript script);
|
||||
}
|
||||
}
|
||||
@@ -18,11 +18,11 @@ namespace Filtration.Parser.Tests.Services
|
||||
var builder = new BlockGroupHierarchyBuilder();
|
||||
|
||||
// Act
|
||||
var result = builder.IntegrateStringListIntoBlockGroupHierarchy(inputStrings, rootBlock);
|
||||
var result = builder.IntegrateStringListIntoBlockGroupHierarchy(inputStrings, rootBlock, true, true);
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(1, rootBlock.ChildGroups.Count);
|
||||
Assert.AreEqual("Sub Block Group", result.GroupName);
|
||||
Assert.AreEqual("Sub Block Group", result.ParentGroup.GroupName);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -35,11 +35,11 @@ namespace Filtration.Parser.Tests.Services
|
||||
var builder = new BlockGroupHierarchyBuilder();
|
||||
|
||||
// Act
|
||||
var result = builder.IntegrateStringListIntoBlockGroupHierarchy(inputStrings, rootBlock);
|
||||
var result = builder.IntegrateStringListIntoBlockGroupHierarchy(inputStrings, rootBlock, true, true);
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(1, rootBlock.ChildGroups.Count);
|
||||
Assert.AreEqual("Block Group", result.GroupName);
|
||||
Assert.AreEqual("Block Group", result.ParentGroup.GroupName);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -52,12 +52,12 @@ namespace Filtration.Parser.Tests.Services
|
||||
var builder = new BlockGroupHierarchyBuilder();
|
||||
|
||||
// Act
|
||||
var result = builder.IntegrateStringListIntoBlockGroupHierarchy(inputStrings, rootBlock);
|
||||
var result = builder.IntegrateStringListIntoBlockGroupHierarchy(inputStrings, rootBlock, true, true);
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(1, rootBlock.ChildGroups.Count);
|
||||
Assert.AreEqual("Block Group", result.GroupName);
|
||||
Assert.AreEqual(true, result.Advanced);
|
||||
Assert.AreEqual("Block Group", result.ParentGroup.GroupName);
|
||||
Assert.AreEqual(true, result.ParentGroup.Advanced);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -70,11 +70,11 @@ namespace Filtration.Parser.Tests.Services
|
||||
var builder = new BlockGroupHierarchyBuilder();
|
||||
|
||||
// Act
|
||||
var result = builder.IntegrateStringListIntoBlockGroupHierarchy(inputStrings, rootBlock);
|
||||
var result = builder.IntegrateStringListIntoBlockGroupHierarchy(inputStrings, rootBlock, true, true);
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(1, rootBlock.ChildGroups.Count);
|
||||
Assert.AreEqual(true, result.Advanced);
|
||||
Assert.AreEqual(true, result.ParentGroup.Advanced);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -90,12 +90,12 @@ namespace Filtration.Parser.Tests.Services
|
||||
var builder = new BlockGroupHierarchyBuilder();
|
||||
|
||||
// Act
|
||||
var result = builder.IntegrateStringListIntoBlockGroupHierarchy(inputStrings, rootBlock);
|
||||
var result = builder.IntegrateStringListIntoBlockGroupHierarchy(inputStrings, rootBlock, true, true);
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(1, rootBlock.ChildGroups.Count);
|
||||
Assert.AreEqual("Block Group", result.GroupName);
|
||||
Assert.AreEqual(true, result.Advanced);
|
||||
Assert.AreEqual("Block Group", result.ParentGroup.GroupName);
|
||||
Assert.AreEqual(true, result.ParentGroup.Advanced);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -107,15 +107,15 @@ namespace Filtration.Parser.Tests.Services
|
||||
|
||||
// Act
|
||||
var inputStrings = new List<string> { "Block Group" };
|
||||
builder.IntegrateStringListIntoBlockGroupHierarchy(inputStrings, rootBlock);
|
||||
builder.IntegrateStringListIntoBlockGroupHierarchy(inputStrings, rootBlock, true, true);
|
||||
inputStrings = new List<string> { "Block Group 2" };
|
||||
builder.IntegrateStringListIntoBlockGroupHierarchy(inputStrings, rootBlock);
|
||||
builder.IntegrateStringListIntoBlockGroupHierarchy(inputStrings, rootBlock, true, true);
|
||||
inputStrings = new List<string> { "Block Group", "Sub Block Group" };
|
||||
var result = builder.IntegrateStringListIntoBlockGroupHierarchy(inputStrings, rootBlock);
|
||||
var result = builder.IntegrateStringListIntoBlockGroupHierarchy(inputStrings, rootBlock, true, true);
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(2, rootBlock.ChildGroups.Count);
|
||||
Assert.AreEqual("Sub Block Group", result.GroupName);
|
||||
Assert.AreEqual("Sub Block Group", result.ParentGroup.GroupName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ namespace Filtration.Parser.Tests.Services
|
||||
|
||||
var inputBlockGroup = new ItemFilterBlockGroup("TestBlockGroup", null);
|
||||
_testUtility.MockBlockGroupHierarchyBuilder
|
||||
.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>()))
|
||||
.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>(), true, true))
|
||||
.Returns(inputBlockGroup);
|
||||
|
||||
// Act
|
||||
@@ -121,6 +121,7 @@ namespace Filtration.Parser.Tests.Services
|
||||
Assert.AreEqual(FilterPredicateOperator.GreaterThanOrEqual, blockItem.FilterPredicate.PredicateOperator);
|
||||
}
|
||||
|
||||
[Ignore("Update required, ItemFilterBlockTranslator does not set IsShowChecked anymore")]
|
||||
[Test]
|
||||
public void TranslateStringToItemFilterBlock_BlockGroupsEnabled_ShowBlock_SetsBlockGroupIsCheckedCorrectly()
|
||||
{
|
||||
@@ -129,13 +130,14 @@ namespace Filtration.Parser.Tests.Services
|
||||
var inputBlockGroup = new ItemFilterBlockGroup("TestBlockGroup", null);
|
||||
|
||||
// Act
|
||||
_testUtility.MockBlockGroupHierarchyBuilder.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>())).Returns(inputBlockGroup).Verifiable();
|
||||
_testUtility.MockBlockGroupHierarchyBuilder.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>(), true, true)).Returns(inputBlockGroup).Verifiable();
|
||||
_testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of<IItemFilterScript>(i => i.ItemFilterScriptSettings.BlockGroupsEnabled));
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(true, inputBlockGroup.IsChecked);
|
||||
Assert.AreEqual(true, inputBlockGroup.IsShowChecked);
|
||||
}
|
||||
|
||||
[Ignore("Update required, ItemFilterBlockTranslator does not set IsShowChecked anymore")]
|
||||
[Test]
|
||||
public void TranslateStringToItemFilterBlock_BlockGroupsEnabled_HideBlock_SetsBlockGroupIsCheckedCorrectly()
|
||||
{
|
||||
@@ -144,11 +146,11 @@ namespace Filtration.Parser.Tests.Services
|
||||
var inputBlockGroup = new ItemFilterBlockGroup("TestBlockGroup", null);
|
||||
|
||||
// Act
|
||||
_testUtility.MockBlockGroupHierarchyBuilder.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>())).Returns(inputBlockGroup).Verifiable();
|
||||
_testUtility.MockBlockGroupHierarchyBuilder.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>(), false, true)).Returns(inputBlockGroup).Verifiable();
|
||||
_testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of<IItemFilterScript>(i => i.ItemFilterScriptSettings.BlockGroupsEnabled));
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(false, inputBlockGroup.IsChecked);
|
||||
Assert.AreEqual(false, inputBlockGroup.IsShowChecked);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -159,7 +161,7 @@ namespace Filtration.Parser.Tests.Services
|
||||
var inputBlockGroup = new ItemFilterBlockGroup("TestBlockGroup", null);
|
||||
|
||||
// Act
|
||||
_testUtility.MockBlockGroupHierarchyBuilder.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>())).Returns(inputBlockGroup).Verifiable();
|
||||
_testUtility.MockBlockGroupHierarchyBuilder.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>(), true, true)).Returns(inputBlockGroup).Verifiable();
|
||||
_testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of<IItemFilterScript>(i => i.ItemFilterScriptSettings.BlockGroupsEnabled));
|
||||
|
||||
// Assert
|
||||
@@ -173,11 +175,11 @@ namespace Filtration.Parser.Tests.Services
|
||||
var inputString = "Show" + Environment.NewLine;
|
||||
|
||||
// Act
|
||||
_testUtility.MockBlockGroupHierarchyBuilder.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>())).Verifiable();
|
||||
_testUtility.MockBlockGroupHierarchyBuilder.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>(), true, true)).Verifiable();
|
||||
_testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of<IItemFilterScript>(i => i.ItemFilterScriptSettings.BlockGroupsEnabled));
|
||||
|
||||
// Assert
|
||||
_testUtility.MockBlockGroupHierarchyBuilder.Verify(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>()), Times.Never);
|
||||
_testUtility.MockBlockGroupHierarchyBuilder.Verify(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>(), true, true), Times.Never);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -190,7 +192,7 @@ namespace Filtration.Parser.Tests.Services
|
||||
_testUtility.Translator.TranslateStringToItemFilterBlock(inputString, Mock.Of<IItemFilterScript>(i => i.ItemFilterScriptSettings.BlockGroupsEnabled));
|
||||
|
||||
// Assert
|
||||
_testUtility.MockBlockGroupHierarchyBuilder.Verify(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>()), Times.Never);
|
||||
_testUtility.MockBlockGroupHierarchyBuilder.Verify(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>(), true, true), Times.Never);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -202,7 +204,7 @@ namespace Filtration.Parser.Tests.Services
|
||||
|
||||
// Act
|
||||
_testUtility.MockBlockGroupHierarchyBuilder
|
||||
.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.Is<IEnumerable<string>>(s => s.Contains("Test Block Group") && s.Contains("Test Sub Block Group") && s.Contains("Test Another Block Group"))))
|
||||
.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.Is<IEnumerable<string>>(s => s.Contains("Test Block Group") && s.Contains("Test Sub Block Group") && s.Contains("Test Another Block Group")), true, true))
|
||||
.Returns(testBlockGroup)
|
||||
.Verifiable();
|
||||
|
||||
@@ -222,7 +224,7 @@ namespace Filtration.Parser.Tests.Services
|
||||
|
||||
// Act
|
||||
_testUtility.MockBlockGroupHierarchyBuilder
|
||||
.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.Is<IEnumerable<string>>(s => s.Contains("AAA-BBB-CCC"))))
|
||||
.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.Is<IEnumerable<string>>(s => s.Contains("AAA-BBB-CCC")), true, true))
|
||||
.Returns(testBlockGroup)
|
||||
.Verifiable();
|
||||
|
||||
@@ -244,7 +246,7 @@ namespace Filtration.Parser.Tests.Services
|
||||
|
||||
// Assert
|
||||
Assert.IsNull(result.BlockGroup);
|
||||
_testUtility.MockBlockGroupHierarchyBuilder.Verify(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>()), Times.Never);
|
||||
_testUtility.MockBlockGroupHierarchyBuilder.Verify(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>(), true, true), Times.Never);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -405,6 +407,24 @@ namespace Filtration.Parser.Tests.Services
|
||||
Assert.IsTrue(blockItem.BooleanValue);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TranslateStringToItemFilterBlock_MapTier_ReturnsCorrectObject()
|
||||
{
|
||||
// Arrange
|
||||
var inputString = "Show" + Environment.NewLine +
|
||||
" MapTier >= 15";
|
||||
|
||||
// Act
|
||||
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
|
||||
|
||||
// Assert
|
||||
|
||||
Assert.AreEqual(1, result.BlockItems.Count(b => b is MapTierBlockItem));
|
||||
var blockItem = result.BlockItems.OfType<MapTierBlockItem>().First();
|
||||
Assert.AreEqual(15, blockItem.FilterPredicate.PredicateOperand);
|
||||
Assert.AreEqual(FilterPredicateOperator.GreaterThanOrEqual, blockItem.FilterPredicate.PredicateOperator);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TranslateStringToItemFilterBlock_ShapedMap_ReturnsCorrectObject()
|
||||
{
|
||||
@@ -773,7 +793,7 @@ namespace Filtration.Parser.Tests.Services
|
||||
// Arrange
|
||||
var inputString = "Show" + Environment.NewLine +
|
||||
" SetTextColor 255 20 100 # Rare Item Text";
|
||||
var testComponent = new ColorThemeComponent(ThemeComponentType.TextColor, "Rare Item Text", new Color { R = 255, G = 20, B = 100});
|
||||
var testComponent = new ColorThemeComponent(ThemeComponentType.TextColor, "Rare Item Text", new Color { A = 240, R = 255, G = 20, B = 100});
|
||||
var testInputThemeComponentCollection = new ThemeComponentCollection { testComponent };
|
||||
|
||||
// Act
|
||||
@@ -925,7 +945,10 @@ namespace Filtration.Parser.Tests.Services
|
||||
" SetBorderColor 0 0 0" + Environment.NewLine +
|
||||
" SetFontSize 50" + Environment.NewLine +
|
||||
" PlayAlertSound 3" + Environment.NewLine +
|
||||
" DisableDropSound False" + Environment.NewLine;
|
||||
" DisableDropSound False" + Environment.NewLine +
|
||||
" CustomAlertSound \"test.mp3\" # customSoundTheme" + Environment.NewLine +
|
||||
" MinimapIcon 2 Green Triangle # iconTheme" + Environment.NewLine +
|
||||
" PlayEffect Green Temp # effectTheme" + Environment.NewLine;
|
||||
|
||||
// Act
|
||||
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
|
||||
@@ -1024,12 +1047,40 @@ namespace Filtration.Parser.Tests.Services
|
||||
var fontSizeblockItem = result.BlockItems.OfType<FontSizeBlockItem>().First();
|
||||
Assert.AreEqual(50, fontSizeblockItem.Value);
|
||||
|
||||
var soundblockItem = result.BlockItems.OfType<SoundBlockItem>().First();
|
||||
Assert.AreEqual("3", soundblockItem.Value);
|
||||
Assert.AreEqual(79, soundblockItem.SecondValue);
|
||||
Assert.AreEqual(0, result.BlockItems.OfType<SoundBlockItem>().Count());
|
||||
|
||||
var disableDropSoundBlockItem = result.BlockItems.OfType<DisableDropSoundBlockItem>().First();
|
||||
Assert.IsFalse(disableDropSoundBlockItem.BooleanValue);
|
||||
|
||||
var customSoundBlockItem = result.BlockItems.OfType<CustomSoundBlockItem>().First();
|
||||
Assert.AreEqual("test.mp3", customSoundBlockItem.Value);
|
||||
Assert.AreNotEqual(null, customSoundBlockItem.ThemeComponent);
|
||||
Assert.AreEqual(ThemeComponentType.CustomSound, customSoundBlockItem.ThemeComponent.ComponentType);
|
||||
Assert.AreEqual("customSoundTheme", customSoundBlockItem.ThemeComponent.ComponentName);
|
||||
Assert.AreEqual(typeof(StringThemeComponent), customSoundBlockItem.ThemeComponent.GetType());
|
||||
Assert.AreEqual("test.mp3", ((StringThemeComponent)customSoundBlockItem.ThemeComponent).Value);
|
||||
|
||||
var mapIconBlockItem = result.BlockItems.OfType<MapIconBlockItem>().First();
|
||||
Assert.AreEqual(IconSize.Small, mapIconBlockItem.Size);
|
||||
Assert.AreEqual(IconColor.Green, mapIconBlockItem.Color);
|
||||
Assert.AreEqual(IconShape.Triangle, mapIconBlockItem.Shape);
|
||||
Assert.AreNotEqual(null, mapIconBlockItem.ThemeComponent);
|
||||
Assert.AreEqual(ThemeComponentType.Icon, mapIconBlockItem.ThemeComponent.ComponentType);
|
||||
Assert.AreEqual("iconTheme", mapIconBlockItem.ThemeComponent.ComponentName);
|
||||
Assert.AreEqual(typeof(IconThemeComponent), mapIconBlockItem.ThemeComponent.GetType());
|
||||
Assert.AreEqual(IconSize.Small, ((IconThemeComponent)mapIconBlockItem.ThemeComponent).IconSize);
|
||||
Assert.AreEqual(IconColor.Green, ((IconThemeComponent)mapIconBlockItem.ThemeComponent).IconColor);
|
||||
Assert.AreEqual(IconShape.Triangle, ((IconThemeComponent)mapIconBlockItem.ThemeComponent).IconShape);
|
||||
|
||||
var effectColorBlockItem = result.BlockItems.OfType<EffectColorBlockItem>().First();
|
||||
Assert.AreEqual(EffectColor.Green, effectColorBlockItem.Color);
|
||||
Assert.IsTrue(effectColorBlockItem.Temporary);
|
||||
Assert.AreNotEqual(null, effectColorBlockItem.ThemeComponent);
|
||||
Assert.AreEqual(ThemeComponentType.Effect, effectColorBlockItem.ThemeComponent.ComponentType);
|
||||
Assert.AreEqual("effectTheme", effectColorBlockItem.ThemeComponent.ComponentName);
|
||||
Assert.AreEqual(typeof(EffectColorThemeComponent), effectColorBlockItem.ThemeComponent.GetType());
|
||||
Assert.AreEqual(EffectColor.Green, ((EffectColorThemeComponent)effectColorBlockItem.ThemeComponent).EffectColor);
|
||||
Assert.IsTrue(((EffectColorThemeComponent)effectColorBlockItem.ThemeComponent).Temporary);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -1257,6 +1308,86 @@ namespace Filtration.Parser.Tests.Services
|
||||
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]
|
||||
public void TranslateItemFilterBlockToString_NothingPopulated_ReturnsCorrectString()
|
||||
{
|
||||
@@ -1686,7 +1817,7 @@ namespace Filtration.Parser.Tests.Services
|
||||
var expectedResult = "Show" + Environment.NewLine +
|
||||
" SetTextColor 54 102 255";
|
||||
|
||||
_testUtility.TestBlock.BlockItems.Add(new TextColorBlockItem(new Color {A = 255, R = 54, G = 102, B = 255}));
|
||||
_testUtility.TestBlock.BlockItems.Add(new TextColorBlockItem(new Color {A = 240, R = 54, G = 102, B = 255}));
|
||||
|
||||
// Act
|
||||
var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock);
|
||||
@@ -1702,7 +1833,7 @@ namespace Filtration.Parser.Tests.Services
|
||||
var expectedResult = "Show" + Environment.NewLine +
|
||||
" SetTextColor 54 102 255 # Test Theme Component";
|
||||
|
||||
var blockItem = new TextColorBlockItem(new Color {A = 255, R = 54, G = 102, B = 255})
|
||||
var blockItem = new TextColorBlockItem(new Color {A = 240, R = 54, G = 102, B = 255})
|
||||
{
|
||||
ThemeComponent = new ColorThemeComponent(ThemeComponentType.TextColor, "Test Theme Component", new Color())
|
||||
};
|
||||
@@ -1926,8 +2057,8 @@ namespace Filtration.Parser.Tests.Services
|
||||
_testUtility.TestBlock.BlockItems.Add(new HeightBlockItem(FilterPredicateOperator.LessThanOrEqual, 6));
|
||||
_testUtility.TestBlock.BlockItems.Add(new HeightBlockItem(FilterPredicateOperator.GreaterThanOrEqual, 2));
|
||||
_testUtility.TestBlock.BlockItems.Add(new TextColorBlockItem(new Color {A = 56, R = 255, G = 89, B = 0}));
|
||||
_testUtility.TestBlock.BlockItems.Add(new BackgroundColorBlockItem(new Color { A = 255, R = 0, G = 0, B = 0 }));
|
||||
_testUtility.TestBlock.BlockItems.Add(new BorderColorBlockItem(new Color { A = 255, R = 255, G = 1, B = 254 }));
|
||||
_testUtility.TestBlock.BlockItems.Add(new BackgroundColorBlockItem(new Color { A = 240, R = 0, G = 0, B = 0 }));
|
||||
_testUtility.TestBlock.BlockItems.Add(new BorderColorBlockItem(new Color { A = 240, R = 255, G = 1, B = 254 }));
|
||||
_testUtility.TestBlock.BlockItems.Add(new FontSizeBlockItem(50));
|
||||
_testUtility.TestBlock.BlockItems.Add(new SoundBlockItem("6", 90));
|
||||
_testUtility.TestBlock.BlockItems.Add(new ElderItemBlockItem(true));
|
||||
@@ -1964,7 +2095,7 @@ namespace Filtration.Parser.Tests.Services
|
||||
var textColorBlockItem = testInputBlockItems.First(b => b is TextColorBlockItem) as TextColorBlockItem;
|
||||
Assert.IsNotNull(textColorBlockItem);
|
||||
Assert.AreNotSame(testInputBlockItem, textColorBlockItem);
|
||||
Assert.AreEqual(new Color { R = 240, G = 200, B = 150, A = 255}, textColorBlockItem.Color);
|
||||
Assert.AreEqual(new Color { R = 240, G = 200, B = 150, A = 240}, textColorBlockItem.Color);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -2055,17 +2186,17 @@ namespace Filtration.Parser.Tests.Services
|
||||
var textColorBlockItem = testInputBlockItems.First(b => b is TextColorBlockItem) as TextColorBlockItem;
|
||||
Assert.IsNotNull(textColorBlockItem);
|
||||
Assert.AreNotSame(testInputTextColorBlockItem, textColorBlockItem);
|
||||
Assert.AreEqual(new Color {A = 255, R = 240, G = 200, B = 150}, textColorBlockItem.Color);
|
||||
Assert.AreEqual(new Color {A = 240, R = 240, G = 200, B = 150}, textColorBlockItem.Color);
|
||||
|
||||
var backgroundColorBlockItem = testInputBlockItems.First(b => b is BackgroundColorBlockItem) as BackgroundColorBlockItem;
|
||||
Assert.IsNotNull(backgroundColorBlockItem);
|
||||
Assert.AreNotSame(testInputBackgroundColorBlockItem, backgroundColorBlockItem);
|
||||
Assert.AreEqual(new Color { A = 255, R = 0, G = 0, B = 0 }, backgroundColorBlockItem.Color);
|
||||
Assert.AreEqual(new Color { A = 240, R = 0, G = 0, B = 0 }, backgroundColorBlockItem.Color);
|
||||
|
||||
var borderColorBlockItem = testInputBlockItems.First(b => b is BorderColorBlockItem) as BorderColorBlockItem;
|
||||
Assert.IsNotNull(borderColorBlockItem);
|
||||
Assert.AreNotSame(testInputBorderColorBlockItem, borderColorBlockItem);
|
||||
Assert.AreEqual(new Color { A = 255, R = 255, G = 255, B = 255 }, borderColorBlockItem.Color);
|
||||
Assert.AreEqual(new Color { A = 240, R = 255, G = 255, B = 255 }, borderColorBlockItem.Color);
|
||||
|
||||
var soundBlockItem = testInputBlockItems.First(b => b is SoundBlockItem) as SoundBlockItem;
|
||||
Assert.IsNotNull(soundBlockItem);
|
||||
@@ -2091,15 +2222,15 @@ namespace Filtration.Parser.Tests.Services
|
||||
// Assert
|
||||
var textColorBlockItem = testInputBlockItems.First(b => b is TextColorBlockItem) as TextColorBlockItem;
|
||||
Assert.IsNotNull(textColorBlockItem);
|
||||
Assert.AreEqual(new Color { A = 255, R = 240, G = 200, B = 150 }, textColorBlockItem.Color);
|
||||
Assert.AreEqual(new Color { A = 240, R = 240, G = 200, B = 150 }, textColorBlockItem.Color);
|
||||
|
||||
var backgroundColorBlockItem = testInputBlockItems.First(b => b is BackgroundColorBlockItem) as BackgroundColorBlockItem;
|
||||
Assert.IsNotNull(backgroundColorBlockItem);
|
||||
Assert.AreEqual(new Color { A = 255, R = 0, G = 0, B = 0 }, backgroundColorBlockItem.Color);
|
||||
Assert.AreEqual(new Color { A = 240, R = 0, G = 0, B = 0 }, backgroundColorBlockItem.Color);
|
||||
|
||||
var borderColorBlockItem = testInputBlockItems.First(b => b is BorderColorBlockItem) as BorderColorBlockItem;
|
||||
Assert.IsNotNull(borderColorBlockItem);
|
||||
Assert.AreEqual(new Color { A = 255, R = 255, G = 255, B = 255 }, borderColorBlockItem.Color);
|
||||
Assert.AreEqual(new Color { A = 240, R = 255, G = 255, B = 255 }, borderColorBlockItem.Color);
|
||||
|
||||
var soundBlockItem = testInputBlockItems.First(b => b is SoundBlockItem) as SoundBlockItem;
|
||||
Assert.IsNotNull(soundBlockItem);
|
||||
@@ -2128,11 +2259,11 @@ namespace Filtration.Parser.Tests.Services
|
||||
// Assert
|
||||
var textColorBlockItem = testInputBlockItems.First(b => b is TextColorBlockItem) as TextColorBlockItem;
|
||||
Assert.IsNotNull(textColorBlockItem);
|
||||
Assert.AreEqual(new Color { A = 255, R = 240, G = 200, B = 150 }, textColorBlockItem.Color);
|
||||
Assert.AreEqual(new Color { A = 240, R = 240, G = 200, B = 150 }, textColorBlockItem.Color);
|
||||
|
||||
var backgroundColorBlockItem = testInputBlockItems.First(b => b is BackgroundColorBlockItem) as BackgroundColorBlockItem;
|
||||
Assert.IsNotNull(backgroundColorBlockItem);
|
||||
Assert.AreEqual(new Color { A = 255, R = 0, G = 0, B = 0 }, backgroundColorBlockItem.Color);
|
||||
Assert.AreEqual(new Color { A = 240, R = 0, G = 0, B = 0 }, backgroundColorBlockItem.Color);
|
||||
|
||||
Assert.AreEqual(0, testInputBlockItems.Count(b => b is BorderColorBlockItem));
|
||||
}
|
||||
|
||||
@@ -119,7 +119,7 @@ namespace Filtration.Parser.Tests.Services
|
||||
" Class \"Life Flasks\" \"Mana Flasks\"" + Environment.NewLine +
|
||||
" Rarity Normal "
|
||||
)
|
||||
} && s.ItemFilterBlockGroups == new ObservableCollection<ItemFilterBlockGroup> { new ItemFilterBlockGroup("Root", null, false) }
|
||||
} && s.ItemFilterBlockGroups == new ObservableCollection<ItemFilterBlockGroup> { new ItemFilterBlockGroup("Root", null, false, false) }
|
||||
&& s.ThemeComponents == new ThemeComponentCollection()
|
||||
&& s.ItemFilterScriptSettings == new ItemFilterScriptSettings(new ThemeComponentCollection())
|
||||
&& s.Description == "Script description\r\nScript description\r\nScript description\r\nScript description");
|
||||
@@ -285,13 +285,11 @@ namespace Filtration.Parser.Tests.Services
|
||||
" ItemLevel > 2" + Environment.NewLine +
|
||||
" SetTextColor 255 40 0" + Environment.NewLine +
|
||||
Environment.NewLine +
|
||||
"#Disabled Block Start" + Environment.NewLine +
|
||||
"#Show" + Environment.NewLine +
|
||||
"# ItemLevel > 2" + Environment.NewLine +
|
||||
"# SetTextColor 255 215 0" + Environment.NewLine +
|
||||
"# SetBorderColor 255 105 180" + Environment.NewLine +
|
||||
"# SetFontSize 32" + Environment.NewLine +
|
||||
"#Disabled Block End" + Environment.NewLine +
|
||||
Environment.NewLine +
|
||||
"Show" + Environment.NewLine +
|
||||
" ItemLevel > 20" + Environment.NewLine +
|
||||
@@ -316,13 +314,11 @@ namespace Filtration.Parser.Tests.Services
|
||||
" ItemLevel > 2" + Environment.NewLine +
|
||||
" SetTextColor 255 40 0" + Environment.NewLine +
|
||||
Environment.NewLine +
|
||||
"#Disabled Block Start" + Environment.NewLine +
|
||||
"#Show" + Environment.NewLine +
|
||||
"# ItemLevel > 2" + Environment.NewLine +
|
||||
"# SetTextColor 255 215 0" + Environment.NewLine +
|
||||
"# SetBorderColor 255 105 180" + Environment.NewLine +
|
||||
"# SetFontSize 32" + Environment.NewLine +
|
||||
"#Disabled Block End" + Environment.NewLine +
|
||||
Environment.NewLine +
|
||||
"Show" + Environment.NewLine +
|
||||
" ItemLevel > 20" + Environment.NewLine +
|
||||
@@ -355,11 +351,9 @@ namespace Filtration.Parser.Tests.Services
|
||||
" ItemLevel > 2" + Environment.NewLine +
|
||||
" SetTextColor 255 40 0" + Environment.NewLine +
|
||||
Environment.NewLine +
|
||||
"#Disabled Block Start" + Environment.NewLine +
|
||||
"# This is a disabled block" + Environment.NewLine +
|
||||
"#Show" + Environment.NewLine +
|
||||
"# ItemLevel > 2" + Environment.NewLine +
|
||||
"#Disabled Block End";
|
||||
"# ItemLevel > 2";
|
||||
|
||||
|
||||
var blockTranslator = new ItemFilterBlockTranslator(Mock.Of<IBlockGroupHierarchyBuilder>());
|
||||
@@ -384,17 +378,15 @@ namespace Filtration.Parser.Tests.Services
|
||||
" ItemLevel > 2" + Environment.NewLine +
|
||||
" SetTextColor 255 40 0" + Environment.NewLine +
|
||||
Environment.NewLine +
|
||||
"#Disabled Block Start" + Environment.NewLine +
|
||||
"# This is a disabled block" + Environment.NewLine +
|
||||
"#Show#My Block Group" + Environment.NewLine +
|
||||
"# ItemLevel > 2" + Environment.NewLine +
|
||||
"#Disabled Block End";
|
||||
"# ItemLevel > 2";
|
||||
|
||||
|
||||
var mockBlockGroupHierarchyBuilder = new Mock<IBlockGroupHierarchyBuilder>();
|
||||
mockBlockGroupHierarchyBuilder.Setup(
|
||||
b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>()))
|
||||
.Returns(new ItemFilterBlockGroup("My Block Group", null));
|
||||
b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny<IEnumerable<string>>(), true, false))
|
||||
.Returns(new ItemFilterBlockGroup("My Block Group", null, false, true));
|
||||
|
||||
var blockTranslator = new ItemFilterBlockTranslator(mockBlockGroupHierarchyBuilder.Object);
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
<HintPath>..\packages\Castle.Windsor.3.4.0\lib\net45\Castle.Windsor.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationFramework" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
|
||||
@@ -20,16 +20,16 @@ namespace Filtration.Parser.Services
|
||||
_rootBlockGroup = null;
|
||||
}
|
||||
|
||||
public ItemFilterBlockGroup IntegrateStringListIntoBlockGroupHierarchy(IEnumerable<string> groupStrings)
|
||||
public ItemFilterBlockGroup IntegrateStringListIntoBlockGroupHierarchy(IEnumerable<string> groupStrings, bool show, bool enabled)
|
||||
{
|
||||
if (_rootBlockGroup == null)
|
||||
{
|
||||
throw new Exception("BlockGroupHierarchyBuilder must be initialised with root BlockGroup before use");
|
||||
}
|
||||
return IntegrateStringListIntoBlockGroupHierarchy(groupStrings, _rootBlockGroup);
|
||||
return IntegrateStringListIntoBlockGroupHierarchy(groupStrings, _rootBlockGroup, show, enabled);
|
||||
}
|
||||
|
||||
public ItemFilterBlockGroup IntegrateStringListIntoBlockGroupHierarchy(IEnumerable<string> groupStrings, ItemFilterBlockGroup startItemGroup)
|
||||
public ItemFilterBlockGroup IntegrateStringListIntoBlockGroupHierarchy(IEnumerable<string> groupStrings, ItemFilterBlockGroup startItemGroup, bool show, bool enabled)
|
||||
{
|
||||
var inputGroups = groupStrings.ToList();
|
||||
var firstGroup = inputGroups.First().Trim();
|
||||
@@ -47,12 +47,47 @@ namespace Filtration.Parser.Services
|
||||
if (matchingChildItemGroup == null)
|
||||
{
|
||||
var newItemGroup = CreateBlockGroup(inputGroups.First().Trim(), startItemGroup);
|
||||
newItemGroup.IsShowChecked = show;
|
||||
newItemGroup.IsEnableChecked = enabled;
|
||||
startItemGroup.ChildGroups.Add(newItemGroup);
|
||||
inputGroups = inputGroups.Skip(1).ToList();
|
||||
return inputGroups.Count > 0 ? IntegrateStringListIntoBlockGroupHierarchy(inputGroups, newItemGroup) : newItemGroup;
|
||||
if (inputGroups.Count > 0)
|
||||
{
|
||||
return IntegrateStringListIntoBlockGroupHierarchy(inputGroups, newItemGroup, show, enabled);
|
||||
}
|
||||
else
|
||||
{
|
||||
var leafNode = new ItemFilterBlockGroup("", newItemGroup, false, true);
|
||||
leafNode.IsShowChecked = show;
|
||||
leafNode.IsEnableChecked = enabled;
|
||||
newItemGroup.ChildGroups.Add(leafNode);
|
||||
return leafNode;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(matchingChildItemGroup.IsShowChecked != show)
|
||||
{
|
||||
matchingChildItemGroup.IsShowChecked = null;
|
||||
}
|
||||
if (matchingChildItemGroup.IsEnableChecked != enabled)
|
||||
{
|
||||
matchingChildItemGroup.IsEnableChecked = null;
|
||||
}
|
||||
}
|
||||
inputGroups = inputGroups.Skip(1).ToList();
|
||||
return inputGroups.Count > 0 ? IntegrateStringListIntoBlockGroupHierarchy(inputGroups, matchingChildItemGroup) : matchingChildItemGroup;
|
||||
if(inputGroups.Count > 0)
|
||||
{
|
||||
return IntegrateStringListIntoBlockGroupHierarchy(inputGroups, matchingChildItemGroup, show, enabled);
|
||||
}
|
||||
else
|
||||
{
|
||||
var leafNode = new ItemFilterBlockGroup("", matchingChildItemGroup, false, true);
|
||||
leafNode.IsShowChecked = show;
|
||||
leafNode.IsEnableChecked = enabled;
|
||||
matchingChildItemGroup.ChildGroups.Add(leafNode);
|
||||
return leafNode;
|
||||
}
|
||||
}
|
||||
|
||||
private ItemFilterBlockGroup CreateBlockGroup(string groupNameString, ItemFilterBlockGroup parentGroup)
|
||||
|
||||
@@ -32,8 +32,7 @@ namespace Filtration.Parser.Services
|
||||
// Converts a string into an ItemFilterCommentBlock maintaining newlines and spaces but removing # characters
|
||||
public IItemFilterCommentBlock TranslateStringToItemFilterCommentBlock(string inputString, IItemFilterScript parentItemFilterScript, string originalString = "")
|
||||
{
|
||||
var itemFilterCommentBlock = new ItemFilterCommentBlock(parentItemFilterScript);
|
||||
itemFilterCommentBlock.OriginalText = originalString;
|
||||
var itemFilterCommentBlock = new ItemFilterCommentBlock(parentItemFilterScript) {OriginalText = originalString};
|
||||
|
||||
foreach (var line in new LineReader(() => new StringReader(inputString)))
|
||||
{
|
||||
@@ -63,13 +62,35 @@ namespace Filtration.Parser.Services
|
||||
|
||||
foreach (var line in new LineReader(() => new StringReader(inputString)))
|
||||
{
|
||||
if (line.StartsWith(@"#") && !showHideFound)
|
||||
if (line.StartsWith(@"#"))
|
||||
{
|
||||
block.Description = line.TrimStart('#').TrimStart(' ');
|
||||
if(!showHideFound)
|
||||
{
|
||||
block.Description = line.TrimStart('#').TrimStart(' ');
|
||||
}
|
||||
else
|
||||
{
|
||||
if(block.BlockItems.Count > 1)
|
||||
{
|
||||
block.BlockItems.Last().Comment += Environment.NewLine + line.TrimStart('#');
|
||||
}
|
||||
else
|
||||
{
|
||||
block.ActionBlockItem.Comment += Environment.NewLine + line.TrimStart('#');
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
var trimmedLine = line.Trim();
|
||||
var fullLine = line.Trim();
|
||||
var trimmedLine = fullLine;
|
||||
var blockComment = "";
|
||||
var themeComponentType = -1;
|
||||
if(trimmedLine.IndexOf('#') > 0)
|
||||
{
|
||||
blockComment = trimmedLine.Substring(trimmedLine.IndexOf('#') + 1);
|
||||
trimmedLine = trimmedLine.Substring(0, trimmedLine.IndexOf('#')).Trim();
|
||||
}
|
||||
var spaceOrEndOfLinePos = trimmedLine.IndexOf(" ", StringComparison.Ordinal) > 0 ? trimmedLine.IndexOf(" ", StringComparison.Ordinal) : trimmedLine.Length;
|
||||
|
||||
var lineOption = trimmedLine.Substring(0, spaceOrEndOfLinePos);
|
||||
@@ -88,11 +109,11 @@ namespace Filtration.Parser.Services
|
||||
// group hierarchy, if block groups are disabled it is preserved as a simple text comment.
|
||||
if (parentItemFilterScript.ItemFilterScriptSettings.BlockGroupsEnabled)
|
||||
{
|
||||
AddBlockGroupToBlock(block, trimmedLine);
|
||||
AddBlockGroupToBlock(block, fullLine);
|
||||
}
|
||||
else
|
||||
{
|
||||
block.ActionBlockItem.Comment = GetTextAfterFirstComment(trimmedLine);
|
||||
block.ActionBlockItem.Comment = GetTextAfterFirstComment(fullLine);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -193,7 +214,11 @@ namespace Filtration.Parser.Services
|
||||
// Only ever use the last SetTextColor item encountered as multiples aren't valid.
|
||||
RemoveExistingBlockItemsOfType<TextColorBlockItem>(block);
|
||||
|
||||
AddColorItemToBlockItems<TextColorBlockItem>(block, trimmedLine);
|
||||
var result = Regex.Matches(trimmedLine, @"([\w\s]*)");
|
||||
|
||||
var blockItem = new TextColorBlockItem {Color = GetColorFromString(result[0].Groups[1].Value)};
|
||||
block.BlockItems.Add(blockItem);
|
||||
themeComponentType = (int)ThemeComponentType.TextColor;
|
||||
break;
|
||||
}
|
||||
case "SetBackgroundColor":
|
||||
@@ -201,7 +226,11 @@ namespace Filtration.Parser.Services
|
||||
// Only ever use the last SetBackgroundColor item encountered as multiples aren't valid.
|
||||
RemoveExistingBlockItemsOfType<BackgroundColorBlockItem>(block);
|
||||
|
||||
AddColorItemToBlockItems<BackgroundColorBlockItem>(block, trimmedLine);
|
||||
var result = Regex.Matches(trimmedLine, @"([\w\s]*)");
|
||||
|
||||
var blockItem = new BackgroundColorBlockItem {Color = GetColorFromString(result[0].Groups[1].Value)};
|
||||
block.BlockItems.Add(blockItem);
|
||||
themeComponentType = (int)ThemeComponentType.BackgroundColor;
|
||||
break;
|
||||
}
|
||||
case "SetBorderColor":
|
||||
@@ -209,7 +238,11 @@ namespace Filtration.Parser.Services
|
||||
// Only ever use the last SetBorderColor item encountered as multiples aren't valid.
|
||||
RemoveExistingBlockItemsOfType<BorderColorBlockItem>(block);
|
||||
|
||||
AddColorItemToBlockItems<BorderColorBlockItem>(block, trimmedLine);
|
||||
var result = Regex.Matches(trimmedLine, @"([\w\s]*)");
|
||||
|
||||
var blockItem = new BorderColorBlockItem {Color = GetColorFromString(result[0].Groups[1].Value)};
|
||||
block.BlockItems.Add(blockItem);
|
||||
themeComponentType = (int)ThemeComponentType.BorderColor;
|
||||
break;
|
||||
}
|
||||
case "SetFontSize":
|
||||
@@ -217,15 +250,12 @@ namespace Filtration.Parser.Services
|
||||
// Only ever use the last SetFontSize item encountered as multiples aren't valid.
|
||||
RemoveExistingBlockItemsOfType<FontSizeBlockItem>(block);
|
||||
|
||||
var match = Regex.Matches(trimmedLine, @"(\s+(\d+)\s*)([#]?)(.*)");
|
||||
var match = Regex.Matches(trimmedLine, @"(\s+(\d+)\s*)");
|
||||
if (match.Count > 0)
|
||||
{
|
||||
var blockItem = new FontSizeBlockItem(Convert.ToInt16(match[0].Groups[2].Value));
|
||||
if(match[0].Groups[3].Value == "#" && !string.IsNullOrWhiteSpace(match[0].Groups[4].Value))
|
||||
{
|
||||
blockItem.ThemeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.FontSize, match[0].Groups[4].Value.Trim(), blockItem.Value);
|
||||
}
|
||||
block.BlockItems.Add(blockItem);
|
||||
themeComponentType = (int)ThemeComponentType.FontSize;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -237,27 +267,13 @@ namespace Filtration.Parser.Services
|
||||
RemoveExistingBlockItemsOfType<PositionalSoundBlockItem>(block);
|
||||
RemoveExistingBlockItemsOfType<CustomSoundBlockItem>(block);
|
||||
|
||||
var match = Regex.Match(trimmedLine, @"\S+\s+(\S+)\s?(\d+)?\s*([#]?)(.*)");
|
||||
var match = Regex.Match(trimmedLine, @"\S+\s+(\S+)\s?(\d+)?");
|
||||
|
||||
if (match.Success)
|
||||
{
|
||||
string firstValue = match.Groups[1].Value;
|
||||
int secondValue;
|
||||
|
||||
if (match.Groups[2].Success)
|
||||
{
|
||||
secondValue = Convert.ToInt16(match.Groups[2].Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
secondValue = 79;
|
||||
}
|
||||
|
||||
ThemeComponent themeComponent = null;
|
||||
if(match.Groups[3].Value == "#" && !string.IsNullOrWhiteSpace(match.Groups[4].Value))
|
||||
{
|
||||
themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.AlertSound, match.Groups[4].Value.Trim(), firstValue, secondValue);
|
||||
}
|
||||
var secondValue = match.Groups[2].Success ? Convert.ToInt16(match.Groups[2].Value) : 79;
|
||||
|
||||
if (lineOption == "PlayAlertSound")
|
||||
{
|
||||
@@ -266,7 +282,6 @@ namespace Filtration.Parser.Services
|
||||
Value = firstValue,
|
||||
SecondValue = secondValue
|
||||
};
|
||||
blockItemValue.ThemeComponent = themeComponent;
|
||||
block.BlockItems.Add(blockItemValue);
|
||||
}
|
||||
else
|
||||
@@ -276,9 +291,9 @@ namespace Filtration.Parser.Services
|
||||
Value = firstValue,
|
||||
SecondValue = secondValue
|
||||
};
|
||||
blockItemValue.ThemeComponent = themeComponent;
|
||||
block.BlockItems.Add(blockItemValue);
|
||||
}
|
||||
themeComponentType = (int)ThemeComponentType.AlertSound;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -324,18 +339,19 @@ namespace Filtration.Parser.Services
|
||||
{
|
||||
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),
|
||||
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))
|
||||
{
|
||||
ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.Icon, match.Groups[5].Value.Trim(),
|
||||
blockItemValue.Size, blockItemValue.Color, blockItemValue.Shape);
|
||||
blockItemValue.ThemeComponent = themeComponent;
|
||||
}
|
||||
block.BlockItems.Add(blockItemValue);
|
||||
themeComponentType = (int)ThemeComponentType.Icon;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -345,7 +361,7 @@ namespace Filtration.Parser.Services
|
||||
RemoveExistingBlockItemsOfType<PlayEffectBlockItem>(block);
|
||||
|
||||
// TODO: Get colors programmatically
|
||||
var match = Regex.Match(trimmedLine, @"\S+\s+(Red|Green|Blue|Brown|White|Yellow)\s+(Temp)?\s*([#]?)(.*)", RegexOptions.IgnoreCase);
|
||||
var match = Regex.Match(trimmedLine, @"\S+\s+(Red|Green|Blue|Brown|White|Yellow)\s*(Temp)?", RegexOptions.IgnoreCase);
|
||||
|
||||
if (match.Success)
|
||||
{
|
||||
@@ -354,14 +370,8 @@ namespace Filtration.Parser.Services
|
||||
Color = EnumHelper.GetEnumValueFromDescription<EffectColor>(match.Groups[1].Value),
|
||||
Temporary = match.Groups[2].Value.Trim().ToLower() == "temp"
|
||||
};
|
||||
|
||||
if(match.Groups[3].Value == "#" && !string.IsNullOrWhiteSpace(match.Groups[4].Value))
|
||||
{
|
||||
ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.Effect, match.Groups[4].Value.Trim(),
|
||||
blockItemValue.Color, blockItemValue.Temporary);
|
||||
blockItemValue.ThemeComponent = themeComponent;
|
||||
}
|
||||
block.BlockItems.Add(blockItemValue);
|
||||
themeComponentType = (int)ThemeComponentType.Effect;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -372,7 +382,7 @@ namespace Filtration.Parser.Services
|
||||
RemoveExistingBlockItemsOfType<SoundBlockItem>(block);
|
||||
RemoveExistingBlockItemsOfType<PositionalSoundBlockItem>(block);
|
||||
|
||||
var match = Regex.Match(trimmedLine, @"\S+\s+""(\S+)""\s*([#]?)(.*)");
|
||||
var match = Regex.Match(trimmedLine, @"\S+\s+""([^\*\<\>\?|]+)""");
|
||||
|
||||
if (match.Success)
|
||||
{
|
||||
@@ -380,13 +390,8 @@ namespace Filtration.Parser.Services
|
||||
{
|
||||
Value = match.Groups[1].Value
|
||||
};
|
||||
|
||||
if(match.Groups[2].Value == "#" && !string.IsNullOrWhiteSpace(match.Groups[3].Value))
|
||||
{
|
||||
ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.CustomSound, match.Groups[3].Value.Trim(), blockItemValue.Value);
|
||||
blockItemValue.ThemeComponent = themeComponent;
|
||||
}
|
||||
block.BlockItems.Add(blockItemValue);
|
||||
themeComponentType = (int)ThemeComponentType.CustomSound;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -396,8 +401,86 @@ namespace Filtration.Parser.Services
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(blockComment) && block.BlockItems.Count > 1)
|
||||
{
|
||||
if(!(block.BlockItems.Last() is IBlockItemWithTheme blockItemWithTheme))
|
||||
{
|
||||
block.BlockItems.Last().Comment = blockComment;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch((ThemeComponentType)themeComponentType)
|
||||
{
|
||||
case ThemeComponentType.AlertSound:
|
||||
{
|
||||
ThemeComponent themeComponent;
|
||||
if(blockItemWithTheme is SoundBlockItem item)
|
||||
{
|
||||
themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.AlertSound, blockComment.Trim(),
|
||||
item.Value, item.SecondValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.AlertSound, blockComment.Trim(),
|
||||
((PositionalSoundBlockItem)blockItemWithTheme).Value, ((PositionalSoundBlockItem)blockItemWithTheme).SecondValue);
|
||||
}
|
||||
blockItemWithTheme.ThemeComponent = themeComponent;
|
||||
break;
|
||||
}
|
||||
case ThemeComponentType.BackgroundColor:
|
||||
{
|
||||
ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.BackgroundColor,
|
||||
blockComment.Trim(), ((BackgroundColorBlockItem)blockItemWithTheme).Color);
|
||||
blockItemWithTheme.ThemeComponent = themeComponent;
|
||||
break;
|
||||
}
|
||||
case ThemeComponentType.BorderColor:
|
||||
{
|
||||
ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.BorderColor,
|
||||
blockComment.Trim(), ((BorderColorBlockItem)blockItemWithTheme).Color);
|
||||
blockItemWithTheme.ThemeComponent = themeComponent;
|
||||
break;
|
||||
}
|
||||
case ThemeComponentType.CustomSound:
|
||||
{
|
||||
ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.CustomSound,
|
||||
blockComment.Trim(), ((CustomSoundBlockItem)blockItemWithTheme).Value);
|
||||
blockItemWithTheme.ThemeComponent = themeComponent;
|
||||
break;
|
||||
}
|
||||
case ThemeComponentType.Effect:
|
||||
{
|
||||
ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.Effect,
|
||||
blockComment.Trim(), ((EffectColorBlockItem)blockItemWithTheme).Color, ((EffectColorBlockItem)blockItemWithTheme).Temporary);
|
||||
blockItemWithTheme.ThemeComponent = themeComponent;
|
||||
break;
|
||||
}
|
||||
case ThemeComponentType.FontSize:
|
||||
{
|
||||
ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.FontSize,
|
||||
blockComment.Trim(), ((FontSizeBlockItem)blockItemWithTheme).Value);
|
||||
blockItemWithTheme.ThemeComponent = themeComponent;
|
||||
break;
|
||||
}
|
||||
case ThemeComponentType.Icon:
|
||||
{
|
||||
ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.Icon, blockComment.Trim(),
|
||||
((IconBlockItem)blockItemWithTheme).Size, ((IconBlockItem)blockItemWithTheme).Color, ((IconBlockItem)blockItemWithTheme).Shape);
|
||||
blockItemWithTheme.ThemeComponent = themeComponent;
|
||||
break;
|
||||
}
|
||||
case ThemeComponentType.TextColor:
|
||||
{
|
||||
ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.TextColor,
|
||||
blockComment.Trim(), ((TextColorBlockItem)blockItemWithTheme).Color);
|
||||
blockItemWithTheme.ThemeComponent = themeComponent;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
block.IsEdited = false;
|
||||
return block;
|
||||
}
|
||||
@@ -460,48 +543,6 @@ namespace Filtration.Parser.Services
|
||||
}
|
||||
}
|
||||
|
||||
private void AddColorItemToBlockItems<T>(IItemFilterBlock block, string inputString) where T : ColorBlockItem
|
||||
{
|
||||
block.BlockItems.Add(GetColorBlockItemFromString<T>(inputString));
|
||||
}
|
||||
|
||||
private T GetColorBlockItemFromString<T>(string inputString) where T: ColorBlockItem
|
||||
{
|
||||
var blockItem = Activator.CreateInstance<T>();
|
||||
var result = Regex.Matches(inputString, @"([\w\s]*)[#]?(.*)");
|
||||
|
||||
blockItem.Color = GetColorFromString(result[0].Groups[1].Value);
|
||||
|
||||
var componentName = result[0].Groups[2].Value.Trim();
|
||||
if (!string.IsNullOrEmpty(componentName))
|
||||
{
|
||||
ThemeComponentType componentType;
|
||||
if (typeof(T) == typeof(TextColorBlockItem))
|
||||
{
|
||||
componentType = ThemeComponentType.TextColor;
|
||||
}
|
||||
else if (typeof(T) == typeof(BackgroundColorBlockItem))
|
||||
{
|
||||
componentType = ThemeComponentType.BackgroundColor;
|
||||
}
|
||||
else if (typeof(T) == typeof(BorderColorBlockItem))
|
||||
{
|
||||
componentType = ThemeComponentType.BorderColor;
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception("Parsing error - unknown theme component type");
|
||||
}
|
||||
if (_masterComponentCollection != null)
|
||||
{
|
||||
blockItem.ThemeComponent = _masterComponentCollection.AddComponent(componentType, componentName,
|
||||
blockItem.Color);
|
||||
}
|
||||
}
|
||||
|
||||
return blockItem;
|
||||
}
|
||||
|
||||
public void ReplaceAudioVisualBlockItemsFromString(ObservableCollection<IItemFilterBlockItem> blockItems, string inputString)
|
||||
{
|
||||
// Reverse iterate to remove existing IAudioVisualBlockItems
|
||||
@@ -516,36 +557,84 @@ namespace Filtration.Parser.Services
|
||||
foreach (var line in new LineReader(() => new StringReader(inputString)))
|
||||
{
|
||||
var matches = Regex.Match(line, @"(\w+)");
|
||||
var blockComment = "";
|
||||
var trimmedLine = line.Trim();
|
||||
if (trimmedLine.IndexOf('#') > 0)
|
||||
{
|
||||
blockComment = trimmedLine.Substring(trimmedLine.IndexOf('#') + 1);
|
||||
trimmedLine = trimmedLine.Substring(0, trimmedLine.IndexOf('#')).Trim();
|
||||
}
|
||||
|
||||
switch (matches.Value)
|
||||
{
|
||||
case "PlayAlertSound":
|
||||
{
|
||||
var match = Regex.Match(line, @"\s+(\S+) (\d+)");
|
||||
var match = Regex.Match(trimmedLine, @"\s+(\S+) (\d+)");
|
||||
if (!match.Success) break;
|
||||
blockItems.Add(new SoundBlockItem(match.Groups[1].Value, Convert.ToInt16(match.Groups[2].Value)));
|
||||
var blockItem = new SoundBlockItem(match.Groups[1].Value, Convert.ToInt16(match.Groups[2].Value));
|
||||
if(_masterComponentCollection != null && !string.IsNullOrWhiteSpace(blockComment))
|
||||
{
|
||||
ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.AlertSound,
|
||||
blockComment, blockItem.Value, blockItem.SecondValue);
|
||||
blockItem.ThemeComponent = themeComponent;
|
||||
}
|
||||
blockItems.Add(blockItem);
|
||||
break;
|
||||
}
|
||||
case "SetTextColor":
|
||||
{
|
||||
blockItems.Add(GetColorBlockItemFromString<TextColorBlockItem>(line));
|
||||
var result = Regex.Matches(trimmedLine, @"([\w\s]*)");
|
||||
|
||||
var blockItem = new TextColorBlockItem {Color = GetColorFromString(result[0].Groups[1].Value)};
|
||||
if(_masterComponentCollection != null && !string.IsNullOrWhiteSpace(blockComment))
|
||||
{
|
||||
ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.TextColor,
|
||||
blockComment, blockItem.Color);
|
||||
blockItem.ThemeComponent = themeComponent;
|
||||
}
|
||||
blockItems.Add(blockItem);
|
||||
break;
|
||||
}
|
||||
case "SetBackgroundColor":
|
||||
{
|
||||
blockItems.Add(GetColorBlockItemFromString<BackgroundColorBlockItem>(line));
|
||||
var result = Regex.Matches(trimmedLine, @"([\w\s]*)");
|
||||
|
||||
var blockItem = new BackgroundColorBlockItem {Color = GetColorFromString(result[0].Groups[1].Value)};
|
||||
if(_masterComponentCollection != null && !string.IsNullOrWhiteSpace(blockComment))
|
||||
{
|
||||
ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.BackgroundColor,
|
||||
blockComment, blockItem.Color);
|
||||
blockItem.ThemeComponent = themeComponent;
|
||||
}
|
||||
blockItems.Add(blockItem);
|
||||
break;
|
||||
}
|
||||
case "SetBorderColor":
|
||||
{
|
||||
blockItems.Add(GetColorBlockItemFromString<BorderColorBlockItem>(line));
|
||||
var result = Regex.Matches(trimmedLine, @"([\w\s]*)");
|
||||
|
||||
var blockItem = new BorderColorBlockItem {Color = GetColorFromString(result[0].Groups[1].Value)};
|
||||
if(_masterComponentCollection != null && !string.IsNullOrWhiteSpace(blockComment))
|
||||
{
|
||||
ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.BorderColor,
|
||||
blockComment, blockItem.Color);
|
||||
blockItem.ThemeComponent = themeComponent;
|
||||
}
|
||||
blockItems.Add(blockItem);
|
||||
break;
|
||||
}
|
||||
case "SetFontSize":
|
||||
{
|
||||
var match = Regex.Match(line, @"\s+(\d+)");
|
||||
var match = Regex.Match(trimmedLine, @"\s+(\d+)");
|
||||
if (!match.Success) break;
|
||||
blockItems.Add(new FontSizeBlockItem(Convert.ToInt16(match.Value)));
|
||||
var blockItem = new FontSizeBlockItem(Convert.ToInt16(match.Value));
|
||||
if (_masterComponentCollection != null && !string.IsNullOrWhiteSpace(blockComment))
|
||||
{
|
||||
ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.FontSize,
|
||||
blockComment, blockItem.Value);
|
||||
blockItem.ThemeComponent = themeComponent;
|
||||
}
|
||||
blockItems.Add(blockItem);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -561,8 +650,8 @@ namespace Filtration.Parser.Services
|
||||
|
||||
if (blockGroups.Count(b => !string.IsNullOrEmpty(b.Trim())) > 0)
|
||||
{
|
||||
block.BlockGroup = _blockGroupHierarchyBuilder.IntegrateStringListIntoBlockGroupHierarchy(blockGroups);
|
||||
block.BlockGroup.IsChecked = block.Action == BlockAction.Show;
|
||||
block.BlockGroup = _blockGroupHierarchyBuilder.IntegrateStringListIntoBlockGroupHierarchy(blockGroups,
|
||||
block.Action == BlockAction.Show, block.Enabled);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -583,7 +672,7 @@ namespace Filtration.Parser.Services
|
||||
case 3:
|
||||
return new Color
|
||||
{
|
||||
A = byte.MaxValue,
|
||||
A = 240,
|
||||
R = Convert.ToByte(argbValues[0].Value),
|
||||
G = Convert.ToByte(argbValues[1].Value),
|
||||
B = Convert.ToByte(argbValues[2].Value)
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Windows;
|
||||
using Filtration.Common.Utilities;
|
||||
using Filtration.ObjectModel;
|
||||
using Filtration.ObjectModel.Factories;
|
||||
@@ -48,18 +48,58 @@ namespace Filtration.Parser.Services
|
||||
_itemFilterScriptFactory = itemFilterScriptFactory;
|
||||
}
|
||||
|
||||
public static string PreprocessDisabledBlocks(string inputString)
|
||||
public static string PreprocessDisabledBlocks(string inputString, out List<bool> inBlock)
|
||||
{
|
||||
bool inDisabledBlock = false;
|
||||
inBlock = new List<bool>();
|
||||
|
||||
var lines = Regex.Split(inputString, "\r\n|\r|\n").ToList();
|
||||
// find first show/hide and check script
|
||||
for (var i = 0; i < lines.Count; i++)
|
||||
{
|
||||
inBlock.Add(false);
|
||||
lines[i] = lines[i].Trim();
|
||||
if(!lines[i].StartsWith("#"))
|
||||
{
|
||||
string curLine = Regex.Replace(lines[i], @"\s+", "");
|
||||
if ((curLine.StartsWith("Show") || curLine.StartsWith("Hide")) && (curLine.Length == 4 || curLine[4] == '#')) // found
|
||||
{
|
||||
inBlock[i] = true;
|
||||
break;
|
||||
}
|
||||
else // This means script has wrong syntax, just replace those lines with empty string
|
||||
{
|
||||
lines[i] = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// find remaining boundaries
|
||||
var lastInBlock = inBlock.Count - 1;
|
||||
for (var i = inBlock.Count; i < lines.Count; i++)
|
||||
{
|
||||
inBlock.Add(false);
|
||||
lines[i] = lines[i].Trim();
|
||||
if (!lines[i].StartsWith("#") && lines[i].Length > 0)
|
||||
{
|
||||
if (!lines[i].StartsWith("Show") && !lines[i].StartsWith("Hide")) // Continuing inline
|
||||
{
|
||||
for(int j = lastInBlock + 1; j < i; j++)
|
||||
{
|
||||
inBlock[j] = true;
|
||||
}
|
||||
}
|
||||
lastInBlock = i;
|
||||
inBlock[i] = true;
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = 0; i < lines.Count; i++)
|
||||
{
|
||||
if (!inDisabledBlock && lines[i].StartsWith("#"))
|
||||
{
|
||||
string curLine = Regex.Replace(lines[i].Substring(1), @"\s+", "");
|
||||
if ((curLine.StartsWith("Show") || curLine.StartsWith("Hide")) && (curLine.Length == 4 || curLine[4] == '#'))
|
||||
if ((curLine.StartsWith("Show") || curLine.StartsWith("Hide")) && (curLine.Length == 4 || curLine[4] == '#') && !inBlock[i])
|
||||
{
|
||||
inDisabledBlock = true;
|
||||
lines[i] = lines[i].Substring(1).TrimStart(' ');
|
||||
@@ -88,16 +128,29 @@ namespace Filtration.Parser.Services
|
||||
var script = _itemFilterScriptFactory.Create();
|
||||
_blockGroupHierarchyBuilder.Initialise(script.ItemFilterBlockGroups.First());
|
||||
|
||||
//Remove old disabled tags
|
||||
inputString = Regex.Replace(inputString, @"#Disabled\sBlock\s(Start|End).*?\n", "");
|
||||
inputString = (inputString.EndsWith("\n#Disabled Block End")) ? inputString.Substring(0, inputString.Length - 19) : inputString;
|
||||
if(Regex.Matches(inputString, @"#Disabled\sBlock\s(Start|End).*?\n").Count > 0)
|
||||
{
|
||||
if (MessageBox.Show(
|
||||
"Loaded script contains special '#Disabled Block Start' lines." +
|
||||
" These may be coming from old versions of Filtration or Greengroove's filter." +
|
||||
"It is suggested to remove them however this may cause problems with original source" +
|
||||
Environment.NewLine + "(There is no in game effect of those lines)" +
|
||||
Environment.NewLine + Environment.NewLine + "Would you like to remove them?", "Special Comment Lines Found",
|
||||
MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
|
||||
{
|
||||
//Remove old disabled tags
|
||||
inputString = Regex.Replace(inputString, @"#Disabled\sBlock\s(Start|End).*?\n", "");
|
||||
inputString = (inputString.EndsWith("\n#Disabled Block End")) ? inputString.Substring(0, inputString.Length - 19) : inputString;
|
||||
}
|
||||
}
|
||||
|
||||
var originalLines = Regex.Split(inputString, "\r\n|\r|\n");
|
||||
|
||||
inputString = inputString.Replace("\t", "");
|
||||
inputString = PreprocessDisabledBlocks(inputString);
|
||||
List<bool> inBlock;
|
||||
inputString = PreprocessDisabledBlocks(inputString, out inBlock);
|
||||
|
||||
var conditionBoundaries = IdentifyBlockBoundaries(inputString);
|
||||
var conditionBoundaries = IdentifyBlockBoundaries(inputString, inBlock);
|
||||
|
||||
var lines = Regex.Split(inputString, "\r\n|\r|\n");
|
||||
|
||||
@@ -158,7 +211,18 @@ namespace Filtration.Parser.Services
|
||||
return script;
|
||||
}
|
||||
|
||||
private static LinkedList<ItemFilterBlockBoundary> IdentifyBlockBoundaries(string inputString)
|
||||
public IItemFilterScript TranslatePastedStringToItemFilterScript(string inputString, bool blockGroupsEnabled)
|
||||
{
|
||||
//Remove old disabled tags to prevent messagebox on paste
|
||||
inputString = Regex.Replace(inputString, @"#Disabled\sBlock\s(Start|End).*?\n", "");
|
||||
inputString = (inputString.EndsWith("\n#Disabled Block End")) ? inputString.Substring(0, inputString.Length - 19) : inputString;
|
||||
|
||||
inputString = (blockGroupsEnabled ? "# EnableBlockGroups" : "#") + Environment.NewLine + Environment.NewLine + inputString;
|
||||
|
||||
return TranslateStringToItemFilterScript(inputString);
|
||||
}
|
||||
|
||||
private static LinkedList<ItemFilterBlockBoundary> IdentifyBlockBoundaries(string inputString, List<bool> inBlock)
|
||||
{
|
||||
var blockBoundaries = new LinkedList<ItemFilterBlockBoundary>();
|
||||
var previousLine = string.Empty;
|
||||
@@ -177,9 +241,10 @@ namespace Filtration.Parser.Services
|
||||
continue;
|
||||
}
|
||||
|
||||
// A line starting with a comment when we're inside a ItemFilterBlock boundary represents the end of that block
|
||||
// as ItemFilterBlocks cannot have comment lines after the block description
|
||||
if (trimmedLine.StartsWith("#") && currentItemFilterBlockBoundary.BoundaryType == ItemFilterBlockBoundaryType.ItemFilterBlock)
|
||||
// A line starting with a comment when we're inside a ItemFilterBlock boundary may represent the end of that block
|
||||
// or a block item comment
|
||||
if (trimmedLine.StartsWith("#") && !inBlock[currentLine] &&
|
||||
currentItemFilterBlockBoundary.BoundaryType == ItemFilterBlockBoundaryType.ItemFilterBlock)
|
||||
{
|
||||
blockBoundaries.AddLast(currentItemFilterBlockBoundary);
|
||||
currentItemFilterBlockBoundary = new ItemFilterBlockBoundary(currentLine, ItemFilterBlockBoundaryType.CommentBlock);
|
||||
|
||||
@@ -66,7 +66,6 @@
|
||||
<Compile Include="Repositories\TestItemFilterScriptRepository.cs" />
|
||||
<Compile Include="Services\TestHTTPService.cs" />
|
||||
<Compile Include="Services\TestItemFilterPersistenceService.cs" />
|
||||
<Compile Include="Services\TestStaticDataService.cs" />
|
||||
<Compile Include="Services\TestUpdateService.cs" />
|
||||
</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
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -200,7 +200,7 @@ namespace Filtration.ThemeEditor.ViewModels
|
||||
case ThemeComponentType.BorderColor:
|
||||
case ThemeComponentType.TextColor:
|
||||
Components.Add(new ColorThemeComponent(themeComponentType, "Untitled Component",
|
||||
new Color { A = 255, R = 255, G = 255, B = 255 }));
|
||||
new Color { A = 240, R = 255, G = 255, B = 255 }));
|
||||
break;
|
||||
case ThemeComponentType.FontSize:
|
||||
Components.Add(new IntegerThemeComponent(themeComponentType, "Untitled Component", 35));
|
||||
@@ -209,7 +209,7 @@ namespace Filtration.ThemeEditor.ViewModels
|
||||
Components.Add(new StrIntThemeComponent(themeComponentType, "Untitled Component", "1", 100));
|
||||
break;
|
||||
case ThemeComponentType.CustomSound:
|
||||
Components.Add(new StringThemeComponent(themeComponentType, "Untitled Component", "placeholder.mp3"));
|
||||
Components.Add(new StringThemeComponent(themeComponentType, "Untitled Component", ""));
|
||||
break;
|
||||
case ThemeComponentType.Icon:
|
||||
Components.Add(new IconThemeComponent(themeComponentType, "Untitled Component", IconSize.Largest, IconColor.Red, IconShape.Circle));
|
||||
|
||||
135
Filtration.sln
135
Filtration.sln
@@ -45,6 +45,10 @@ Global
|
||||
Release|ARM = Release|ARM
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
SquirrelReleasify|Any CPU = SquirrelReleasify|Any CPU
|
||||
SquirrelReleasify|ARM = SquirrelReleasify|ARM
|
||||
SquirrelReleasify|x64 = SquirrelReleasify|x64
|
||||
SquirrelReleasify|x86 = SquirrelReleasify|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
@@ -63,6 +67,14 @@ Global
|
||||
{55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|x64.Build.0 = Release|Any CPU
|
||||
{55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|x86.Build.0 = Release|Any CPU
|
||||
{55E0A34C-E039-43D7-A024-A4045401CDDA}.SquirrelReleasify|Any CPU.ActiveCfg = Releasify|Any CPU
|
||||
{55E0A34C-E039-43D7-A024-A4045401CDDA}.SquirrelReleasify|Any CPU.Build.0 = Releasify|Any CPU
|
||||
{55E0A34C-E039-43D7-A024-A4045401CDDA}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
|
||||
{55E0A34C-E039-43D7-A024-A4045401CDDA}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
|
||||
{55E0A34C-E039-43D7-A024-A4045401CDDA}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
|
||||
{55E0A34C-E039-43D7-A024-A4045401CDDA}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
|
||||
{55E0A34C-E039-43D7-A024-A4045401CDDA}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
|
||||
{55E0A34C-E039-43D7-A024-A4045401CDDA}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
|
||||
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
@@ -79,6 +91,14 @@ Global
|
||||
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|x64.Build.0 = Release|Any CPU
|
||||
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|x86.Build.0 = Release|Any CPU
|
||||
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU
|
||||
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
|
||||
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
|
||||
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
|
||||
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
|
||||
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
|
||||
{E0693972-72C5-4E05-A9C5-A5943E4015C6}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
|
||||
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
@@ -95,6 +115,14 @@ Global
|
||||
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|x64.Build.0 = Release|Any CPU
|
||||
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|x86.Build.0 = Release|Any CPU
|
||||
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU
|
||||
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
|
||||
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
|
||||
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
|
||||
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
|
||||
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
|
||||
{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
|
||||
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
@@ -111,6 +139,14 @@ Global
|
||||
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|x64.Build.0 = Release|Any CPU
|
||||
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|x86.Build.0 = Release|Any CPU
|
||||
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU
|
||||
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
|
||||
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
|
||||
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
|
||||
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
|
||||
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
|
||||
{537BE676-2FF6-4995-B05B-9CFACE852EC9}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
|
||||
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
@@ -127,6 +163,14 @@ Global
|
||||
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|x64.Build.0 = Release|Any CPU
|
||||
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|x86.Build.0 = Release|Any CPU
|
||||
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU
|
||||
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
|
||||
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
|
||||
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
|
||||
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
|
||||
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
|
||||
{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
|
||||
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
@@ -143,6 +187,14 @@ Global
|
||||
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|x64.Build.0 = Release|Any CPU
|
||||
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|x86.Build.0 = Release|Any CPU
|
||||
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU
|
||||
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
|
||||
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
|
||||
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
|
||||
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
|
||||
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
|
||||
{450AC313-BF25-4BFD-A066-9F39F026FDCF}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
|
||||
{0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
@@ -159,6 +211,14 @@ Global
|
||||
{0F333344-7695-47B2-B0E6-172E4DE74819}.Release|x64.Build.0 = Release|Any CPU
|
||||
{0F333344-7695-47B2-B0E6-172E4DE74819}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{0F333344-7695-47B2-B0E6-172E4DE74819}.Release|x86.Build.0 = Release|Any CPU
|
||||
{0F333344-7695-47B2-B0E6-172E4DE74819}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0F333344-7695-47B2-B0E6-172E4DE74819}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU
|
||||
{0F333344-7695-47B2-B0E6-172E4DE74819}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
|
||||
{0F333344-7695-47B2-B0E6-172E4DE74819}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
|
||||
{0F333344-7695-47B2-B0E6-172E4DE74819}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
|
||||
{0F333344-7695-47B2-B0E6-172E4DE74819}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
|
||||
{0F333344-7695-47B2-B0E6-172E4DE74819}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
|
||||
{0F333344-7695-47B2-B0E6-172E4DE74819}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
|
||||
{8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
@@ -175,6 +235,14 @@ Global
|
||||
{8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|x64.Build.0 = Release|Any CPU
|
||||
{8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|x86.Build.0 = Release|Any CPU
|
||||
{8CB44F28-2956-4C2A-9314-72727262EDD4}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{8CB44F28-2956-4C2A-9314-72727262EDD4}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU
|
||||
{8CB44F28-2956-4C2A-9314-72727262EDD4}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
|
||||
{8CB44F28-2956-4C2A-9314-72727262EDD4}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
|
||||
{8CB44F28-2956-4C2A-9314-72727262EDD4}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
|
||||
{8CB44F28-2956-4C2A-9314-72727262EDD4}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
|
||||
{8CB44F28-2956-4C2A-9314-72727262EDD4}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
|
||||
{8CB44F28-2956-4C2A-9314-72727262EDD4}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
|
||||
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
@@ -191,6 +259,14 @@ Global
|
||||
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|x64.Build.0 = Release|Any CPU
|
||||
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|x86.Build.0 = Release|Any CPU
|
||||
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU
|
||||
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
|
||||
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
|
||||
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
|
||||
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
|
||||
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
|
||||
{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
|
||||
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
@@ -207,6 +283,14 @@ Global
|
||||
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|x64.Build.0 = Release|Any CPU
|
||||
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|x86.Build.0 = Release|Any CPU
|
||||
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU
|
||||
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
|
||||
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
|
||||
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
|
||||
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
|
||||
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
|
||||
{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
|
||||
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
@@ -223,6 +307,14 @@ Global
|
||||
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|x64.Build.0 = Release|Any CPU
|
||||
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|x86.Build.0 = Release|Any CPU
|
||||
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU
|
||||
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
|
||||
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
|
||||
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
|
||||
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
|
||||
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
|
||||
{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
|
||||
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
@@ -239,6 +331,14 @@ Global
|
||||
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Release|x64.Build.0 = Release|Any CPU
|
||||
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.Release|x86.Build.0 = Release|Any CPU
|
||||
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU
|
||||
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
|
||||
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
|
||||
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
|
||||
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
|
||||
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
|
||||
{10A7C2BC-EC6F-4A38-BDDA-E35935004C02}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
|
||||
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
@@ -255,6 +355,14 @@ Global
|
||||
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.Release|x64.Build.0 = Release|Any CPU
|
||||
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.Release|x86.Build.0 = Release|Any CPU
|
||||
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU
|
||||
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
|
||||
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
|
||||
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
|
||||
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
|
||||
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
|
||||
{46383F20-02DF-48B4-B092-9088FA4ACD5A}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
|
||||
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
@@ -271,6 +379,14 @@ Global
|
||||
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Release|x64.Build.0 = Release|Any CPU
|
||||
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.Release|x86.Build.0 = Release|Any CPU
|
||||
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU
|
||||
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
|
||||
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
|
||||
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
|
||||
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
|
||||
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
|
||||
{1F30CF6D-A5BF-4777-B8BA-E34F439FE8E5}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
|
||||
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
@@ -287,6 +403,14 @@ Global
|
||||
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Release|x64.Build.0 = Release|Any CPU
|
||||
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.Release|x86.Build.0 = Release|Any CPU
|
||||
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU
|
||||
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
|
||||
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
|
||||
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
|
||||
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
|
||||
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
|
||||
{855B38CC-EEF2-471D-BBBC-EB3E2FF3D387}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
|
||||
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
@@ -303,8 +427,19 @@ Global
|
||||
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Release|x64.Build.0 = Release|Any CPU
|
||||
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.Release|x86.Build.0 = Release|Any CPU
|
||||
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.SquirrelReleasify|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.SquirrelReleasify|Any CPU.Build.0 = Release|Any CPU
|
||||
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.SquirrelReleasify|ARM.ActiveCfg = Release|Any CPU
|
||||
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.SquirrelReleasify|ARM.Build.0 = Release|Any CPU
|
||||
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.SquirrelReleasify|x64.ActiveCfg = Release|Any CPU
|
||||
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.SquirrelReleasify|x64.Build.0 = Release|Any CPU
|
||||
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.SquirrelReleasify|x86.ActiveCfg = Release|Any CPU
|
||||
{7A5720DE-A41B-47EA-AAAB-7C5608FF0C1F}.SquirrelReleasify|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {8A170BBA-F99C-4192-9467-A5669B1DE126}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
@@ -2,4 +2,5 @@
|
||||
<s:Boolean x:Key="/Default/CodeInspection/CodeAnnotations/NamespacesWithAnnotations/=Filtration_002EAnnotations/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/CodeInspection/CodeAnnotations/NamespacesWithAnnotations/=Filtration_002EObjectModel_002EAnnotations/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/FilterSettingsManager/AttributeFilterXml/@EntryValue"><data /></s:String>
|
||||
<s:String x:Key="/Default/FilterSettingsManager/CoverageFilterXml/@EntryValue"><data><IncludeFilters /><ExcludeFilters><Filter ModuleMask="Filtration.ItemFilterPreview.Tests" ModuleVersionMask="*" ClassMask="*" FunctionMask="*" IsEnabled="True" /><Filter ModuleMask="Filtration.ObjectModel.Tests" ModuleVersionMask="*" ClassMask="*" FunctionMask="*" IsEnabled="True" /><Filter ModuleMask="Filtration.ThemeEditor.Tests" ModuleVersionMask="*" ClassMask="*" FunctionMask="*" IsEnabled="True" /><Filter ModuleMask="Filtration.Tests" ModuleVersionMask="*" ClassMask="*" FunctionMask="*" IsEnabled="True" /></ExcludeFilters></data></s:String></wpf:ResourceDictionary>
|
||||
<s:String x:Key="/Default/FilterSettingsManager/CoverageFilterXml/@EntryValue"><data><IncludeFilters /><ExcludeFilters><Filter ModuleMask="Filtration.ItemFilterPreview.Tests" ModuleVersionMask="*" ClassMask="*" FunctionMask="*" IsEnabled="True" /><Filter ModuleMask="Filtration.ObjectModel.Tests" ModuleVersionMask="*" ClassMask="*" FunctionMask="*" IsEnabled="True" /><Filter ModuleMask="Filtration.ThemeEditor.Tests" ModuleVersionMask="*" ClassMask="*" FunctionMask="*" IsEnabled="True" /><Filter ModuleMask="Filtration.Tests" ModuleVersionMask="*" ClassMask="*" FunctionMask="*" IsEnabled="True" /></ExcludeFilters></data></s:String>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Prerelease/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
|
||||
@@ -31,6 +31,33 @@
|
||||
<setting name="StaticDataLastUpdated" serializeAs="String">
|
||||
<value>2016-01-01</value>
|
||||
</setting>
|
||||
<setting name="DownloadPrereleaseUpdates" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="ShowSectionBrowser" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="ShowBlockGroupBrowser" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="ShowBlockOutputPreview" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="ShowAdvanced" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="WindowState" serializeAs="String">
|
||||
<value>Normal</value>
|
||||
</setting>
|
||||
<setting name="WindowWidth" serializeAs="String">
|
||||
<value>1200</value>
|
||||
</setting>
|
||||
<setting name="WindowHeight" serializeAs="String">
|
||||
<value>800</value>
|
||||
</setting>
|
||||
<setting name="LastActiveDocument" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
</Filtration.Properties.Settings>
|
||||
</userSettings>
|
||||
<runtime>
|
||||
|
||||
@@ -1,32 +1,23 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Threading;
|
||||
using AutoMapper;
|
||||
using Castle.Facilities.TypedFactory;
|
||||
using Castle.MicroKernel.ModelBuilder.Inspectors;
|
||||
using Castle.Windsor;
|
||||
using Castle.Windsor.Installer;
|
||||
using Filtration.ObjectModel;
|
||||
using Filtration.ObjectModel.ThemeEditor;
|
||||
using Filtration.Properties;
|
||||
using Filtration.Services;
|
||||
using Filtration.ThemeEditor.ViewModels;
|
||||
using Filtration.ViewModels;
|
||||
using Filtration.Views;
|
||||
using NLog;
|
||||
|
||||
namespace Filtration
|
||||
{
|
||||
public partial class App
|
||||
{
|
||||
private IWindsorContainer _container;
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
|
||||
private void Application_Startup(object sender, StartupEventArgs e)
|
||||
private async void Application_Startup(object sender, StartupEventArgs e)
|
||||
{
|
||||
DispatcherUnhandledException += OnDispatcherUnhandledException;
|
||||
|
||||
_container = new WindsorContainer();
|
||||
|
||||
// Disable property injection
|
||||
@@ -57,25 +48,8 @@ namespace Filtration
|
||||
|
||||
Mapper.AssertConfigurationIsValid();
|
||||
|
||||
var mainWindow = _container.Resolve<IMainWindow>();
|
||||
mainWindow.Show();
|
||||
|
||||
var updateCheckService = _container.Resolve<IUpdateCheckService>();
|
||||
updateCheckService.CheckForUpdates();
|
||||
}
|
||||
|
||||
private static void OnDispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
|
||||
{
|
||||
Logger.Fatal(e.Exception);
|
||||
var exception = e.Exception.Message + Environment.NewLine + e.Exception.StackTrace;
|
||||
var innerException = e.Exception.InnerException != null
|
||||
? e.Exception.InnerException.Message + Environment.NewLine +
|
||||
e.Exception.InnerException.StackTrace
|
||||
: string.Empty;
|
||||
|
||||
MessageBox.Show(
|
||||
exception + Environment.NewLine + innerException,
|
||||
"Unhandled Exception", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
var bootstrapper = _container.Resolve<IBootstrapper>();
|
||||
await bootstrapper.GoAsync();
|
||||
}
|
||||
|
||||
protected override void OnExit(ExitEventArgs e)
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
using Filtration.ObjectModel.Enums;
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Windows.Data;
|
||||
|
||||
namespace Filtration.Converters
|
||||
{
|
||||
internal class IconShapeToSourceConverter : IValueConverter
|
||||
{
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
var iconShape = (IconShape)(int)value;
|
||||
switch (iconShape)
|
||||
{
|
||||
case IconShape.Circle:
|
||||
return "/Filtration;component/Resources/DropIcons/Circle.png";
|
||||
case IconShape.Diamond:
|
||||
return "/Filtration;component/Resources/DropIcons/Diamond.png";
|
||||
case IconShape.Hexagon:
|
||||
return "/Filtration;component/Resources/DropIcons/Hexagon.png";
|
||||
case IconShape.Square:
|
||||
return "/Filtration;component/Resources/DropIcons/Square.png";
|
||||
case IconShape.Star:
|
||||
return "/Filtration;component/Resources/DropIcons/Star.png";
|
||||
case IconShape.Triangle:
|
||||
return "/Filtration;component/Resources/DropIcons/Triangle.png";
|
||||
}
|
||||
|
||||
return "/Filtration;component/Resources/DropIcons/NoIcon.png";
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
108
Filtration/Converters/MinimapIconToCroppedBitmapConverter.cs
Normal file
108
Filtration/Converters/MinimapIconToCroppedBitmapConverter.cs
Normal file
@@ -0,0 +1,108 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Windows;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Media.Imaging;
|
||||
using Filtration.ObjectModel.Enums;
|
||||
|
||||
namespace Filtration.Converters
|
||||
{
|
||||
internal class MinimapIconToCroppedBitmapConverter : IMultiValueConverter
|
||||
{
|
||||
private static readonly int cellHeight = 64;
|
||||
private static readonly int cellWidth = 64;
|
||||
private static readonly int gridWidth = 14;
|
||||
private static readonly int startColumn = 4;
|
||||
private static readonly int startRow = 3;
|
||||
private static readonly int emptyColumn = 2;
|
||||
private static readonly int emptyRow = 11;
|
||||
private static readonly int colorCount = 6;
|
||||
private static readonly int shapeCount = 6;
|
||||
private static readonly int sizeCount = 3;
|
||||
|
||||
private static readonly Uri uri;
|
||||
private static readonly CroppedBitmap empty;
|
||||
private static readonly List<CroppedBitmap> bitmaps;
|
||||
|
||||
static MinimapIconToCroppedBitmapConverter()
|
||||
{
|
||||
uri = new Uri("pack://application:,,,/Filtration;component/Resources/minimap_icons.png", UriKind.Absolute);
|
||||
var sourceImage = new BitmapImage(uri);
|
||||
|
||||
var emptyRect = new Int32Rect
|
||||
{
|
||||
Width = cellWidth,
|
||||
Height = cellHeight,
|
||||
X = emptyColumn * cellWidth,
|
||||
Y = emptyRow * cellHeight
|
||||
};
|
||||
|
||||
empty = new CroppedBitmap(new BitmapImage(uri), emptyRect);
|
||||
bitmaps = new List<CroppedBitmap>(shapeCount * colorCount * sizeCount);
|
||||
|
||||
var row = startRow;
|
||||
var column = startColumn;
|
||||
for (var i = 0; i < shapeCount; i++) {
|
||||
for (var j = 0; j < colorCount; j++) {
|
||||
for (var k = 0; k < sizeCount; k++) {
|
||||
if (column == gridWidth) {
|
||||
column = 0;
|
||||
row++;
|
||||
}
|
||||
|
||||
var bitmapRect = new Int32Rect
|
||||
{
|
||||
Width = cellWidth,
|
||||
Height = cellHeight,
|
||||
X = column * cellWidth,
|
||||
Y = row * cellHeight
|
||||
};
|
||||
|
||||
bitmaps.Add(new CroppedBitmap(sourceImage, bitmapRect));
|
||||
column++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
if (values[0] == DependencyProperty.UnsetValue ||
|
||||
values[1] == DependencyProperty.UnsetValue ||
|
||||
values[2] == DependencyProperty.UnsetValue)
|
||||
{
|
||||
return empty;
|
||||
}
|
||||
|
||||
var iconSize = (int)(values[0]);
|
||||
var iconColor = (int)(values[1]);
|
||||
var iconShape = (int)(values[2]);
|
||||
|
||||
if (!Enum.IsDefined(typeof(IconSize), iconSize) ||
|
||||
!Enum.IsDefined(typeof(IconColor), iconColor) ||
|
||||
!Enum.IsDefined(typeof(IconShape), iconShape))
|
||||
{
|
||||
return empty;
|
||||
}
|
||||
|
||||
var shapeOffset = iconShape * (sizeCount * colorCount);
|
||||
var colorOffset = iconColor * sizeCount;
|
||||
var iconIndex = shapeOffset + colorOffset + iconSize;
|
||||
|
||||
if (iconIndex >= bitmaps.Count)
|
||||
{
|
||||
return empty;
|
||||
}
|
||||
else
|
||||
{
|
||||
return bitmaps[iconIndex];
|
||||
}
|
||||
}
|
||||
|
||||
public object[] ConvertBack(object value, Type[] targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Windows;
|
||||
using System.Windows.Data;
|
||||
|
||||
namespace Filtration.Converters
|
||||
{
|
||||
internal class SizeColorToRectConverter : IMultiValueConverter
|
||||
{
|
||||
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
if (values[0] == DependencyProperty.UnsetValue ||
|
||||
values[1] == DependencyProperty.UnsetValue)
|
||||
return null;
|
||||
|
||||
var size = (int)(values[0]);
|
||||
var color = (int)(values[1]);
|
||||
|
||||
if (size < 0 || color < 0)
|
||||
return new Rect(0, 0, 0, 0);
|
||||
|
||||
var cropArea = new Rect
|
||||
{
|
||||
Width = 64,
|
||||
Height = 64,
|
||||
X = 0 + size * 64,
|
||||
Y = 0 + color * 64
|
||||
};
|
||||
|
||||
return cropArea;
|
||||
}
|
||||
|
||||
public object[] ConvertBack(object value, Type[] targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
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
|
||||
}
|
||||
}
|
||||
@@ -15,21 +15,6 @@
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<TargetFrameworkProfile />
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
@@ -56,6 +41,16 @@
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>Resources\filtration.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Releasify|AnyCPU'">
|
||||
<OutputPath>bin\Releasify\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||
<Prefer32Bit>true</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="AutoMapper, Version=6.0.2.0, Culture=neutral, PublicKeyToken=be96cd2c38ef1005, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\AutoMapper.6.0.2\lib\net45\AutoMapper.dll</HintPath>
|
||||
@@ -70,6 +65,15 @@
|
||||
<Reference Include="ControlzEx, Version=2.2.0.4, Culture=neutral, PublicKeyToken=f08b075e934b7045, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\ControlzEx.2.2.0.4\lib\net45\ControlzEx.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DeltaCompressionDotNet, Version=1.1.0.0, Culture=neutral, PublicKeyToken=1d14d6e5194e7f4a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DeltaCompressionDotNet.1.1.0\lib\net20\DeltaCompressionDotNet.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DeltaCompressionDotNet.MsDelta, Version=1.1.0.0, Culture=neutral, PublicKeyToken=46b2138a390abf55, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DeltaCompressionDotNet.1.1.0\lib\net20\DeltaCompressionDotNet.MsDelta.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DeltaCompressionDotNet.PatchApi, Version=1.1.0.0, Culture=neutral, PublicKeyToken=3e8888ee913ed789, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DeltaCompressionDotNet.1.1.0\lib\net20\DeltaCompressionDotNet.PatchApi.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Fluent, Version=4.0.3.394, Culture=neutral, PublicKeyToken=3e436e32a8c5546f, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Fluent.Ribbon.4.0.3.394\lib\net45\Fluent.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
@@ -91,10 +95,41 @@
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="Microsoft.WindowsAPICodePack, Version=1.1.2.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\WindowsAPICodePack-Core.1.1.2\lib\Microsoft.WindowsAPICodePack.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.WindowsAPICodePack.Shell, Version=1.1.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\WindowsAPICodePack-Shell.1.1.1\lib\Microsoft.WindowsAPICodePack.Shell.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Mono.Cecil, Version=0.9.6.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Mono.Cecil.Mdb, Version=0.9.6.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Mdb.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Mono.Cecil.Pdb, Version=0.9.6.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Pdb.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Mono.Cecil.Rocks, Version=0.9.6.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Rocks.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NLog.4.4.9\lib\net45\NLog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NuGet.Squirrel, Version=3.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\squirrel.windows.1.8.0\lib\Net45\NuGet.Squirrel.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="SharpCompress, Version=0.17.1.0, Culture=neutral, PublicKeyToken=afb0a02973931d96, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\SharpCompress.0.17.1\lib\net45\SharpCompress.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Splat.1.6.2\lib\Net45\Splat.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Squirrel, Version=1.8.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\squirrel.windows.1.8.0\lib\Net45\Squirrel.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Controls.Input.Toolkit, Version=3.5.40128.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
@@ -113,6 +148,7 @@
|
||||
<Reference Include="System.Xaml">
|
||||
<RequiredTargetFramework>4.0</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="WindowsBase" />
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationFramework" />
|
||||
@@ -144,10 +180,6 @@
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>libs\Xceed.Wpf.AvalonDock.Themes.VS2013.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Xceed.Wpf.DataGrid, Version=2.9.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Extended.Wpf.Toolkit.2.9\lib\net40\Xceed.Wpf.DataGrid.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Xceed.Wpf.Toolkit, Version=2.9.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Extended.Wpf.Toolkit.2.9\lib\net40\Xceed.Wpf.Toolkit.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
@@ -167,19 +199,21 @@
|
||||
<Compile Include="Converters\BooleanToBlockActionInverseConverter.cs" />
|
||||
<Compile Include="Converters\BooleanToBlockActionConverter.cs" />
|
||||
<Compile Include="Converters\BlockItemToRemoveEnabledVisibilityConverter.cs" />
|
||||
<Compile Include="Converters\SizeColorToRectConverter.cs" />
|
||||
<Compile Include="Converters\MinimapIconToCroppedBitmapConverter.cs" />
|
||||
<Compile Include="Converters\HashSignRemovalConverter.cs" />
|
||||
<Compile Include="Converters\IconShapeToSourceConverter.cs" />
|
||||
<Compile Include="Converters\ItemRarityConverter.cs" />
|
||||
<Compile Include="Converters\TreeViewMarginConverter.cs" />
|
||||
<Compile Include="Enums\UpdateSource.cs" />
|
||||
<Compile Include="Models\UpdateData.cs" />
|
||||
<Compile Include="Properties\Annotations.cs" />
|
||||
<Compile Include="Repositories\ItemFilterScriptRepository.cs" />
|
||||
<Compile Include="Services\Bootstrapper.cs" />
|
||||
<Compile Include="Services\ClipboardService.cs" />
|
||||
<Compile Include="Services\HTTPService.cs" />
|
||||
<Compile Include="Services\ItemFilterPersistenceService.cs" />
|
||||
<Compile Include="Services\SettingsService.cs" />
|
||||
<Compile Include="Services\StaticDataService.cs" />
|
||||
<Compile Include="Services\UpdateCheckService.cs" />
|
||||
<Compile Include="Services\UpdateService.cs" />
|
||||
<Compile Include="Settings.cs" />
|
||||
<Compile Include="UserControls\AutoScrollingListBox.cs" />
|
||||
<Compile Include="UserControls\BlockItemControl.xaml.cs">
|
||||
@@ -190,18 +224,19 @@
|
||||
<Compile Include="UserControls\EditableListBoxControl.xaml.cs">
|
||||
<DependentUpon>EditableListBoxControl.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UserControls\ImageComboBoxControl.xaml.cs">
|
||||
<DependentUpon>ImageComboBoxControl.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UserControls\ItemPreviewControl.xaml.cs">
|
||||
<DependentUpon>ItemPreviewControl.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UserControls\ThemeComponentSelectionControl.xaml.cs">
|
||||
<DependentUpon>ThemeComponentSelectionControl.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ViewModels\DesignTime\DesignTimeSettingsPageViewModel.cs" />
|
||||
<Compile Include="Views\AttachedProperties\SelectedItemsAttachedProperty.cs" />
|
||||
<Compile Include="Utility\RoutedCommandHandler.cs" />
|
||||
<Compile Include="Utility\RoutedCommandHandlers.cs" />
|
||||
<Compile Include="ViewModels\AvalonDockWorkspaceViewModel.cs" />
|
||||
<Compile Include="ViewModels\DesignTime\DesignTimeMainWindowViewModel.cs" />
|
||||
<Compile Include="ViewModels\DesignTime\DesignTimeUpdateViewModel.cs" />
|
||||
<Compile Include="ViewModels\Factories\IItemFilterCommentBlockViewModelFactory.cs" />
|
||||
<Compile Include="ViewModels\Factories\ItemFilterBlockBaseViewModelFactory.cs" />
|
||||
<Compile Include="ViewModels\ItemFilterBlockViewModelBase.cs" />
|
||||
@@ -218,7 +253,7 @@
|
||||
<Compile Include="ViewModels\ToolPanes\CommentBlockBrowserViewModel.cs" />
|
||||
<Compile Include="ViewModels\StartPageViewModel.cs" />
|
||||
<Compile Include="ViewModels\ToolPanes\ToolViewModel.cs" />
|
||||
<Compile Include="ViewModels\UpdateAvailableViewModel.cs" />
|
||||
<Compile Include="ViewModels\UpdateViewModel.cs" />
|
||||
<Compile Include="Views\AttachedProperties\SelectingItemAttachedProperty.cs" />
|
||||
<Compile Include="Views\AvalonDock\AvalonDockWorkspaceView.xaml.cs">
|
||||
<DependentUpon>AvalonDockWorkspaceView.xaml</DependentUpon>
|
||||
@@ -233,10 +268,6 @@
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="UserControls\ImageComboBoxControl.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="UserControls\ThemeComponentSelectionControl.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
@@ -278,8 +309,11 @@
|
||||
<Compile Include="Views\ToolPanes\CommentBlockBrowserView.xaml.cs">
|
||||
<DependentUpon>CommentBlockBrowserView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\UpdateAvailableView.xaml.cs">
|
||||
<DependentUpon>UpdateAvailableView.xaml</DependentUpon>
|
||||
<Compile Include="Views\UpdateTabView.xaml.cs">
|
||||
<DependentUpon>UpdateTabView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\UpdateView.xaml.cs">
|
||||
<DependentUpon>UpdateView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="WindsorInstallers\RepositoriesInstaller.cs" />
|
||||
<Compile Include="WindsorInstallers\ServicesInstaller.cs" />
|
||||
@@ -382,7 +416,11 @@
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Views\UpdateAvailableView.xaml">
|
||||
<Page Include="Views\UpdateTabView.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Views\UpdateView.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
@@ -401,17 +439,21 @@
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="Resources\ItemMods.txt" />
|
||||
<Resource Include="Resources\loading_spinner.gif" />
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Content Include="LICENSE.txt">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="NLog.config">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<None Include="Filtration.nuspec" />
|
||||
<None Include="NLog.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
@@ -465,95 +507,89 @@
|
||||
<Resource Include="Resources\Icons\ThemeComponentDelete.ico" />
|
||||
<Resource Include="Resources\Icons\standby_disabled_icon.png" />
|
||||
<Resource Include="Resources\Icons\standby_enabled_icon.png" />
|
||||
<None Include="Resources\AlertSounds\AlertSound_01.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Resources\AlertSounds\AlertSound_02.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Resources\AlertSounds\AlertSound_03.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Resources\AlertSounds\AlertSound_04.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Resources\AlertSounds\AlertSound_05.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Resources\AlertSounds\AlertSound_06.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Resources\AlertSounds\AlertSound_07.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Resources\AlertSounds\AlertSound_08.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Resources\AlertSounds\AlertSound_09.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Resources\AlertSounds\AlertSound_10.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Resources\AlertSounds\AlertSound_11.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Resources\AlertSounds\AlertSound_12.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Resources\AlertSounds\AlertSound_13.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Resources\AlertSounds\AlertSound_14.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Resources\AlertSounds\AlertSound_15.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Resources\AlertSounds\AlertSound_16.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Resources\AlertSounds\SH22Alchemy.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Resources\AlertSounds\SH22Blessed.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Resources\AlertSounds\SH22Chaos.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Resources\AlertSounds\SH22Divine.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Resources\AlertSounds\SH22Exalted.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Resources\AlertSounds\SH22Fusing.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Resources\AlertSounds\SH22General.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Resources\AlertSounds\SH22Mirror.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Resources\AlertSounds\SH22Regal.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="Resources\AlertSounds\SH22Vaal.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<Resource Include="Resources\Icons\redo_icon.png" />
|
||||
<Resource Include="Resources\Icons\undo_icon.png" />
|
||||
<Resource Include="Resources\DropIcons\NoIcon.png" />
|
||||
<Resource Include="Resources\DropIcons\Circle.png" />
|
||||
<Resource Include="Resources\DropIcons\Diamond.png" />
|
||||
<Resource Include="Resources\DropIcons\Hexagon.png" />
|
||||
<Resource Include="Resources\DropIcons\Square.png" />
|
||||
<Resource Include="Resources\DropIcons\Star.png" />
|
||||
<Resource Include="Resources\DropIcons\Triangle.png" />
|
||||
<Content Include="Resources\ItemBaseTypes.txt" />
|
||||
<Content Include="Resources\ItemClasses.txt" />
|
||||
<Resource Include="Resources\minimap_icons.png" />
|
||||
<Content Include="Resources\AlertSounds\AlertSound_01.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\AlertSounds\AlertSound_02.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\AlertSounds\AlertSound_03.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\AlertSounds\AlertSound_04.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\AlertSounds\AlertSound_05.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\AlertSounds\AlertSound_06.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\AlertSounds\AlertSound_07.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\AlertSounds\AlertSound_08.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\AlertSounds\AlertSound_09.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\AlertSounds\AlertSound_10.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\AlertSounds\AlertSound_11.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\AlertSounds\AlertSound_12.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\AlertSounds\AlertSound_13.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\AlertSounds\AlertSound_14.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\AlertSounds\AlertSound_15.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\AlertSounds\AlertSound_16.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\AlertSounds\SH22Alchemy.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\AlertSounds\SH22Blessed.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\AlertSounds\SH22Chaos.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\AlertSounds\SH22Divine.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\AlertSounds\SH22Exalted.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\AlertSounds\SH22Fusing.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\AlertSounds\SH22General.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\AlertSounds\SH22Mirror.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\AlertSounds\SH22Regal.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\AlertSounds\SH22Vaal.mp3">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<EmbeddedResource Include="Resources\ItemBaseTypes.txt" />
|
||||
<EmbeddedResource Include="Resources\ItemClasses.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Filtration.Common\Filtration.Common.csproj">
|
||||
@@ -597,12 +633,33 @@
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(XamlSpyInstallPath)MSBuild\FirstFloor.XamlSpy.WPF.targets" Condition="'$(XamlSpyInstallPath)' != '' and '$(Configuration)' == 'DEBUG'" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
<Target Name="AfterBuild" Condition=" '$(Configuration)' == 'Releasify'">
|
||||
<GetAssemblyIdentity AssemblyFiles="$(TargetPath)">
|
||||
<Output TaskParameter="Assemblies" ItemName="myAssemblyInfo" />
|
||||
</GetAssemblyIdentity>
|
||||
<ReadLinesFromFile File="$(ProjectDir)\Properties\AssemblyInfo.cs">
|
||||
<Output TaskParameter="Lines" ItemName="ItemsFromFile" />
|
||||
</ReadLinesFromFile>
|
||||
<ItemGroup>
|
||||
<!-- If your .NET version is <3.5 and you get build error, move this ItemGroup outside of Target -->
|
||||
<NuGetExe Include="..\packages\NuGet.CommandLine.*\tools\nuget.exe" />
|
||||
<SquirrelExe Include="..\packages\Squirrel.Windows.*\tools\squirrel.exe" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup>
|
||||
<ReleaseDir>..\Releases\</ReleaseDir>
|
||||
<!-- Extra optional params for squirrel. can be empty -->
|
||||
<SquirrelParams>--no-msi</SquirrelParams>
|
||||
<Pattern>(?<=\[assembly: AssemblyInformationalVersion\(").*?(?="\)\])</Pattern>
|
||||
<In>@(ItemsFromFile)</In>
|
||||
<SemVerNumber>$([System.Text.RegularExpressions.Regex]::Match($(In), $(Pattern)))</SemVerNumber>
|
||||
<!-- <SemVerNumber>$([System.Version]::Parse(%(myAssemblyInfo.Version)).ToString(3))</SemVerNumber> -->
|
||||
</PropertyGroup>
|
||||
<!-- Add some nice errors for the next person that comes along -->
|
||||
<Error Condition="!Exists(%(NuGetExe.FullPath))" Text="You are trying to use the NuGet.CommandLine package, but it is not installed. Please install NuGet.CommandLine from the Package Manager." />
|
||||
<Error Condition="!Exists(%(SquirrelExe.FullPath))" Text="You are trying to use the Squirrel.Windows package, but it is not installed. Please install Squirrel.Windows from the Package Manager." />
|
||||
<!-- Build nupkg into the project local bin\Release\ directory temporarily -->
|
||||
<Exec Command=""%(NuGetExe.FullPath)" pack $(TargetName).nuspec -Version $(SemVerNumber) -OutputDirectory $(OutDir) -BasePath $(OutDir)" />
|
||||
<!-- Squirrelify into the release dir (usually at solution level. Change the property above for a different location -->
|
||||
<Exec Command=""%(SquirrelExe.FullPath)" --releasify $(OutDir)Filtration.$(SemVerNumber).nupkg --releaseDir=$(ReleaseDir) $(SquirrelParams)" />
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
37
Filtration/Filtration.nuspec
Normal file
37
Filtration/Filtration.nuspec
Normal file
@@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
|
||||
<metadata>
|
||||
<id>Filtration</id>
|
||||
<!-- version will be replaced by MSBuild -->
|
||||
<version>0.0.0.0</version>
|
||||
<title>Filtration</title>
|
||||
<authors>Ben Wallis</authors>
|
||||
<description>A Path of Exile loot filter script editor</description>
|
||||
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
||||
<copyright>Copyright 2018</copyright>
|
||||
<releaseNotes>### New Features
|
||||
|
||||
* Implemented copying and pasting of multiple blocks (multiple blocks can be selected by holding the Ctrl and/or Shift keys while clicking)
|
||||
* Added Expand All, Collapse All, and Clear All Filters buttons to the Block Group Browser
|
||||
* It is now possible to add/remove Block Groups from blocks (there is a new text box and a + button on each block in the editor)
|
||||
* The Block Group browser now has an additional column of checkboxes which enables block groups to be enabled/disabled as well as shown/hidden
|
||||
* Implemented a new auto-update mechanism - previous versions of Filtration will need to be manually uninstalled
|
||||
|
||||
### Bug Fixes / Improvements
|
||||
|
||||
* Fixed incorrect filtering behavior in the Block Group Browser
|
||||
* Increased the maximum value of Quality block items to 30 from 20
|
||||
* Changed default opacity of colours to 240 from 255
|
||||
* MinimapIcon preview icons have been improved in appearance and now have a transparent background
|
||||
* Fixed an issue where several section-related commands didn't correctly mark the script as unsaved
|
||||
* The state (maximised/restored) and size of the application window is now remembered
|
||||
* The visibility of the Section Browser, Block Group Browser, and Block Output Preview tool panes is now remembered
|
||||
* The last opened script is now re-opened on when the application is launched
|
||||
* Increased the HasExplicitMod block item limit from 1 to 8 since it is possible to use up to 8 of these blocks together to only match items that have an explicit mod from all HasExplicitMod block items within a block
|
||||
* Changed the default colours of TextColor, BorderColor and BackgroundColor block items to sensible defaults instead of 100% transparent</releaseNotes>
|
||||
<dependencies />
|
||||
</metadata>
|
||||
<files>
|
||||
<file src="*.*" target="lib\net45\" exclude="*.pdb;*.nupkg;*.vshost.*;*.xml"/>
|
||||
</files>
|
||||
</package>
|
||||
@@ -10,6 +10,7 @@
|
||||
layout="${longdate} ${uppercase:${level}} ${message}" />
|
||||
<target xsi:type="File" name="fDebug" fileName="${basedir}/Filtration_debug_${shortdate}.log"
|
||||
layout="${longdate} ${uppercase:${level}} ${message}" />
|
||||
<target xsi:type="Debugger" name="cDebug" layout="${longdate} ${uppercase:${level}} ${message}"/>
|
||||
</targets>
|
||||
|
||||
<rules>
|
||||
@@ -17,6 +18,7 @@
|
||||
<!-- Uncomment the Debug line to enable Debug logging -->
|
||||
<!--<logger name="*" minlevel="Debug" writeTo="fDebug" final="true" />-->
|
||||
<logger name="*" minlevel="Error" writeTo="fErrors" />
|
||||
<logger name="*" minlevel="Trace" writeTo="cDebug" />
|
||||
|
||||
</rules>
|
||||
</nlog>
|
||||
@@ -1,11 +1,6 @@
|
||||
using System.Reflection;
|
||||
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")]
|
||||
[assembly: AssemblyDescription("An item filter script editor for Path of Exile")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
@@ -15,42 +10,8 @@ using System.Windows;
|
||||
[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("0.18")]
|
||||
[assembly: AssemblyVersion("1.0.0")]
|
||||
[assembly: AssemblyInformationalVersion("1.0.0-beta4")]
|
||||
|
||||
[assembly: InternalsVisibleTo("Filtration.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>
|
||||
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
|
||||
/// </summary>
|
||||
|
||||
@@ -119,52 +119,52 @@
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="AlertSound_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\AlertSound_01.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\AlertSound_01.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="AlertSound_02" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\AlertSound_02.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\AlertSound_02.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="AlertSound_03" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\AlertSound_03.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\AlertSound_03.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="AlertSound_04" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\AlertSound_04.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\AlertSound_04.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="AlertSound_05" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\AlertSound_05.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\AlertSound_05.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="AlertSound_06" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\AlertSound_06.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\AlertSound_06.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="AlertSound_07" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\AlertSound_07.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\AlertSound_07.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="AlertSound_08" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\AlertSound_08.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\AlertSound_08.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="AlertSound_09" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\AlertSound_09.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\AlertSound_09.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="AlertSound_10" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\AlertSound_10.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\AlertSound_10.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="AlertSound_11" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\AlertSound_11.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\AlertSound_11.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="AlertSound_12" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\AlertSound_12.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\AlertSound_12.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="AlertSound_13" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\AlertSound_13.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\AlertSound_13.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="AlertSound_14" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\AlertSound_14.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\AlertSound_14.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="AlertSound_15" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\AlertSound_15.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\AlertSound_15.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="AlertSound_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\AlertSound_16.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\AlertSound_16.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="Fontin_SmallCaps" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Fontin-SmallCaps.ttf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
@@ -173,33 +173,42 @@
|
||||
<value>..\Resources\groundtile.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="SH22Alchemy" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\SH22Alchemy.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\SH22Alchemy.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="SH22Blessed" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\SH22Blessed.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\SH22Blessed.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="SH22Chaos" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\SH22Chaos.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\SH22Chaos.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="SH22Divine" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\SH22Divine.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\SH22Divine.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="SH22Exalted" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\SH22Exalted.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\SH22Exalted.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="SH22Fusing" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\SH22Fusing.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\SH22Fusing.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="SH22General" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\SH22General.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\SH22General.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="SH22Mirror" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\SH22Mirror.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\SH22Mirror.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="SH22Regal" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\SH22Regal.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\SH22Regal.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="SH22Vaal" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\AlertSounds\SH22Vaal.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>..\Resources\AlertSounds\SH22Vaal.mp3;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</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>
|
||||
110
Filtration/Properties/Settings.Designer.cs
generated
110
Filtration/Properties/Settings.Designer.cs
generated
@@ -12,7 +12,7 @@ namespace Filtration.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.8.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
@@ -121,5 +121,113 @@ namespace Filtration.Properties {
|
||||
return ((string)(this["UpdateDataUrl"]));
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool DownloadPrereleaseUpdates {
|
||||
get {
|
||||
return ((bool)(this["DownloadPrereleaseUpdates"]));
|
||||
}
|
||||
set {
|
||||
this["DownloadPrereleaseUpdates"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool ShowSectionBrowser {
|
||||
get {
|
||||
return ((bool)(this["ShowSectionBrowser"]));
|
||||
}
|
||||
set {
|
||||
this["ShowSectionBrowser"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool ShowBlockGroupBrowser {
|
||||
get {
|
||||
return ((bool)(this["ShowBlockGroupBrowser"]));
|
||||
}
|
||||
set {
|
||||
this["ShowBlockGroupBrowser"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool ShowBlockOutputPreview {
|
||||
get {
|
||||
return ((bool)(this["ShowBlockOutputPreview"]));
|
||||
}
|
||||
set {
|
||||
this["ShowBlockOutputPreview"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool ShowAdvanced {
|
||||
get {
|
||||
return ((bool)(this["ShowAdvanced"]));
|
||||
}
|
||||
set {
|
||||
this["ShowAdvanced"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("Normal")]
|
||||
public global::System.Windows.WindowState WindowState {
|
||||
get {
|
||||
return ((global::System.Windows.WindowState)(this["WindowState"]));
|
||||
}
|
||||
set {
|
||||
this["WindowState"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("1200")]
|
||||
public int WindowWidth {
|
||||
get {
|
||||
return ((int)(this["WindowWidth"]));
|
||||
}
|
||||
set {
|
||||
this["WindowWidth"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("800")]
|
||||
public int WindowHeight {
|
||||
get {
|
||||
return ((int)(this["WindowHeight"]));
|
||||
}
|
||||
set {
|
||||
this["WindowHeight"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string LastActiveDocument {
|
||||
get {
|
||||
return ((string)(this["LastActiveDocument"]));
|
||||
}
|
||||
set {
|
||||
this["LastActiveDocument"] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,5 +29,32 @@
|
||||
<Setting Name="UpdateDataUrl" Type="System.String" Scope="Application">
|
||||
<Value Profile="(Default)">http://ben-wallis.github.io/Filtration/filtration_version.xml</Value>
|
||||
</Setting>
|
||||
<Setting Name="DownloadPrereleaseUpdates" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="ShowSectionBrowser" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="ShowBlockGroupBrowser" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="ShowBlockOutputPreview" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="ShowAdvanced" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="WindowState" Type="System.Windows.WindowState" Scope="User">
|
||||
<Value Profile="(Default)">Normal</Value>
|
||||
</Setting>
|
||||
<Setting Name="WindowWidth" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">1200</Value>
|
||||
</Setting>
|
||||
<Setting Name="WindowHeight" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">800</Value>
|
||||
</Setting>
|
||||
<Setting Name="LastActiveDocument" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
||||
BIN
Filtration/Resources/AlertSounds/AlertSound_01.mp3
Normal file
BIN
Filtration/Resources/AlertSounds/AlertSound_01.mp3
Normal file
Binary file not shown.
Binary file not shown.
BIN
Filtration/Resources/AlertSounds/AlertSound_02.mp3
Normal file
BIN
Filtration/Resources/AlertSounds/AlertSound_02.mp3
Normal file
Binary file not shown.
Binary file not shown.
BIN
Filtration/Resources/AlertSounds/AlertSound_03.mp3
Normal file
BIN
Filtration/Resources/AlertSounds/AlertSound_03.mp3
Normal file
Binary file not shown.
Binary file not shown.
BIN
Filtration/Resources/AlertSounds/AlertSound_04.mp3
Normal file
BIN
Filtration/Resources/AlertSounds/AlertSound_04.mp3
Normal file
Binary file not shown.
Binary file not shown.
BIN
Filtration/Resources/AlertSounds/AlertSound_05.mp3
Normal file
BIN
Filtration/Resources/AlertSounds/AlertSound_05.mp3
Normal file
Binary file not shown.
Binary file not shown.
BIN
Filtration/Resources/AlertSounds/AlertSound_06.mp3
Normal file
BIN
Filtration/Resources/AlertSounds/AlertSound_06.mp3
Normal file
Binary file not shown.
Binary file not shown.
BIN
Filtration/Resources/AlertSounds/AlertSound_07.mp3
Normal file
BIN
Filtration/Resources/AlertSounds/AlertSound_07.mp3
Normal file
Binary file not shown.
Binary file not shown.
BIN
Filtration/Resources/AlertSounds/AlertSound_08.mp3
Normal file
BIN
Filtration/Resources/AlertSounds/AlertSound_08.mp3
Normal file
Binary file not shown.
Binary file not shown.
BIN
Filtration/Resources/AlertSounds/AlertSound_09.mp3
Normal file
BIN
Filtration/Resources/AlertSounds/AlertSound_09.mp3
Normal file
Binary file not shown.
Binary file not shown.
BIN
Filtration/Resources/AlertSounds/AlertSound_10.mp3
Normal file
BIN
Filtration/Resources/AlertSounds/AlertSound_10.mp3
Normal file
Binary file not shown.
Binary file not shown.
BIN
Filtration/Resources/AlertSounds/AlertSound_11.mp3
Normal file
BIN
Filtration/Resources/AlertSounds/AlertSound_11.mp3
Normal file
Binary file not shown.
Binary file not shown.
BIN
Filtration/Resources/AlertSounds/AlertSound_12.mp3
Normal file
BIN
Filtration/Resources/AlertSounds/AlertSound_12.mp3
Normal file
Binary file not shown.
Binary file not shown.
BIN
Filtration/Resources/AlertSounds/AlertSound_13.mp3
Normal file
BIN
Filtration/Resources/AlertSounds/AlertSound_13.mp3
Normal file
Binary file not shown.
Binary file not shown.
BIN
Filtration/Resources/AlertSounds/AlertSound_14.mp3
Normal file
BIN
Filtration/Resources/AlertSounds/AlertSound_14.mp3
Normal file
Binary file not shown.
Binary file not shown.
BIN
Filtration/Resources/AlertSounds/AlertSound_15.mp3
Normal file
BIN
Filtration/Resources/AlertSounds/AlertSound_15.mp3
Normal file
Binary file not shown.
Binary file not shown.
BIN
Filtration/Resources/AlertSounds/AlertSound_16.mp3
Normal file
BIN
Filtration/Resources/AlertSounds/AlertSound_16.mp3
Normal file
Binary file not shown.
Binary file not shown.
BIN
Filtration/Resources/AlertSounds/SH22Alchemy.mp3
Normal file
BIN
Filtration/Resources/AlertSounds/SH22Alchemy.mp3
Normal file
Binary file not shown.
Binary file not shown.
BIN
Filtration/Resources/AlertSounds/SH22Blessed.mp3
Normal file
BIN
Filtration/Resources/AlertSounds/SH22Blessed.mp3
Normal file
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user