Add new filter fuatures
|
@ -3,9 +3,9 @@ using System.ComponentModel;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Windows.Markup;
|
using System.Windows.Markup;
|
||||||
|
|
||||||
namespace Filtration.Extensions
|
namespace Filtration.Common.Extensions
|
||||||
{
|
{
|
||||||
internal class EnumerationExtension : MarkupExtension
|
public class EnumerationExtension : MarkupExtension
|
||||||
{
|
{
|
||||||
private Type _enumType;
|
private Type _enumType;
|
||||||
|
|
|
@ -4,7 +4,7 @@ using System.Windows;
|
||||||
using System.Windows.Documents;
|
using System.Windows.Documents;
|
||||||
using System.Windows.Navigation;
|
using System.Windows.Navigation;
|
||||||
|
|
||||||
namespace Filtration.Extensions
|
namespace Filtration.Common.Extensions
|
||||||
{
|
{
|
||||||
public static class HyperlinkExtensions
|
public static class HyperlinkExtensions
|
||||||
{
|
{
|
|
@ -75,6 +75,8 @@
|
||||||
<Compile Include="Converters\ColorToSolidColorBrushConverter.cs" />
|
<Compile Include="Converters\ColorToSolidColorBrushConverter.cs" />
|
||||||
<Compile Include="Converters\InverseBooleanVisibilityConverter.cs" />
|
<Compile Include="Converters\InverseBooleanVisibilityConverter.cs" />
|
||||||
<Compile Include="Converters\StringToVisibilityConverter.cs" />
|
<Compile Include="Converters\StringToVisibilityConverter.cs" />
|
||||||
|
<Compile Include="Extensions\EnumerationExtension.cs" />
|
||||||
|
<Compile Include="Extensions\HyperlinkExtensions.cs" />
|
||||||
<Compile Include="Messages\ThemeClosedMessage.cs" />
|
<Compile Include="Messages\ThemeClosedMessage.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="Services\FileSystemService.cs" />
|
<Compile Include="Services\FileSystemService.cs" />
|
||||||
|
|
|
@ -0,0 +1,90 @@
|
||||||
|
using System;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using Filtration.ObjectModel.Enums;
|
||||||
|
using Filtration.ObjectModel.Extensions;
|
||||||
|
using Filtration.ObjectModel.ThemeEditor;
|
||||||
|
|
||||||
|
namespace Filtration.ObjectModel.BlockItemBaseTypes
|
||||||
|
{
|
||||||
|
public abstract class EffectColorBlockItem : BlockItemBase, IAudioVisualBlockItem, IBlockItemWithTheme
|
||||||
|
{
|
||||||
|
private EffectColor _color;
|
||||||
|
private bool _temporary;
|
||||||
|
private ThemeComponent _themeComponent;
|
||||||
|
|
||||||
|
protected EffectColorBlockItem()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected EffectColorBlockItem(EffectColor color, bool temporary)
|
||||||
|
{
|
||||||
|
Color = color;
|
||||||
|
Temporary = temporary;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string OutputText => PrefixText + " " + Color.GetAttributeDescription() +
|
||||||
|
(Temporary ? " " + "Temp" : string.Empty) +
|
||||||
|
(ThemeComponent != null ? " # " + ThemeComponent.ComponentName : string.Empty);
|
||||||
|
|
||||||
|
public override string SummaryText => string.Empty;
|
||||||
|
|
||||||
|
public ThemeComponent ThemeComponent
|
||||||
|
{
|
||||||
|
get { return _themeComponent; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (_themeComponent == value) { return; }
|
||||||
|
|
||||||
|
if (_themeComponent != null)
|
||||||
|
{
|
||||||
|
_themeComponent.ThemeComponentUpdated -= OnThemeComponentUpdated;
|
||||||
|
_themeComponent.ThemeComponentDeleted -= OnThemeComponentDeleted;
|
||||||
|
}
|
||||||
|
if (value != null)
|
||||||
|
{
|
||||||
|
value.ThemeComponentUpdated += OnThemeComponentUpdated;
|
||||||
|
value.ThemeComponentDeleted += OnThemeComponentDeleted;
|
||||||
|
}
|
||||||
|
|
||||||
|
_themeComponent = value;
|
||||||
|
OnPropertyChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Color SummaryBackgroundColor => Colors.Transparent;
|
||||||
|
public override Color SummaryTextColor => Colors.Transparent;
|
||||||
|
|
||||||
|
public EffectColor Color
|
||||||
|
{
|
||||||
|
get { return _color; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_color = value;
|
||||||
|
IsDirty = true;
|
||||||
|
OnPropertyChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Temporary
|
||||||
|
{
|
||||||
|
get { return _temporary; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_temporary = value;
|
||||||
|
IsDirty = true;
|
||||||
|
OnPropertyChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnThemeComponentUpdated(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Color = ((EffectColorThemeComponent)sender).EffectColor;
|
||||||
|
Temporary = ((EffectColorThemeComponent)sender).Temporary;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnThemeComponentDeleted(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
ThemeComponent = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,103 @@
|
||||||
|
using System;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using Filtration.ObjectModel.Enums;
|
||||||
|
using Filtration.ObjectModel.Extensions;
|
||||||
|
using Filtration.ObjectModel.ThemeEditor;
|
||||||
|
|
||||||
|
namespace Filtration.ObjectModel.BlockItemBaseTypes
|
||||||
|
{
|
||||||
|
public abstract class IconBlockItem : BlockItemBase, IAudioVisualBlockItem, IBlockItemWithTheme
|
||||||
|
{
|
||||||
|
private IconSize _size;
|
||||||
|
private IconColor _color;
|
||||||
|
private IconShape _shape;
|
||||||
|
private ThemeComponent _themeComponent;
|
||||||
|
|
||||||
|
protected IconBlockItem()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected IconBlockItem(IconSize size, IconColor color, IconShape shape)
|
||||||
|
{
|
||||||
|
Size = size;
|
||||||
|
Color = color;
|
||||||
|
Shape = shape;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string OutputText => PrefixText + " " + (int)Size + " " + Color.GetAttributeDescription() + " " + Shape.GetAttributeDescription() +
|
||||||
|
(ThemeComponent != null ? " # " + ThemeComponent.ComponentName : string.Empty);
|
||||||
|
|
||||||
|
public override string SummaryText => string.Empty;
|
||||||
|
|
||||||
|
public ThemeComponent ThemeComponent
|
||||||
|
{
|
||||||
|
get { return _themeComponent; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (_themeComponent == value) { return; }
|
||||||
|
|
||||||
|
if (_themeComponent != null)
|
||||||
|
{
|
||||||
|
_themeComponent.ThemeComponentUpdated -= OnThemeComponentUpdated;
|
||||||
|
_themeComponent.ThemeComponentDeleted -= OnThemeComponentDeleted;
|
||||||
|
}
|
||||||
|
if (value != null)
|
||||||
|
{
|
||||||
|
value.ThemeComponentUpdated += OnThemeComponentUpdated;
|
||||||
|
value.ThemeComponentDeleted += OnThemeComponentDeleted;
|
||||||
|
}
|
||||||
|
|
||||||
|
_themeComponent = value;
|
||||||
|
OnPropertyChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Color SummaryBackgroundColor => Colors.Transparent;
|
||||||
|
public override Color SummaryTextColor => Colors.Transparent;
|
||||||
|
|
||||||
|
public IconSize Size
|
||||||
|
{
|
||||||
|
get { return _size; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_size = value;
|
||||||
|
IsDirty = true;
|
||||||
|
OnPropertyChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public IconColor Color
|
||||||
|
{
|
||||||
|
get { return _color; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_color = value;
|
||||||
|
IsDirty = true;
|
||||||
|
OnPropertyChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public IconShape Shape
|
||||||
|
{
|
||||||
|
get { return _shape; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_shape = value;
|
||||||
|
IsDirty = true;
|
||||||
|
OnPropertyChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnThemeComponentUpdated(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Size = ((IconThemeComponent)sender).IconSize;
|
||||||
|
Color = ((IconThemeComponent)sender).IconColor;
|
||||||
|
Shape = ((IconThemeComponent)sender).IconShape;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnThemeComponentDeleted(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
ThemeComponent = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -16,6 +16,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
public override string PrefixText => "SetBackgroundColor";
|
public override string PrefixText => "SetBackgroundColor";
|
||||||
public override int MaximumAllowed => 1;
|
public override int MaximumAllowed => 1;
|
||||||
public override string DisplayHeading => "Background Color";
|
public override string DisplayHeading => "Background Color";
|
||||||
public override int SortOrder => 22;
|
public override int SortOrder => 23;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
|
|
||||||
public override Color SummaryBackgroundColor => Colors.MediumTurquoise;
|
public override Color SummaryBackgroundColor => Colors.MediumTurquoise;
|
||||||
public override Color SummaryTextColor => Colors.Black;
|
public override Color SummaryTextColor => Colors.Black;
|
||||||
public override int SortOrder => 19;
|
public override int SortOrder => 20;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
using System.Windows.Media;
|
|
||||||
using Filtration.ObjectModel.BlockItemBaseTypes;
|
|
||||||
|
|
||||||
namespace Filtration.ObjectModel.BlockItemTypes
|
|
||||||
{
|
|
||||||
public class BeamBlockItem : ColorBooleanBlockItem
|
|
||||||
{
|
|
||||||
public BeamBlockItem()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public BeamBlockItem(Color color, bool booleanValue) : base(color, booleanValue)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string PrefixText => "BeamColor";
|
|
||||||
public override int MaximumAllowed => 1;
|
|
||||||
public override string DisplayHeading => "Beam Color";
|
|
||||||
public override int SortOrder => 29;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -16,6 +16,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
public override string PrefixText => "SetBorderColor";
|
public override string PrefixText => "SetBorderColor";
|
||||||
public override int MaximumAllowed => 1;
|
public override int MaximumAllowed => 1;
|
||||||
public override string DisplayHeading => "Border Color";
|
public override string DisplayHeading => "Border Color";
|
||||||
public override int SortOrder => 23;
|
public override int SortOrder => 24;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
|
|
||||||
public override Color SummaryBackgroundColor => Colors.MediumSeaGreen;
|
public override Color SummaryBackgroundColor => Colors.MediumSeaGreen;
|
||||||
public override Color SummaryTextColor => Colors.White;
|
public override Color SummaryTextColor => Colors.White;
|
||||||
public override int SortOrder => 18;
|
public override int SortOrder => 19;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
public override string PrefixText => "CustomAlertSound";
|
public override string PrefixText => "CustomAlertSound";
|
||||||
public override int MaximumAllowed => 1;
|
public override int MaximumAllowed => 1;
|
||||||
public override string DisplayHeading => "Custom Alert Sound";
|
public override string DisplayHeading => "Custom Alert Sound";
|
||||||
public override int SortOrder => 30;
|
public override int SortOrder => 31;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
public override string DisplayHeading => "Disable Drop Sound";
|
public override string DisplayHeading => "Disable Drop Sound";
|
||||||
public override Color SummaryBackgroundColor => Colors.Transparent;
|
public override Color SummaryBackgroundColor => Colors.Transparent;
|
||||||
public override Color SummaryTextColor => Colors.Transparent;
|
public override Color SummaryTextColor => Colors.Transparent;
|
||||||
public override int SortOrder => 27;
|
public override int SortOrder => 28;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
public override string SummaryText => "Drop Level " + FilterPredicate;
|
public override string SummaryText => "Drop Level " + FilterPredicate;
|
||||||
public override Color SummaryBackgroundColor => Colors.DodgerBlue;
|
public override Color SummaryBackgroundColor => Colors.DodgerBlue;
|
||||||
public override Color SummaryTextColor => Colors.White;
|
public override Color SummaryTextColor => Colors.White;
|
||||||
public override int SortOrder => 14;
|
public override int SortOrder => 15;
|
||||||
public override int Minimum => 0;
|
public override int Minimum => 0;
|
||||||
public override int Maximum => 100;
|
public override int Maximum => 100;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
public override string DisplayHeading => "Elder Map";
|
public override string DisplayHeading => "Elder Map";
|
||||||
public override Color SummaryBackgroundColor => Colors.DarkGoldenrod;
|
public override Color SummaryBackgroundColor => Colors.DarkGoldenrod;
|
||||||
public override Color SummaryTextColor => Colors.White;
|
public override Color SummaryTextColor => Colors.White;
|
||||||
public override int SortOrder => 9;
|
public override int SortOrder => 10;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
public override string PrefixText => "SetFontSize";
|
public override string PrefixText => "SetFontSize";
|
||||||
public override int MaximumAllowed => 1;
|
public override int MaximumAllowed => 1;
|
||||||
public override string DisplayHeading => "Font Size";
|
public override string DisplayHeading => "Font Size";
|
||||||
public override int SortOrder => 24;
|
public override int SortOrder => 25;
|
||||||
public override int Minimum => 11;
|
public override int Minimum => 11;
|
||||||
public override int Maximum => 45;
|
public override int Maximum => 45;
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
public override string SummaryText => "Gem Level " + FilterPredicate;
|
public override string SummaryText => "Gem Level " + FilterPredicate;
|
||||||
public override Color SummaryBackgroundColor => Colors.DarkSlateGray;
|
public override Color SummaryBackgroundColor => Colors.DarkSlateGray;
|
||||||
public override Color SummaryTextColor => Colors.White;
|
public override Color SummaryTextColor => Colors.White;
|
||||||
public override int SortOrder => 15;
|
public override int SortOrder => 16;
|
||||||
public override int Minimum => 0;
|
public override int Minimum => 0;
|
||||||
public override int Maximum => 21;
|
public override int Maximum => 21;
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
|
|
||||||
public override Color SummaryBackgroundColor => Colors.MidnightBlue;
|
public override Color SummaryBackgroundColor => Colors.MidnightBlue;
|
||||||
public override Color SummaryTextColor => Colors.White;
|
public override Color SummaryTextColor => Colors.White;
|
||||||
public override int SortOrder => 20;
|
public override int SortOrder => 21;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
public override string SummaryText => "Height " + FilterPredicate;
|
public override string SummaryText => "Height " + FilterPredicate;
|
||||||
public override Color SummaryBackgroundColor => Colors.LightBlue;
|
public override Color SummaryBackgroundColor => Colors.LightBlue;
|
||||||
public override Color SummaryTextColor => Colors.Black;
|
public override Color SummaryTextColor => Colors.Black;
|
||||||
public override int SortOrder => 11;
|
public override int SortOrder => 12;
|
||||||
public override int Minimum => 0;
|
public override int Minimum => 0;
|
||||||
public override int Maximum => 6;
|
public override int Maximum => 6;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
using Filtration.ObjectModel.BlockItemBaseTypes;
|
|
||||||
|
|
||||||
namespace Filtration.ObjectModel.BlockItemTypes
|
|
||||||
{
|
|
||||||
public class IconBlockItem : StringBlockItem
|
|
||||||
{
|
|
||||||
public IconBlockItem()
|
|
||||||
{
|
|
||||||
Value = "Icon1";
|
|
||||||
}
|
|
||||||
|
|
||||||
public IconBlockItem(string value) : base(value)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string PrefixText => "Icon";
|
|
||||||
public override int MaximumAllowed => 1;
|
|
||||||
public override string DisplayHeading => "Drop Icon";
|
|
||||||
public override int SortOrder => 28;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -20,7 +20,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
public override string SummaryText => "Item Level " + FilterPredicate;
|
public override string SummaryText => "Item Level " + FilterPredicate;
|
||||||
public override Color SummaryBackgroundColor => Colors.DarkSlateGray;
|
public override Color SummaryBackgroundColor => Colors.DarkSlateGray;
|
||||||
public override Color SummaryTextColor => Colors.White;
|
public override Color SummaryTextColor => Colors.White;
|
||||||
public override int SortOrder => 13;
|
public override int SortOrder => 14;
|
||||||
public override int Minimum => 0;
|
public override int Minimum => 0;
|
||||||
public override int Maximum => 100;
|
public override int Maximum => 100;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
using Filtration.ObjectModel.BlockItemBaseTypes;
|
||||||
|
using Filtration.ObjectModel.Enums;
|
||||||
|
|
||||||
|
namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
|
{
|
||||||
|
public class MapIconBlockItem : IconBlockItem
|
||||||
|
{
|
||||||
|
public MapIconBlockItem()
|
||||||
|
{
|
||||||
|
Size = IconSize.Largest;
|
||||||
|
Color = IconColor.Red;
|
||||||
|
Shape = IconShape.Circle;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MapIconBlockItem(IconSize size, IconColor iconColor, IconShape iconShape) : base(size, iconColor, iconShape)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string PrefixText => "MinimapIcon";
|
||||||
|
public override int MaximumAllowed => 1;
|
||||||
|
public override string DisplayHeading => "Minimap Icon";
|
||||||
|
public override int SortOrder => 29;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
using System.Windows.Media;
|
||||||
|
using Filtration.ObjectModel.BlockItemBaseTypes;
|
||||||
|
|
||||||
|
namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
|
{
|
||||||
|
public class MapTierBlockItem : NumericFilterPredicateBlockItem
|
||||||
|
{
|
||||||
|
public override string PrefixText => "MapTier";
|
||||||
|
public override int MaximumAllowed => 2;
|
||||||
|
public override string DisplayHeading => "Map Tier";
|
||||||
|
public override string SummaryText => "Map Tier " + FilterPredicate;
|
||||||
|
public override Color SummaryBackgroundColor => Colors.DarkSlateGray;
|
||||||
|
public override Color SummaryTextColor => Colors.White;
|
||||||
|
public override int SortOrder => 8;
|
||||||
|
public override int Minimum => 1;
|
||||||
|
public override int Maximum => 16;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
using Filtration.ObjectModel.BlockItemBaseTypes;
|
||||||
|
using Filtration.ObjectModel.Enums;
|
||||||
|
|
||||||
|
namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
|
{
|
||||||
|
public class PlayEffectBlockItem : EffectColorBlockItem
|
||||||
|
{
|
||||||
|
public PlayEffectBlockItem()
|
||||||
|
{
|
||||||
|
Color = EffectColor.Red;
|
||||||
|
Temporary = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PlayEffectBlockItem(EffectColor effectColor, bool temporary) : base(effectColor, temporary)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string PrefixText => "PlayEffect";
|
||||||
|
public override int MaximumAllowed => 1;
|
||||||
|
public override string DisplayHeading => "Play Effect";
|
||||||
|
public override int SortOrder => 30;
|
||||||
|
}
|
||||||
|
}
|
|
@ -17,6 +17,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
public override string PrefixText => "PlayAlertSoundPositional";
|
public override string PrefixText => "PlayAlertSoundPositional";
|
||||||
public override int MaximumAllowed => 1;
|
public override int MaximumAllowed => 1;
|
||||||
public override string DisplayHeading => "Play Positional Alert Sound";
|
public override string DisplayHeading => "Play Positional Alert Sound";
|
||||||
public override int SortOrder => 26;
|
public override int SortOrder => 27;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
((ItemRarity) FilterPredicate.PredicateOperand).GetAttributeDescription();
|
((ItemRarity) FilterPredicate.PredicateOperand).GetAttributeDescription();
|
||||||
public override Color SummaryBackgroundColor => Colors.LightCoral;
|
public override Color SummaryBackgroundColor => Colors.LightCoral;
|
||||||
public override Color SummaryTextColor => Colors.White;
|
public override Color SummaryTextColor => Colors.White;
|
||||||
public override int SortOrder => 17;
|
public override int SortOrder => 18;
|
||||||
public override int Minimum => 0;
|
public override int Minimum => 0;
|
||||||
public override int Maximum => (int)ItemRarity.Unique;
|
public override int Maximum => (int)ItemRarity.Unique;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
public override string DisplayHeading => "Shaped Map";
|
public override string DisplayHeading => "Shaped Map";
|
||||||
public override Color SummaryBackgroundColor => Colors.DarkGoldenrod;
|
public override Color SummaryBackgroundColor => Colors.DarkGoldenrod;
|
||||||
public override Color SummaryTextColor => Colors.White;
|
public override Color SummaryTextColor => Colors.White;
|
||||||
public override int SortOrder => 8;
|
public override int SortOrder => 9;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
|
|
||||||
public override Color SummaryBackgroundColor => Colors.GhostWhite;
|
public override Color SummaryBackgroundColor => Colors.GhostWhite;
|
||||||
public override Color SummaryTextColor => Colors.Black;
|
public override Color SummaryTextColor => Colors.Black;
|
||||||
public override int SortOrder => 10;
|
public override int SortOrder => 11;
|
||||||
|
|
||||||
private SocketColor StringToSocketColor(char socketColorString)
|
private SocketColor StringToSocketColor(char socketColorString)
|
||||||
{
|
{
|
||||||
|
|
|
@ -17,6 +17,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
public override string PrefixText => "PlayAlertSound";
|
public override string PrefixText => "PlayAlertSound";
|
||||||
public override int MaximumAllowed => 1;
|
public override int MaximumAllowed => 1;
|
||||||
public override string DisplayHeading => "Play Alert Sound";
|
public override string DisplayHeading => "Play Alert Sound";
|
||||||
public override int SortOrder => 25;
|
public override int SortOrder => 26;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
public override string SummaryText => "Stack Size " + FilterPredicate;
|
public override string SummaryText => "Stack Size " + FilterPredicate;
|
||||||
public override Color SummaryBackgroundColor => Colors.DarkSlateGray;
|
public override Color SummaryBackgroundColor => Colors.DarkSlateGray;
|
||||||
public override Color SummaryTextColor => Colors.White;
|
public override Color SummaryTextColor => Colors.White;
|
||||||
public override int SortOrder => 16;
|
public override int SortOrder => 17;
|
||||||
public override int Minimum => 0;
|
public override int Minimum => 0;
|
||||||
public override int Maximum => 1000;
|
public override int Maximum => 1000;
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,6 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
public override string PrefixText => "SetTextColor";
|
public override string PrefixText => "SetTextColor";
|
||||||
public override int MaximumAllowed => 1;
|
public override int MaximumAllowed => 1;
|
||||||
public override string DisplayHeading => "Text Color";
|
public override string DisplayHeading => "Text Color";
|
||||||
public override int SortOrder => 21;
|
public override int SortOrder => 22;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
public override string SummaryText => "Width " + FilterPredicate;
|
public override string SummaryText => "Width " + FilterPredicate;
|
||||||
public override Color SummaryBackgroundColor => Colors.MediumPurple;
|
public override Color SummaryBackgroundColor => Colors.MediumPurple;
|
||||||
public override Color SummaryTextColor => Colors.White;
|
public override Color SummaryTextColor => Colors.White;
|
||||||
public override int SortOrder => 12;
|
public override int SortOrder => 13;
|
||||||
public override int Minimum => 0;
|
public override int Minimum => 0;
|
||||||
public override int Maximum => 2;
|
public override int Maximum => 2;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
|
namespace Filtration.ObjectModel.Enums
|
||||||
|
{
|
||||||
|
public enum EffectColor
|
||||||
|
{
|
||||||
|
[Description("Red")]
|
||||||
|
Red,
|
||||||
|
[Description("Green")]
|
||||||
|
Green,
|
||||||
|
[Description("Blue")]
|
||||||
|
Blue,
|
||||||
|
[Description("Brown")]
|
||||||
|
Brown,
|
||||||
|
[Description("White")]
|
||||||
|
White,
|
||||||
|
[Description("Yellow")]
|
||||||
|
Yellow
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
|
namespace Filtration.ObjectModel.Enums
|
||||||
|
{
|
||||||
|
public enum IconColor
|
||||||
|
{
|
||||||
|
[Description("Red")]
|
||||||
|
Red,
|
||||||
|
[Description("Green")]
|
||||||
|
Green,
|
||||||
|
[Description("Blue")]
|
||||||
|
Blue,
|
||||||
|
[Description("Brown")]
|
||||||
|
Brown,
|
||||||
|
[Description("White")]
|
||||||
|
White,
|
||||||
|
[Description("Yellow")]
|
||||||
|
Yellow
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
|
namespace Filtration.ObjectModel.Enums
|
||||||
|
{
|
||||||
|
public enum IconShape
|
||||||
|
{
|
||||||
|
[Description("Circle")]
|
||||||
|
Circle,
|
||||||
|
[Description("Diamond")]
|
||||||
|
Diamond,
|
||||||
|
[Description("Hexagon")]
|
||||||
|
Hexagon,
|
||||||
|
[Description("Square")]
|
||||||
|
Square,
|
||||||
|
[Description("Star")]
|
||||||
|
Star,
|
||||||
|
[Description("Triangle")]
|
||||||
|
Triangle
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
|
namespace Filtration.ObjectModel.Enums
|
||||||
|
{
|
||||||
|
public enum IconSize
|
||||||
|
{
|
||||||
|
[Description("Largest")]
|
||||||
|
Largest,
|
||||||
|
[Description("Medium")]
|
||||||
|
Medium,
|
||||||
|
[Description("Small")]
|
||||||
|
Small
|
||||||
|
}
|
||||||
|
}
|
|
@ -15,6 +15,10 @@ namespace Filtration.ObjectModel.Enums
|
||||||
[Description("Alert Sound")]
|
[Description("Alert Sound")]
|
||||||
AlertSound,
|
AlertSound,
|
||||||
[Description("Custom Sound")]
|
[Description("Custom Sound")]
|
||||||
CustomSound
|
CustomSound,
|
||||||
|
[Description("Icon")]
|
||||||
|
Icon,
|
||||||
|
[Description("Effect")]
|
||||||
|
Effect
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,6 +70,8 @@
|
||||||
<Compile Include="BlockItemBaseTypes\ColorBlockItem.cs" />
|
<Compile Include="BlockItemBaseTypes\ColorBlockItem.cs" />
|
||||||
<Compile Include="BlockItemBaseTypes\ColorBooleanBlockItem.cs" />
|
<Compile Include="BlockItemBaseTypes\ColorBooleanBlockItem.cs" />
|
||||||
<Compile Include="BlockItemBaseTypes\DualIntegerBlockItem.cs" />
|
<Compile Include="BlockItemBaseTypes\DualIntegerBlockItem.cs" />
|
||||||
|
<Compile Include="BlockItemBaseTypes\EffectColorBlockItem.cs" />
|
||||||
|
<Compile Include="BlockItemBaseTypes\IconBlockItem.cs" />
|
||||||
<Compile Include="BlockItemBaseTypes\StringBlockItem.cs" />
|
<Compile Include="BlockItemBaseTypes\StringBlockItem.cs" />
|
||||||
<Compile Include="BlockItemBaseTypes\StrIntBlockItem.cs" />
|
<Compile Include="BlockItemBaseTypes\StrIntBlockItem.cs" />
|
||||||
<Compile Include="BlockItemBaseTypes\IntegerBlockItem.cs" />
|
<Compile Include="BlockItemBaseTypes\IntegerBlockItem.cs" />
|
||||||
|
@ -77,7 +79,8 @@
|
||||||
<Compile Include="BlockItemBaseTypes\StringListBlockItem.cs" />
|
<Compile Include="BlockItemBaseTypes\StringListBlockItem.cs" />
|
||||||
<Compile Include="BlockItemTypes\BackgroundColorBlockItem.cs" />
|
<Compile Include="BlockItemTypes\BackgroundColorBlockItem.cs" />
|
||||||
<Compile Include="BlockItemTypes\BaseTypeBlockItem.cs" />
|
<Compile Include="BlockItemTypes\BaseTypeBlockItem.cs" />
|
||||||
<Compile Include="BlockItemTypes\BeamBlockItem.cs" />
|
<Compile Include="BlockItemTypes\MapTierBlockItem.cs" />
|
||||||
|
<Compile Include="BlockItemTypes\PlayEffectBlockItem.cs" />
|
||||||
<Compile Include="BlockItemTypes\BorderColorBlockItem.cs" />
|
<Compile Include="BlockItemTypes\BorderColorBlockItem.cs" />
|
||||||
<Compile Include="BlockItemTypes\ClassBlockItem.cs" />
|
<Compile Include="BlockItemTypes\ClassBlockItem.cs" />
|
||||||
<Compile Include="BlockItemTypes\CustomSoundBlockItem.cs" />
|
<Compile Include="BlockItemTypes\CustomSoundBlockItem.cs" />
|
||||||
|
@ -85,7 +88,7 @@
|
||||||
<Compile Include="BlockItemTypes\ElderMapBlockItem.cs" />
|
<Compile Include="BlockItemTypes\ElderMapBlockItem.cs" />
|
||||||
<Compile Include="BlockItemTypes\GemLevelBlockItem.cs" />
|
<Compile Include="BlockItemTypes\GemLevelBlockItem.cs" />
|
||||||
<Compile Include="BlockItemTypes\HasExplicitModBlockItem.cs" />
|
<Compile Include="BlockItemTypes\HasExplicitModBlockItem.cs" />
|
||||||
<Compile Include="BlockItemTypes\IconBlockItem.cs" />
|
<Compile Include="BlockItemTypes\MapIconBlockItem.cs" />
|
||||||
<Compile Include="BlockItemTypes\ShapedMapBlockItem.cs" />
|
<Compile Include="BlockItemTypes\ShapedMapBlockItem.cs" />
|
||||||
<Compile Include="BlockItemTypes\ShaperItemBlockItem.cs" />
|
<Compile Include="BlockItemTypes\ShaperItemBlockItem.cs" />
|
||||||
<Compile Include="BlockItemTypes\ElderItemBlockItem.cs" />
|
<Compile Include="BlockItemTypes\ElderItemBlockItem.cs" />
|
||||||
|
@ -122,8 +125,12 @@
|
||||||
<Compile Include="Commands\IUndoableCommand.cs" />
|
<Compile Include="Commands\IUndoableCommand.cs" />
|
||||||
<Compile Include="Enums\BlockAction.cs" />
|
<Compile Include="Enums\BlockAction.cs" />
|
||||||
<Compile Include="Enums\BlockItemType.cs" />
|
<Compile Include="Enums\BlockItemType.cs" />
|
||||||
|
<Compile Include="Enums\EffectColor.cs" />
|
||||||
<Compile Include="Enums\FilterPredicateOperator.cs" />
|
<Compile Include="Enums\FilterPredicateOperator.cs" />
|
||||||
<Compile Include="Enums\FilterType.cs" />
|
<Compile Include="Enums\FilterType.cs" />
|
||||||
|
<Compile Include="Enums\IconColor.cs" />
|
||||||
|
<Compile Include="Enums\IconShape.cs" />
|
||||||
|
<Compile Include="Enums\IconSize.cs" />
|
||||||
<Compile Include="Enums\ItemRarity.cs" />
|
<Compile Include="Enums\ItemRarity.cs" />
|
||||||
<Compile Include="Enums\SocketColor.cs" />
|
<Compile Include="Enums\SocketColor.cs" />
|
||||||
<Compile Include="Enums\ThemeComponentType.cs" />
|
<Compile Include="Enums\ThemeComponentType.cs" />
|
||||||
|
@ -148,6 +155,8 @@
|
||||||
<Compile Include="ReplaceColorsParameterSet.cs" />
|
<Compile Include="ReplaceColorsParameterSet.cs" />
|
||||||
<Compile Include="Socket.cs" />
|
<Compile Include="Socket.cs" />
|
||||||
<Compile Include="SocketGroup.cs" />
|
<Compile Include="SocketGroup.cs" />
|
||||||
|
<Compile Include="ThemeEditor\EffectColorThemeComponent.cs" />
|
||||||
|
<Compile Include="ThemeEditor\IconThemeComponent.cs" />
|
||||||
<Compile Include="ThemeEditor\StringThemeComponent.cs" />
|
<Compile Include="ThemeEditor\StringThemeComponent.cs" />
|
||||||
<Compile Include="ThemeEditor\StrIntThemeComponent.cs" />
|
<Compile Include="ThemeEditor\StrIntThemeComponent.cs" />
|
||||||
<Compile Include="ThemeEditor\IntegerThemeComponent.cs" />
|
<Compile Include="ThemeEditor\IntegerThemeComponent.cs" />
|
||||||
|
|
|
@ -23,8 +23,10 @@ namespace Filtration.ObjectModel
|
||||||
Color DisplayTextColor { get; }
|
Color DisplayTextColor { get; }
|
||||||
Color DisplayBorderColor { get; }
|
Color DisplayBorderColor { get; }
|
||||||
double DisplayFontSize { get; }
|
double DisplayFontSize { get; }
|
||||||
string DisplayIcon { get; }
|
int DisplayIconSize { get; }
|
||||||
Color DisplayBeamColor { get; }
|
int DisplayIconColor { get; }
|
||||||
|
int DisplayIconShape { get; }
|
||||||
|
Color DisplayEffectColor { get; }
|
||||||
bool HasBlockItemOfType<T>();
|
bool HasBlockItemOfType<T>();
|
||||||
bool HasBlockGroupInParentHierarchy(ItemFilterBlockGroup targetBlockGroup, ItemFilterBlockGroup startingBlockGroup);
|
bool HasBlockGroupInParentHierarchy(ItemFilterBlockGroup targetBlockGroup, ItemFilterBlockGroup startingBlockGroup);
|
||||||
}
|
}
|
||||||
|
@ -263,21 +265,68 @@ namespace Filtration.ObjectModel
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string DisplayIcon
|
public int DisplayIconSize
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
var displayIcon = BlockItems.OfType<IconBlockItem>().FirstOrDefault();
|
var mapIconBlockItem = BlockItems.OfType<MapIconBlockItem>().FirstOrDefault();
|
||||||
return (displayIcon != null) ? displayIcon.Value : "";
|
if (mapIconBlockItem != null)
|
||||||
|
return (int)mapIconBlockItem.Size;
|
||||||
|
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Color DisplayBeamColor
|
public int DisplayIconColor
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
var beamBlockItem = BlockItems.OfType<BeamBlockItem>().FirstOrDefault();
|
var mapIconBlockItem = BlockItems.OfType<MapIconBlockItem>().FirstOrDefault();
|
||||||
return beamBlockItem?.Color ?? new Color { A = 0, R = 0, G = 0, B = 0 };
|
if (mapIconBlockItem != null)
|
||||||
|
return (int)mapIconBlockItem.Color;
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int DisplayIconShape
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
var mapIconBlockItem = BlockItems.OfType<MapIconBlockItem>().FirstOrDefault();
|
||||||
|
if (mapIconBlockItem != null)
|
||||||
|
return (int)mapIconBlockItem.Shape;
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Color DisplayEffectColor
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
var beamBlockItem = BlockItems.OfType<PlayEffectBlockItem>().FirstOrDefault();
|
||||||
|
|
||||||
|
if (beamBlockItem != null)
|
||||||
|
{
|
||||||
|
switch (beamBlockItem.Color)
|
||||||
|
{
|
||||||
|
case EffectColor.Red:
|
||||||
|
return Colors.Red;
|
||||||
|
case EffectColor.Green:
|
||||||
|
return Colors.Green;
|
||||||
|
case EffectColor.Blue:
|
||||||
|
return Colors.Blue;
|
||||||
|
case EffectColor.Brown:
|
||||||
|
return Colors.Brown;
|
||||||
|
case EffectColor.White:
|
||||||
|
return Colors.White;
|
||||||
|
case EffectColor.Yellow:
|
||||||
|
return Colors.Yellow;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Colors.Transparent;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
using System;
|
||||||
|
using Filtration.ObjectModel.Enums;
|
||||||
|
|
||||||
|
namespace Filtration.ObjectModel.ThemeEditor
|
||||||
|
{
|
||||||
|
[Serializable]
|
||||||
|
public class EffectColorThemeComponent : ThemeComponent
|
||||||
|
{
|
||||||
|
private EffectColor _effectColor;
|
||||||
|
private bool _temporary;
|
||||||
|
|
||||||
|
public EffectColorThemeComponent(ThemeComponentType componentType, string componentName, EffectColor componentEffectColor, bool componentTemporary)
|
||||||
|
{
|
||||||
|
if (componentName == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentException("Null parameters not allowed in EffectColorThemeComponent constructor");
|
||||||
|
}
|
||||||
|
|
||||||
|
ComponentType = componentType;
|
||||||
|
ComponentName = componentName;
|
||||||
|
EffectColor = componentEffectColor;
|
||||||
|
Temporary = componentTemporary;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EffectColor EffectColor
|
||||||
|
{
|
||||||
|
get { return _effectColor; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_effectColor = value;
|
||||||
|
OnPropertyChanged();
|
||||||
|
_themeComponentUpdatedEventHandler?.Invoke(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Temporary
|
||||||
|
{
|
||||||
|
get { return _temporary; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_temporary = value;
|
||||||
|
OnPropertyChanged();
|
||||||
|
_themeComponentUpdatedEventHandler?.Invoke(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,60 @@
|
||||||
|
using System;
|
||||||
|
using Filtration.ObjectModel.Enums;
|
||||||
|
|
||||||
|
namespace Filtration.ObjectModel.ThemeEditor
|
||||||
|
{
|
||||||
|
[Serializable]
|
||||||
|
public class IconThemeComponent : ThemeComponent
|
||||||
|
{
|
||||||
|
private IconSize _iconSize;
|
||||||
|
private IconColor _iconColor;
|
||||||
|
private IconShape _iconShape;
|
||||||
|
|
||||||
|
public IconThemeComponent(ThemeComponentType componentType, string componentName, IconSize componentIconSize, IconColor componentIconColor, IconShape componentIconShape)
|
||||||
|
{
|
||||||
|
if (componentName == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentException("Null parameters not allowed in IconThemeComponent constructor");
|
||||||
|
}
|
||||||
|
|
||||||
|
ComponentType = componentType;
|
||||||
|
ComponentName = componentName;
|
||||||
|
IconSize = componentIconSize;
|
||||||
|
IconColor = componentIconColor;
|
||||||
|
IconShape = componentIconShape;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IconSize IconSize
|
||||||
|
{
|
||||||
|
get { return _iconSize; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_iconSize = value;
|
||||||
|
OnPropertyChanged();
|
||||||
|
_themeComponentUpdatedEventHandler?.Invoke(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public IconColor IconColor
|
||||||
|
{
|
||||||
|
get { return _iconColor; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_iconColor = value;
|
||||||
|
OnPropertyChanged();
|
||||||
|
_themeComponentUpdatedEventHandler?.Invoke(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public IconShape IconShape
|
||||||
|
{
|
||||||
|
get { return _iconShape; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_iconShape = value;
|
||||||
|
OnPropertyChanged();
|
||||||
|
_themeComponentUpdatedEventHandler?.Invoke(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -61,6 +61,32 @@ namespace Filtration.ObjectModel.ThemeEditor
|
||||||
return component;
|
return component;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ThemeComponent AddComponent(ThemeComponentType componentType, string componentName, IconSize componentIconSize, IconColor componentIconColor, IconShape componentIconShape)
|
||||||
|
{
|
||||||
|
if (ComponentExists(componentType, componentName))
|
||||||
|
{
|
||||||
|
return Items.FirstOrDefault(t => t.ComponentName == componentName && t.ComponentType == componentType);
|
||||||
|
}
|
||||||
|
|
||||||
|
var component = new IconThemeComponent(componentType, componentName, componentIconSize, componentIconColor, componentIconShape);
|
||||||
|
Items.Add(component);
|
||||||
|
|
||||||
|
return component;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ThemeComponent AddComponent(ThemeComponentType componentType, string componentName, EffectColor componentEffectColor, bool componentTemporary)
|
||||||
|
{
|
||||||
|
if (ComponentExists(componentType, componentName))
|
||||||
|
{
|
||||||
|
return Items.FirstOrDefault(t => t.ComponentName == componentName && t.ComponentType == componentType);
|
||||||
|
}
|
||||||
|
|
||||||
|
var component = new EffectColorThemeComponent(componentType, componentName, componentEffectColor, componentTemporary);
|
||||||
|
Items.Add(component);
|
||||||
|
|
||||||
|
return component;
|
||||||
|
}
|
||||||
|
|
||||||
private bool ComponentExists(ThemeComponentType componentType, string componentName)
|
private bool ComponentExists(ThemeComponentType componentType, string componentName)
|
||||||
{
|
{
|
||||||
var componentCount =
|
var componentCount =
|
||||||
|
|
|
@ -890,42 +890,6 @@ namespace Filtration.Parser.Tests.Services
|
||||||
Assert.AreEqual(1, result.BlockItems.Count(b => b is DisableDropSoundBlockItem));
|
Assert.AreEqual(1, result.BlockItems.Count(b => b is DisableDropSoundBlockItem));
|
||||||
var blockItem = result.BlockItems.OfType<DisableDropSoundBlockItem>().First();
|
var blockItem = result.BlockItems.OfType<DisableDropSoundBlockItem>().First();
|
||||||
Assert.IsTrue(blockItem.BooleanValue);
|
Assert.IsTrue(blockItem.BooleanValue);
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void TranslateStringToItemFilterBlock_DropIcon_ReturnsCorrectObject()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var inputString = "Show" + Environment.NewLine +
|
|
||||||
" Icon Icon1";
|
|
||||||
|
|
||||||
// Act
|
|
||||||
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
|
|
||||||
Assert.AreEqual(1, result.BlockItems.Count(b => b is IconBlockItem));
|
|
||||||
var blockItem = result.BlockItems.OfType<IconBlockItem>().First();
|
|
||||||
Assert.AreEqual("Icon1", blockItem.Value);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void TranslateStringToItemFilterBlock_BeamColor_ReturnsCorrectObject()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var inputString = "Show" + Environment.NewLine +
|
|
||||||
" BeamColor 255 20 100 True";
|
|
||||||
|
|
||||||
// Act
|
|
||||||
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
Assert.AreEqual(1, result.BlockItems.Count(b => b is BeamBlockItem));
|
|
||||||
var blockItem = result.BlockItems.OfType<BeamBlockItem>().First();
|
|
||||||
Assert.AreEqual(255, blockItem.Color.R);
|
|
||||||
Assert.AreEqual(20, blockItem.Color.G);
|
|
||||||
Assert.AreEqual(100, blockItem.Color.B);
|
|
||||||
Assert.IsTrue(blockItem.BooleanValue);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
@ -961,9 +925,7 @@ namespace Filtration.Parser.Tests.Services
|
||||||
" SetBorderColor 0 0 0" + Environment.NewLine +
|
" SetBorderColor 0 0 0" + Environment.NewLine +
|
||||||
" SetFontSize 50" + Environment.NewLine +
|
" SetFontSize 50" + Environment.NewLine +
|
||||||
" PlayAlertSound 3" + Environment.NewLine +
|
" PlayAlertSound 3" + Environment.NewLine +
|
||||||
" DisableDropSound False" + Environment.NewLine +
|
" DisableDropSound False" + Environment.NewLine;
|
||||||
" Icon Icon2" + Environment.NewLine +
|
|
||||||
" BeamColor 255 100 5 false" + Environment.NewLine;
|
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
|
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
|
||||||
|
@ -1068,15 +1030,6 @@ namespace Filtration.Parser.Tests.Services
|
||||||
|
|
||||||
var disableDropSoundBlockItem = result.BlockItems.OfType<DisableDropSoundBlockItem>().First();
|
var disableDropSoundBlockItem = result.BlockItems.OfType<DisableDropSoundBlockItem>().First();
|
||||||
Assert.IsFalse(disableDropSoundBlockItem.BooleanValue);
|
Assert.IsFalse(disableDropSoundBlockItem.BooleanValue);
|
||||||
|
|
||||||
var iconBlockItem = result.BlockItems.OfType<IconBlockItem>().First();
|
|
||||||
Assert.AreEqual("Icon2", iconBlockItem.Value);
|
|
||||||
|
|
||||||
var beamBlockItem = result.BlockItems.OfType<BeamBlockItem>().First();
|
|
||||||
Assert.AreEqual(255, beamBlockItem.Color.R);
|
|
||||||
Assert.AreEqual(100, beamBlockItem.Color.G);
|
|
||||||
Assert.AreEqual(5, beamBlockItem.Color.B);
|
|
||||||
Assert.IsFalse(beamBlockItem.BooleanValue);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
@ -1903,23 +1856,6 @@ namespace Filtration.Parser.Tests.Services
|
||||||
Assert.AreEqual(expectedResult, result);
|
Assert.AreEqual(expectedResult, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Ignore("Ignore until the new block type is fully implemented")]
|
|
||||||
[Test]
|
|
||||||
public void TranslateItemFilterBlockToString_DropIcon_ReturnsCorrectString()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var expectedResult = "Show" + Environment.NewLine +
|
|
||||||
" Icon Icon3";
|
|
||||||
|
|
||||||
_testUtility.TestBlock.BlockItems.Add(new IconBlockItem("Icon3"));
|
|
||||||
|
|
||||||
// Act
|
|
||||||
var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock);
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
Assert.AreEqual(expectedResult, result);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TranslateItemFilterBlockToString_Everything_ReturnsCorrectString()
|
public void TranslateItemFilterBlockToString_Everything_ReturnsCorrectString()
|
||||||
{
|
{
|
||||||
|
@ -1951,9 +1887,7 @@ namespace Filtration.Parser.Tests.Services
|
||||||
" SetBorderColor 255 1 254" + Environment.NewLine +
|
" SetBorderColor 255 1 254" + Environment.NewLine +
|
||||||
" SetFontSize 50" + Environment.NewLine +
|
" SetFontSize 50" + Environment.NewLine +
|
||||||
" PlayAlertSound 6 90" + Environment.NewLine +
|
" PlayAlertSound 6 90" + Environment.NewLine +
|
||||||
" DisableDropSound True";/* + Environment.NewLine +
|
" DisableDropSound True";
|
||||||
" Icon Icon4";
|
|
||||||
" BeamColor 120 130 140 False";*/
|
|
||||||
|
|
||||||
_testUtility.TestBlock.BlockItems.Add(new ActionBlockItem(BlockAction.Show));
|
_testUtility.TestBlock.BlockItems.Add(new ActionBlockItem(BlockAction.Show));
|
||||||
_testUtility.TestBlock.BlockItems.Add(new IdentifiedBlockItem(true));
|
_testUtility.TestBlock.BlockItems.Add(new IdentifiedBlockItem(true));
|
||||||
|
@ -1997,8 +1931,6 @@ namespace Filtration.Parser.Tests.Services
|
||||||
_testUtility.TestBlock.BlockItems.Add(new ShapedMapBlockItem(true));
|
_testUtility.TestBlock.BlockItems.Add(new ShapedMapBlockItem(true));
|
||||||
_testUtility.TestBlock.BlockItems.Add(new ElderMapBlockItem(true));
|
_testUtility.TestBlock.BlockItems.Add(new ElderMapBlockItem(true));
|
||||||
_testUtility.TestBlock.BlockItems.Add(new DisableDropSoundBlockItem(true));
|
_testUtility.TestBlock.BlockItems.Add(new DisableDropSoundBlockItem(true));
|
||||||
_testUtility.TestBlock.BlockItems.Add(new IconBlockItem("Icon4"));
|
|
||||||
_testUtility.TestBlock.BlockItems.Add(new BeamBlockItem(new Color { A = 255, R = 120, G = 130, B = 140 }, false));
|
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock);
|
var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock);
|
||||||
|
|
|
@ -310,36 +310,59 @@ namespace Filtration.Parser.Services
|
||||||
AddBooleanItemToBlockItems<DisableDropSoundBlockItem>(block, trimmedLine);
|
AddBooleanItemToBlockItems<DisableDropSoundBlockItem>(block, trimmedLine);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "Icon":
|
case "MinimapIcon":
|
||||||
{
|
{
|
||||||
// Only ever use the last Icon item encountered as multiples aren't valid.
|
// Only ever use the last Icon item encountered as multiples aren't valid.
|
||||||
RemoveExistingBlockItemsOfType<IconBlockItem>(block);
|
RemoveExistingBlockItemsOfType<MapIconBlockItem>(block);
|
||||||
|
|
||||||
var match = Regex.Match(trimmedLine, @"\S+\s+""(\S+)""");
|
// TODO: Get size, color, shape values programmatically
|
||||||
|
var match = Regex.Match(trimmedLine,
|
||||||
|
@"\S+\s+(0|1|2)\s+(Red|Green|Blue|Brown|White|Yellow)\s+(Circle|Diamond|Hexagon|Square|Star|Triangle)\s*([#]?)(.*)",
|
||||||
|
RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
if (match.Success)
|
if (match.Success)
|
||||||
{
|
{
|
||||||
var blockItemValue = new IconBlockItem
|
var blockItemValue = new MapIconBlockItem
|
||||||
{
|
{
|
||||||
Value = match.Groups[1].Value
|
Size = (IconSize)Int16.Parse(match.Groups[1].Value),
|
||||||
};
|
Color = EnumHelper.GetEnumValueFromDescription<IconColor>(match.Groups[2].Value),
|
||||||
|
Shape = EnumHelper.GetEnumValueFromDescription<IconShape>(match.Groups[3].Value)
|
||||||
|
};
|
||||||
|
|
||||||
|
if(match.Groups[4].Value == "#" && !string.IsNullOrWhiteSpace(match.Groups[5].Value))
|
||||||
|
{
|
||||||
|
ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.Icon, match.Groups[5].Value.Trim(),
|
||||||
|
blockItemValue.Size, blockItemValue.Color, blockItemValue.Shape);
|
||||||
|
blockItemValue.ThemeComponent = themeComponent;
|
||||||
|
}
|
||||||
block.BlockItems.Add(blockItemValue);
|
block.BlockItems.Add(blockItemValue);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "BeamColor":
|
case "PlayEffect":
|
||||||
{
|
{
|
||||||
// Only ever use the last BeamColor item encountered as multiples aren't valid.
|
// Only ever use the last BeamColor item encountered as multiples aren't valid.
|
||||||
RemoveExistingBlockItemsOfType<BeamBlockItem>(block);
|
RemoveExistingBlockItemsOfType<PlayEffectBlockItem>(block);
|
||||||
|
|
||||||
var result = Regex.Matches(trimmedLine, @"([\w\s]*)(True|False)[#]?(.*)", RegexOptions.IgnoreCase);
|
// TODO: Get colors programmatically
|
||||||
var color = GetColorFromString(result[0].Groups[1].Value);
|
var match = Regex.Match(trimmedLine, @"\S+\s+(Red|Green|Blue|Brown|White|Yellow)\s+(Temp)?\s*([#]?)(.*)", RegexOptions.IgnoreCase);
|
||||||
var beamBlockItem = new BeamBlockItem
|
|
||||||
|
if (match.Success)
|
||||||
{
|
{
|
||||||
Color = GetColorFromString(result[0].Groups[1].Value),
|
var blockItemValue = new PlayEffectBlockItem
|
||||||
BooleanValue = result[0].Groups[2].Value.Trim().ToLowerInvariant() == "true"
|
{
|
||||||
};
|
Color = EnumHelper.GetEnumValueFromDescription<EffectColor>(match.Groups[1].Value),
|
||||||
block.BlockItems.Add(beamBlockItem);
|
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);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "CustomAlertSound":
|
case "CustomAlertSound":
|
||||||
|
@ -367,6 +390,11 @@ namespace Filtration.Parser.Services
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case "MapTier":
|
||||||
|
{
|
||||||
|
AddNumericFilterPredicateItemToBlockItems<MapTierBlockItem>(block, trimmedLine);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -640,12 +668,6 @@ namespace Filtration.Parser.Services
|
||||||
// ReSharper disable once LoopCanBeConvertedToQuery
|
// ReSharper disable once LoopCanBeConvertedToQuery
|
||||||
foreach (var blockItem in block.BlockItems.Where(b => b.GetType() != typeof(ActionBlockItem)).OrderBy(b => b.SortOrder))
|
foreach (var blockItem in block.BlockItems.Where(b => b.GetType() != typeof(ActionBlockItem)).OrderBy(b => b.SortOrder))
|
||||||
{
|
{
|
||||||
// Do not save temporary blocks until the new features are fully implemented
|
|
||||||
if (blockItem is IconBlockItem || blockItem is BeamBlockItem)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (blockItem.OutputText != string.Empty)
|
if (blockItem.OutputText != string.Empty)
|
||||||
{
|
{
|
||||||
outputString += (!block.Enabled ? _disabledNewLine : _newLine) + blockItem.OutputText;
|
outputString += (!block.Enabled ? _disabledNewLine : _newLine) + blockItem.OutputText;
|
||||||
|
|
|
@ -109,6 +109,8 @@
|
||||||
<Compile Include="Services\ThemePersistenceService.cs" />
|
<Compile Include="Services\ThemePersistenceService.cs" />
|
||||||
<Compile Include="Services\ThemeService.cs" />
|
<Compile Include="Services\ThemeService.cs" />
|
||||||
<Compile Include="ViewModels\ColorThemeComponentViewModel.cs" />
|
<Compile Include="ViewModels\ColorThemeComponentViewModel.cs" />
|
||||||
|
<Compile Include="ViewModels\EffectColorThemeComponentViewModel.cs" />
|
||||||
|
<Compile Include="ViewModels\IconThemeComponentViewModel.cs" />
|
||||||
<Compile Include="ViewModels\StringThemeComponentViewModel.cs" />
|
<Compile Include="ViewModels\StringThemeComponentViewModel.cs" />
|
||||||
<Compile Include="ViewModels\StrIntThemeComponentViewModel.cs" />
|
<Compile Include="ViewModels\StrIntThemeComponentViewModel.cs" />
|
||||||
<Compile Include="ViewModels\IntegerThemeComponentViewModel.cs" />
|
<Compile Include="ViewModels\IntegerThemeComponentViewModel.cs" />
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
using Filtration.ObjectModel.Enums;
|
||||||
|
|
||||||
|
namespace Filtration.ThemeEditor.ViewModels
|
||||||
|
{
|
||||||
|
public class EffectColorThemeComponentViewModel : ThemeComponentViewModel
|
||||||
|
{
|
||||||
|
public EffectColor EffectColor { get; set; }
|
||||||
|
public bool Temporary { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
using Filtration.ObjectModel.Enums;
|
||||||
|
|
||||||
|
namespace Filtration.ThemeEditor.ViewModels
|
||||||
|
{
|
||||||
|
public class IconThemeComponentViewModel : ThemeComponentViewModel
|
||||||
|
{
|
||||||
|
public IconSize IconSize { get; set; }
|
||||||
|
public IconColor IconColor { get; set; }
|
||||||
|
public IconShape IconShape { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -211,6 +211,12 @@ namespace Filtration.ThemeEditor.ViewModels
|
||||||
case ThemeComponentType.CustomSound:
|
case ThemeComponentType.CustomSound:
|
||||||
Components.Add(new StringThemeComponent(themeComponentType, "Untitled Component", "placeholder.mp3"));
|
Components.Add(new StringThemeComponent(themeComponentType, "Untitled Component", "placeholder.mp3"));
|
||||||
break;
|
break;
|
||||||
|
case ThemeComponentType.Icon:
|
||||||
|
Components.Add(new IconThemeComponent(themeComponentType, "Untitled Component", IconSize.Largest, IconColor.Red, IconShape.Circle));
|
||||||
|
break;
|
||||||
|
case ThemeComponentType.Effect:
|
||||||
|
Components.Add(new EffectColorThemeComponent(themeComponentType, "Untitled Component", EffectColor.Red, false));
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,8 @@
|
||||||
xmlns:commonConverters="clr-namespace:Filtration.Common.Converters;assembly=Filtration.Common"
|
xmlns:commonConverters="clr-namespace:Filtration.Common.Converters;assembly=Filtration.Common"
|
||||||
xmlns:themeEditor="clr-namespace:Filtration.ObjectModel.ThemeEditor;assembly=Filtration.ObjectModel"
|
xmlns:themeEditor="clr-namespace:Filtration.ObjectModel.ThemeEditor;assembly=Filtration.ObjectModel"
|
||||||
xmlns:views="clr-namespace:Filtration.ThemeEditor.Views"
|
xmlns:views="clr-namespace:Filtration.ThemeEditor.Views"
|
||||||
xmlns:viewModels="clr-namespace:Filtration.ThemeEditor.ViewModels"
|
xmlns:extensions="clr-namespace:Filtration.Common.Extensions;assembly=Filtration.Common"
|
||||||
|
xmlns:enums="clr-namespace:Filtration.ObjectModel.Enums;assembly=Filtration.ObjectModel"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
d:DataContext="{d:DesignInstance Type=themeEditor:ThemeComponent}"
|
d:DataContext="{d:DesignInstance Type=themeEditor:ThemeComponent}"
|
||||||
d:DesignHeight="100" d:DesignWidth="200">
|
d:DesignHeight="100" d:DesignWidth="200">
|
||||||
|
@ -18,7 +19,7 @@
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="25" />
|
<RowDefinition Height="*" />
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<Grid.Resources>
|
<Grid.Resources>
|
||||||
<DataTemplate x:Key="EditableComponentNameTemplate">
|
<DataTemplate x:Key="EditableComponentNameTemplate">
|
||||||
|
@ -99,6 +100,38 @@
|
||||||
</Button>
|
</Button>
|
||||||
</Grid>
|
</Grid>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
|
<!--Icon Theme Template-->
|
||||||
|
<DataTemplate DataType="{x:Type themeEditor:IconThemeComponent}">
|
||||||
|
<StackPanel Orientation="Vertical" Margin="5,5,5,5">
|
||||||
|
<ComboBox ItemsSource="{Binding Source={extensions:Enumeration {x:Type enums:IconSize}}}" Style="{StaticResource MetroComboBox}"
|
||||||
|
DisplayMemberPath="Description"
|
||||||
|
SelectedValue="{Binding IconSize}"
|
||||||
|
SelectedValuePath="Value" />
|
||||||
|
<ComboBox ItemsSource="{Binding Source={extensions:Enumeration {x:Type enums:IconColor}}}" Style="{StaticResource MetroComboBox}"
|
||||||
|
DisplayMemberPath="Description"
|
||||||
|
SelectedValue="{Binding IconColor}"
|
||||||
|
SelectedValuePath="Value" />
|
||||||
|
<ComboBox ItemsSource="{Binding Source={extensions:Enumeration {x:Type enums:IconShape}}}" Style="{StaticResource MetroComboBox}"
|
||||||
|
DisplayMemberPath="Description"
|
||||||
|
SelectedValue="{Binding IconShape}"
|
||||||
|
SelectedValuePath="Value" />
|
||||||
|
</StackPanel>
|
||||||
|
</DataTemplate>
|
||||||
|
|
||||||
|
<!--Effect Color Theme Template-->
|
||||||
|
<DataTemplate DataType="{x:Type themeEditor:EffectColorThemeComponent}">
|
||||||
|
<StackPanel>
|
||||||
|
<WrapPanel VerticalAlignment="Center" Margin="5,5,5,5">
|
||||||
|
<RadioButton IsChecked="{Binding Temporary, Converter={StaticResource BoolInverterConverter}}" Margin="0,0,10,0">Permanent</RadioButton>
|
||||||
|
<RadioButton IsChecked="{Binding Temporary}" >Temporary</RadioButton>
|
||||||
|
</WrapPanel>
|
||||||
|
<ComboBox ItemsSource="{Binding Source={extensions:Enumeration {x:Type enums:EffectColor}}}" Style="{StaticResource MetroComboBox}"
|
||||||
|
DisplayMemberPath="Description"
|
||||||
|
SelectedValue="{Binding EffectColor}"
|
||||||
|
SelectedValuePath="Value" />
|
||||||
|
</StackPanel>
|
||||||
|
</DataTemplate>
|
||||||
</ContentControl.Resources>
|
</ContentControl.Resources>
|
||||||
</ContentControl>
|
</ContentControl>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
|
@ -50,6 +50,8 @@ namespace Filtration
|
||||||
cfg.CreateMap<IntegerThemeComponent, IntegerThemeComponentViewModel>().ReverseMap();
|
cfg.CreateMap<IntegerThemeComponent, IntegerThemeComponentViewModel>().ReverseMap();
|
||||||
cfg.CreateMap<StrIntThemeComponent, StrIntThemeComponentViewModel>().ReverseMap();
|
cfg.CreateMap<StrIntThemeComponent, StrIntThemeComponentViewModel>().ReverseMap();
|
||||||
cfg.CreateMap<StringThemeComponent, StringThemeComponentViewModel>().ReverseMap();
|
cfg.CreateMap<StringThemeComponent, StringThemeComponentViewModel>().ReverseMap();
|
||||||
|
cfg.CreateMap<IconThemeComponent, IconThemeComponentViewModel>().ReverseMap();
|
||||||
|
cfg.CreateMap<EffectColorThemeComponent, EffectColorThemeComponentViewModel>().ReverseMap();
|
||||||
cfg.CreateMap<IThemeEditorViewModel, Theme>();
|
cfg.CreateMap<IThemeEditorViewModel, Theme>();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -45,6 +45,14 @@ namespace Filtration.Converters
|
||||||
{
|
{
|
||||||
themeComponentType = ThemeComponentType.CustomSound;
|
themeComponentType = ThemeComponentType.CustomSound;
|
||||||
}
|
}
|
||||||
|
else if (blockItem.GetType() == typeof(MapIconBlockItem))
|
||||||
|
{
|
||||||
|
themeComponentType = ThemeComponentType.Icon;
|
||||||
|
}
|
||||||
|
else if (blockItem.GetType() == typeof(PlayEffectBlockItem))
|
||||||
|
{
|
||||||
|
themeComponentType = ThemeComponentType.Effect;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -1,28 +1,29 @@
|
||||||
using System;
|
using Filtration.ObjectModel.Enums;
|
||||||
|
using System;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Windows.Data;
|
using System.Windows.Data;
|
||||||
|
|
||||||
namespace Filtration.Converters
|
namespace Filtration.Converters
|
||||||
{
|
{
|
||||||
internal class DropIconConverter : IValueConverter
|
internal class IconShapeToSourceConverter : IValueConverter
|
||||||
{
|
{
|
||||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
{
|
{
|
||||||
var iconString = (string)value;
|
var iconShape = (IconShape)(int)value;
|
||||||
switch(iconString)
|
switch (iconShape)
|
||||||
{
|
{
|
||||||
case "Icon1":
|
case IconShape.Circle:
|
||||||
return "/Filtration;component/Resources/DropIcons/Icon1.png";
|
return "/Filtration;component/Resources/DropIcons/Circle.png";
|
||||||
case "Icon2":
|
case IconShape.Diamond:
|
||||||
return "/Filtration;component/Resources/DropIcons/Icon2.png";
|
return "/Filtration;component/Resources/DropIcons/Diamond.png";
|
||||||
case "Icon3":
|
case IconShape.Hexagon:
|
||||||
return "/Filtration;component/Resources/DropIcons/Icon3.png";
|
return "/Filtration;component/Resources/DropIcons/Hexagon.png";
|
||||||
case "Icon4":
|
case IconShape.Square:
|
||||||
return "/Filtration;component/Resources/DropIcons/Icon4.png";
|
return "/Filtration;component/Resources/DropIcons/Square.png";
|
||||||
case "Icon5":
|
case IconShape.Star:
|
||||||
return "/Filtration;component/Resources/DropIcons/Icon5.png";
|
return "/Filtration;component/Resources/DropIcons/Star.png";
|
||||||
case "Icon6":
|
case IconShape.Triangle:
|
||||||
return "/Filtration;component/Resources/DropIcons/Icon6.png";
|
return "/Filtration;component/Resources/DropIcons/Triangle.png";
|
||||||
}
|
}
|
||||||
|
|
||||||
return "/Filtration;component/Resources/DropIcons/NoIcon.png";
|
return "/Filtration;component/Resources/DropIcons/NoIcon.png";
|
|
@ -0,0 +1,33 @@
|
||||||
|
using Filtration.ObjectModel.Enums;
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
var size = (int)(values[0]);
|
||||||
|
var color = (int)(values[1]);
|
||||||
|
|
||||||
|
if (size < 0 || color < 0)
|
||||||
|
return new Rect(0, 0, 0, 0);
|
||||||
|
|
||||||
|
Rect cropArea = new Rect();
|
||||||
|
cropArea.Width = 64;
|
||||||
|
cropArea.Height = 64;
|
||||||
|
cropArea.X = 0 + size * 64;
|
||||||
|
cropArea.Y = 0 + color * 64;
|
||||||
|
|
||||||
|
return cropArea;
|
||||||
|
}
|
||||||
|
|
||||||
|
public object[] ConvertBack(object value, Type[] targetType, object parameter, CultureInfo culture)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -167,12 +167,11 @@
|
||||||
<Compile Include="Converters\BooleanToBlockActionInverseConverter.cs" />
|
<Compile Include="Converters\BooleanToBlockActionInverseConverter.cs" />
|
||||||
<Compile Include="Converters\BooleanToBlockActionConverter.cs" />
|
<Compile Include="Converters\BooleanToBlockActionConverter.cs" />
|
||||||
<Compile Include="Converters\BlockItemToRemoveEnabledVisibilityConverter.cs" />
|
<Compile Include="Converters\BlockItemToRemoveEnabledVisibilityConverter.cs" />
|
||||||
<Compile Include="Converters\DropIconConverter.cs" />
|
<Compile Include="Converters\SizeColorToRectConverter.cs" />
|
||||||
<Compile Include="Converters\HashSignRemovalConverter.cs" />
|
<Compile Include="Converters\HashSignRemovalConverter.cs" />
|
||||||
|
<Compile Include="Converters\IconShapeToSourceConverter.cs" />
|
||||||
<Compile Include="Converters\ItemRarityConverter.cs" />
|
<Compile Include="Converters\ItemRarityConverter.cs" />
|
||||||
<Compile Include="Converters\TreeViewMarginConverter.cs" />
|
<Compile Include="Converters\TreeViewMarginConverter.cs" />
|
||||||
<Compile Include="Extensions\EnumerationExtension.cs" />
|
|
||||||
<Compile Include="Extensions\HyperlinkExtensions.cs" />
|
|
||||||
<Compile Include="Models\UpdateData.cs" />
|
<Compile Include="Models\UpdateData.cs" />
|
||||||
<Compile Include="Properties\Annotations.cs" />
|
<Compile Include="Properties\Annotations.cs" />
|
||||||
<Compile Include="Repositories\ItemFilterScriptRepository.cs" />
|
<Compile Include="Repositories\ItemFilterScriptRepository.cs" />
|
||||||
|
@ -546,13 +545,13 @@
|
||||||
</None>
|
</None>
|
||||||
<Resource Include="Resources\Icons\redo_icon.png" />
|
<Resource Include="Resources\Icons\redo_icon.png" />
|
||||||
<Resource Include="Resources\Icons\undo_icon.png" />
|
<Resource Include="Resources\Icons\undo_icon.png" />
|
||||||
<Resource Include="Resources\DropIcons\Icon1.png" />
|
|
||||||
<Resource Include="Resources\DropIcons\Icon2.png" />
|
|
||||||
<Resource Include="Resources\DropIcons\Icon3.png" />
|
|
||||||
<Resource Include="Resources\DropIcons\Icon4.png" />
|
|
||||||
<Resource Include="Resources\DropIcons\Icon5.png" />
|
|
||||||
<Resource Include="Resources\DropIcons\Icon6.png" />
|
|
||||||
<Resource Include="Resources\DropIcons\NoIcon.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\ItemBaseTypes.txt" />
|
||||||
<Content Include="Resources\ItemClasses.txt" />
|
<Content Include="Resources\ItemClasses.txt" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
After Width: | Height: | Size: 100 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 99 KiB |
Before Width: | Height: | Size: 9.2 KiB |
Before Width: | Height: | Size: 7.8 KiB |
Before Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 6.0 KiB |
Before Width: | Height: | Size: 8.7 KiB |
After Width: | Height: | Size: 85 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 75 KiB |
|
@ -1,5 +1,6 @@
|
||||||
A Mother's Parting Gift
|
A Mother's Parting Gift
|
||||||
Abandoned Wealth
|
Abandoned Wealth
|
||||||
|
Aberrant Fossil
|
||||||
Abyssal Axe
|
Abyssal Axe
|
||||||
Abyssal Cry
|
Abyssal Cry
|
||||||
Abyssal Sceptre
|
Abyssal Sceptre
|
||||||
|
@ -10,6 +11,7 @@ Added Cold Damage Support
|
||||||
Added Fire Damage Support
|
Added Fire Damage Support
|
||||||
Added Lightning Damage Support
|
Added Lightning Damage Support
|
||||||
Additional Accuracy Support
|
Additional Accuracy Support
|
||||||
|
Aetheric Fossil
|
||||||
Agate Amulet
|
Agate Amulet
|
||||||
Albino Rhoa Feather
|
Albino Rhoa Feather
|
||||||
Alchemy Shard
|
Alchemy Shard
|
||||||
|
@ -111,6 +113,7 @@ Battle Sword
|
||||||
Bazaar Map
|
Bazaar Map
|
||||||
Beach Map
|
Beach Map
|
||||||
Bear Trap
|
Bear Trap
|
||||||
|
Beauty Through Death
|
||||||
Behemoth Mace
|
Behemoth Mace
|
||||||
Belfry Map
|
Belfry Map
|
||||||
Bestel's Manuscript
|
Bestel's Manuscript
|
||||||
|
@ -148,6 +151,7 @@ Blood Raiment
|
||||||
Blood Sceptre
|
Blood Sceptre
|
||||||
Bloodlines Leaguestone
|
Bloodlines Leaguestone
|
||||||
Bloodlust Support
|
Bloodlust Support
|
||||||
|
Bloodstained Fossil
|
||||||
Blue Pearl Amulet
|
Blue Pearl Amulet
|
||||||
Blunt Arrow Quiver
|
Blunt Arrow Quiver
|
||||||
Boarding Axe
|
Boarding Axe
|
||||||
|
@ -161,9 +165,11 @@ Bone Helmet
|
||||||
Bone Offering
|
Bone Offering
|
||||||
Bone Spirit Shield
|
Bone Spirit Shield
|
||||||
Bonespire Talisman
|
Bonespire Talisman
|
||||||
|
Boon of the First Ones
|
||||||
Boot Blade
|
Boot Blade
|
||||||
Boot Knife
|
Boot Knife
|
||||||
Bottled Storm
|
Bottled Storm
|
||||||
|
Bound Fossil
|
||||||
Boundless Realms
|
Boundless Realms
|
||||||
Bowyer's Dream
|
Bowyer's Dream
|
||||||
Branded Kite Shield
|
Branded Kite Shield
|
||||||
|
@ -293,6 +299,7 @@ Conjurer Boots
|
||||||
Conjurer Gloves
|
Conjurer Gloves
|
||||||
Conjurer's Vestment
|
Conjurer's Vestment
|
||||||
Conquest Chainmail
|
Conquest Chainmail
|
||||||
|
Consecrated Path
|
||||||
Conservatory Map
|
Conservatory Map
|
||||||
Contagion
|
Contagion
|
||||||
Controlled Destruction Support
|
Controlled Destruction Support
|
||||||
|
@ -309,6 +316,7 @@ Core Map
|
||||||
Coronal Leather
|
Coronal Leather
|
||||||
Coronal Maul
|
Coronal Maul
|
||||||
Corroded Blade
|
Corroded Blade
|
||||||
|
Corroded Fossil
|
||||||
Corroded Tower Shield
|
Corroded Tower Shield
|
||||||
Corrugated Buckler
|
Corrugated Buckler
|
||||||
Corsair Sword
|
Corsair Sword
|
||||||
|
@ -388,6 +396,7 @@ Defiled Cathedral Map
|
||||||
Deicide Mask
|
Deicide Mask
|
||||||
Demon Dagger
|
Demon Dagger
|
||||||
Demon's Horn
|
Demon's Horn
|
||||||
|
Dense Fossil
|
||||||
Desecrate
|
Desecrate
|
||||||
Desert Brigandine
|
Desert Brigandine
|
||||||
Desert Map
|
Desert Map
|
||||||
|
@ -463,6 +472,8 @@ Emperor of Purity
|
||||||
Emperor's Luck
|
Emperor's Luck
|
||||||
Empower Support
|
Empower Support
|
||||||
Enameled Buckler
|
Enameled Buckler
|
||||||
|
Enchanted Fossil
|
||||||
|
Encrusted Fossil
|
||||||
Endurance Charge on Melee Stun Support
|
Endurance Charge on Melee Stun Support
|
||||||
Enduring Cry
|
Enduring Cry
|
||||||
Enfeeble
|
Enfeeble
|
||||||
|
@ -508,6 +519,7 @@ Ezomyte Dagger
|
||||||
Ezomyte Spiked Shield
|
Ezomyte Spiked Shield
|
||||||
Ezomyte Staff
|
Ezomyte Staff
|
||||||
Ezomyte Tower Shield
|
Ezomyte Tower Shield
|
||||||
|
Faceted Fossil
|
||||||
Factory Map
|
Factory Map
|
||||||
Fancy Foil
|
Fancy Foil
|
||||||
Fangjaw Talisman
|
Fangjaw Talisman
|
||||||
|
@ -552,6 +564,7 @@ Fork Support
|
||||||
Fortify Support
|
Fortify Support
|
||||||
Fossilised Spirit Shield
|
Fossilised Spirit Shield
|
||||||
Foul Staff
|
Foul Staff
|
||||||
|
Fractured Fossil
|
||||||
Fragment of the Chimera
|
Fragment of the Chimera
|
||||||
Fragment of the Hydra
|
Fragment of the Hydra
|
||||||
Fragment of the Minotaur
|
Fragment of the Minotaur
|
||||||
|
@ -561,6 +574,7 @@ Freezing Pulse
|
||||||
Frenzy
|
Frenzy
|
||||||
Fright Claw
|
Fright Claw
|
||||||
Fright Maul
|
Fright Maul
|
||||||
|
Frigid Fossil
|
||||||
Frontier Leather
|
Frontier Leather
|
||||||
Frost Blades
|
Frost Blades
|
||||||
Frost Bomb
|
Frost Bomb
|
||||||
|
@ -590,6 +604,7 @@ Giant Mana Flask
|
||||||
Gift of the Gemling Queen
|
Gift of the Gemling Queen
|
||||||
Gilded Axe
|
Gilded Axe
|
||||||
Gilded Buckler
|
Gilded Buckler
|
||||||
|
Gilded Fossil
|
||||||
Gilded Sallet
|
Gilded Sallet
|
||||||
Girded Tower Shield
|
Girded Tower Shield
|
||||||
Glacial Cascade
|
Glacial Cascade
|
||||||
|
@ -602,6 +617,7 @@ Glassblower's Bauble
|
||||||
Glimmer of Hope
|
Glimmer of Hope
|
||||||
Glorious Leather
|
Glorious Leather
|
||||||
Glorious Plate
|
Glorious Plate
|
||||||
|
Glyphic Fossil
|
||||||
Gnarled Branch
|
Gnarled Branch
|
||||||
Goat's Horn
|
Goat's Horn
|
||||||
Goathide Boots
|
Goathide Boots
|
||||||
|
@ -675,8 +691,10 @@ Heavy Quiver
|
||||||
Heavy Strike
|
Heavy Strike
|
||||||
Hellion's Paw
|
Hellion's Paw
|
||||||
Her Mask
|
Her Mask
|
||||||
|
Herald of Agony
|
||||||
Herald of Ash
|
Herald of Ash
|
||||||
Herald of Ice
|
Herald of Ice
|
||||||
|
Herald of Purity
|
||||||
Herald of Thunder
|
Herald of Thunder
|
||||||
Heterochromia
|
Heterochromia
|
||||||
Hexclaw Talisman
|
Hexclaw Talisman
|
||||||
|
@ -684,6 +702,7 @@ Highborn Bow
|
||||||
Highborn Staff
|
Highborn Staff
|
||||||
Highland Blade
|
Highland Blade
|
||||||
Hinekora's Hair
|
Hinekora's Hair
|
||||||
|
Hollow Fossil
|
||||||
Holy Chainmail
|
Holy Chainmail
|
||||||
Hook Sword
|
Hook Sword
|
||||||
Hope
|
Hope
|
||||||
|
@ -759,6 +778,7 @@ Jade Chopper
|
||||||
Jade Flask
|
Jade Flask
|
||||||
Jade Hatchet
|
Jade Hatchet
|
||||||
Jagged Foil
|
Jagged Foil
|
||||||
|
Jagged Fossil
|
||||||
Jagged Maul
|
Jagged Maul
|
||||||
Jasper Axe
|
Jasper Axe
|
||||||
Jasper Chopper
|
Jasper Chopper
|
||||||
|
@ -843,6 +863,7 @@ Lordly Plate
|
||||||
Loricated Ringmail
|
Loricated Ringmail
|
||||||
Lost Worlds
|
Lost Worlds
|
||||||
Loyalty
|
Loyalty
|
||||||
|
Lucent Fossil
|
||||||
Lucky Connections
|
Lucky Connections
|
||||||
Lucky Deck
|
Lucky Deck
|
||||||
Lunaris Circlet
|
Lunaris Circlet
|
||||||
|
@ -884,6 +905,7 @@ Merciless Armament
|
||||||
Mesa Map
|
Mesa Map
|
||||||
Mesh Boots
|
Mesh Boots
|
||||||
Mesh Gloves
|
Mesh Gloves
|
||||||
|
Metallic Fossil
|
||||||
Miasmeter
|
Miasmeter
|
||||||
Midnight Blade
|
Midnight Blade
|
||||||
Might is Right
|
Might is Right
|
||||||
|
@ -995,13 +1017,13 @@ Penetrating Arrow Quiver
|
||||||
Peninsula Map
|
Peninsula Map
|
||||||
Perandus Coin
|
Perandus Coin
|
||||||
Perandus Leaguestone
|
Perandus Leaguestone
|
||||||
|
Perfect Fossil
|
||||||
Perfection
|
Perfection
|
||||||
Pernarch
|
Pernarch
|
||||||
Petrified Club
|
Petrified Club
|
||||||
Phantasmagoria Map
|
Phantasmagoria Map
|
||||||
Phantom Mace
|
Phantom Mace
|
||||||
Phase Run
|
Phase Run
|
||||||
Physical Projectile Attack Damage Support
|
|
||||||
Physical to Lightning Support
|
Physical to Lightning Support
|
||||||
Pier Map
|
Pier Map
|
||||||
Pierce Support
|
Pierce Support
|
||||||
|
@ -1031,19 +1053,29 @@ Port Map
|
||||||
Portal
|
Portal
|
||||||
Portal Scroll
|
Portal Scroll
|
||||||
Portal Shredder
|
Portal Shredder
|
||||||
|
Potent Alchemical Resonator
|
||||||
|
Potent Chaotic Resonator
|
||||||
Power Charge On Critical Support
|
Power Charge On Critical Support
|
||||||
Power Siphon
|
Power Siphon
|
||||||
|
Powerful Alchemical Resonator
|
||||||
|
Powerful Chaotic Resonator
|
||||||
Praetor Crown
|
Praetor Crown
|
||||||
Precinct Map
|
Precinct Map
|
||||||
Prehistoric Claw
|
Prehistoric Claw
|
||||||
Pride Before the Fall
|
Pride Before the Fall
|
||||||
Primal Skull Talisman
|
Primal Skull Talisman
|
||||||
|
Prime Alchemical Resonator
|
||||||
|
Prime Chaotic Resonator
|
||||||
Primeval Rapier
|
Primeval Rapier
|
||||||
|
Primitive Alchemical Resonator
|
||||||
|
Primitive Chaotic Resonator
|
||||||
Primitive Staff
|
Primitive Staff
|
||||||
Primordial Pool Map
|
Primordial Pool Map
|
||||||
Primordial Staff
|
Primordial Staff
|
||||||
|
Prismatic Fossil
|
||||||
Prismatic Jewel
|
Prismatic Jewel
|
||||||
Prismatic Ring
|
Prismatic Ring
|
||||||
|
Pristine Fossil
|
||||||
Profane Wand
|
Profane Wand
|
||||||
Projectile Weakness
|
Projectile Weakness
|
||||||
Promenade Map
|
Promenade Map
|
||||||
|
@ -1157,6 +1189,7 @@ Sambar Sceptre
|
||||||
Samite Gloves
|
Samite Gloves
|
||||||
Samite Helmet
|
Samite Helmet
|
||||||
Samite Slippers
|
Samite Slippers
|
||||||
|
Sanctified Fossil
|
||||||
Sanctified Life Flask
|
Sanctified Life Flask
|
||||||
Sanctified Mana Flask
|
Sanctified Mana Flask
|
||||||
Sand of Eternity
|
Sand of Eternity
|
||||||
|
@ -1173,7 +1206,9 @@ Scarlet Round Shield
|
||||||
Scholar Boots
|
Scholar Boots
|
||||||
Scholar of the Seas
|
Scholar of the Seas
|
||||||
Scholar's Robe
|
Scholar's Robe
|
||||||
|
Scorched Fossil
|
||||||
Scorching Ray
|
Scorching Ray
|
||||||
|
Scourge Arrow
|
||||||
Screaming Essence
|
Screaming Essence
|
||||||
Screaming Essence of Anger
|
Screaming Essence of Anger
|
||||||
Screaming Essence of Anguish
|
Screaming Essence of Anguish
|
||||||
|
@ -1212,6 +1247,7 @@ Serpentscale Boots
|
||||||
Serpentscale Gauntlets
|
Serpentscale Gauntlets
|
||||||
Serrated Arrow Quiver
|
Serrated Arrow Quiver
|
||||||
Serrated Foil
|
Serrated Foil
|
||||||
|
Serrated Fossil
|
||||||
Shabby Jerkin
|
Shabby Jerkin
|
||||||
Shackled Boots
|
Shackled Boots
|
||||||
Shadow Axe
|
Shadow Axe
|
||||||
|
@ -1221,7 +1257,6 @@ Shagreen Gloves
|
||||||
Shagreen Tower Shield
|
Shagreen Tower Shield
|
||||||
Shaper's Orb
|
Shaper's Orb
|
||||||
Shaper's Orb (Tier 1)
|
Shaper's Orb (Tier 1)
|
||||||
Shaper's Orb (Tier 10)
|
|
||||||
Shaper's Orb (Tier 2)
|
Shaper's Orb (Tier 2)
|
||||||
Shaper's Orb (Tier 3)
|
Shaper's Orb (Tier 3)
|
||||||
Shaper's Orb (Tier 4)
|
Shaper's Orb (Tier 4)
|
||||||
|
@ -1230,6 +1265,7 @@ Shaper's Orb (Tier 6)
|
||||||
Shaper's Orb (Tier 7)
|
Shaper's Orb (Tier 7)
|
||||||
Shaper's Orb (Tier 8)
|
Shaper's Orb (Tier 8)
|
||||||
Shaper's Orb (Tier 9)
|
Shaper's Orb (Tier 9)
|
||||||
|
Shaper's Orb (Tier 10)
|
||||||
Shard of Fate
|
Shard of Fate
|
||||||
Sharkskin Boots
|
Sharkskin Boots
|
||||||
Sharkskin Gloves
|
Sharkskin Gloves
|
||||||
|
@ -1265,6 +1301,7 @@ Shrieking Essence of Woe
|
||||||
Shrieking Essence of Wrath
|
Shrieking Essence of Wrath
|
||||||
Shrieking Essence of Zeal
|
Shrieking Essence of Zeal
|
||||||
Shrine Map
|
Shrine Map
|
||||||
|
Shuddering Fossil
|
||||||
Siege Axe
|
Siege Axe
|
||||||
Siege Ballista
|
Siege Ballista
|
||||||
Siege Helmet
|
Siege Helmet
|
||||||
|
@ -1299,6 +1336,7 @@ Small Hybrid Flask
|
||||||
Small Life Flask
|
Small Life Flask
|
||||||
Small Mana Flask
|
Small Mana Flask
|
||||||
Smallsword
|
Smallsword
|
||||||
|
Smite
|
||||||
Smoke Mine
|
Smoke Mine
|
||||||
Sniper Bow
|
Sniper Bow
|
||||||
Solar Maul
|
Solar Maul
|
||||||
|
@ -1385,6 +1423,7 @@ Sulphur Vents Map
|
||||||
Summit Map
|
Summit Map
|
||||||
Summon Chaos Golem
|
Summon Chaos Golem
|
||||||
Summon Flame Golem
|
Summon Flame Golem
|
||||||
|
Summon Holy Relic
|
||||||
Summon Ice Golem
|
Summon Ice Golem
|
||||||
Summon Lightning Golem
|
Summon Lightning Golem
|
||||||
Summon Phantasm on Kill Support
|
Summon Phantasm on Kill Support
|
||||||
|
@ -1402,6 +1441,7 @@ Sweep
|
||||||
Swift Affliction Support
|
Swift Affliction Support
|
||||||
Talisman Leaguestone
|
Talisman Leaguestone
|
||||||
Talon Axe
|
Talon Axe
|
||||||
|
Tangled Fossil
|
||||||
Tarnished Spirit Shield
|
Tarnished Spirit Shield
|
||||||
Teak Round Shield
|
Teak Round Shield
|
||||||
Tectonic Slam
|
Tectonic Slam
|
||||||
|
@ -1431,6 +1471,7 @@ The Blazing Fire
|
||||||
The Body
|
The Body
|
||||||
The Breach
|
The Breach
|
||||||
The Brittle Emperor
|
The Brittle Emperor
|
||||||
|
The Cacophony
|
||||||
The Calling
|
The Calling
|
||||||
The Carrion Crow
|
The Carrion Crow
|
||||||
The Cartographer
|
The Cartographer
|
||||||
|
@ -1456,6 +1497,7 @@ The Dreamer
|
||||||
The Dreamland
|
The Dreamland
|
||||||
The Drunken Aristocrat
|
The Drunken Aristocrat
|
||||||
The Encroaching Darkness
|
The Encroaching Darkness
|
||||||
|
The Endless Darkness
|
||||||
The Endurance
|
The Endurance
|
||||||
The Enlightened
|
The Enlightened
|
||||||
The Ethereal
|
The Ethereal
|
||||||
|
@ -1483,6 +1525,7 @@ The Hoarder
|
||||||
The Hunger
|
The Hunger
|
||||||
The Immortal
|
The Immortal
|
||||||
The Incantation
|
The Incantation
|
||||||
|
The Innocent
|
||||||
The Inoculated
|
The Inoculated
|
||||||
The Insatiable
|
The Insatiable
|
||||||
The Inventor
|
The Inventor
|
||||||
|
@ -1512,6 +1555,7 @@ The Penitent
|
||||||
The Poet
|
The Poet
|
||||||
The Polymath
|
The Polymath
|
||||||
The Porcupine
|
The Porcupine
|
||||||
|
The Price of Protection
|
||||||
The Professor
|
The Professor
|
||||||
The Puzzle
|
The Puzzle
|
||||||
The Queen
|
The Queen
|
||||||
|
@ -1548,6 +1592,7 @@ The Throne
|
||||||
The Tower
|
The Tower
|
||||||
The Traitor
|
The Traitor
|
||||||
The Trial
|
The Trial
|
||||||
|
The Twilight Moon
|
||||||
The Twins
|
The Twins
|
||||||
The Tyrant
|
The Tyrant
|
||||||
The Undaunted
|
The Undaunted
|
||||||
|
@ -1562,6 +1607,7 @@ The Warden
|
||||||
The Warlord
|
The Warlord
|
||||||
The Watcher
|
The Watcher
|
||||||
The Web
|
The Web
|
||||||
|
The Wilted Rose
|
||||||
The Wind
|
The Wind
|
||||||
The Witch
|
The Witch
|
||||||
The Wolf
|
The Wolf
|
||||||
|
@ -1589,6 +1635,7 @@ Tiger's Paw
|
||||||
Timber Axe
|
Timber Axe
|
||||||
Time-Lost Relic
|
Time-Lost Relic
|
||||||
Timeworn Claw
|
Timeworn Claw
|
||||||
|
Timeworn Reliquary Key
|
||||||
Titan Gauntlets
|
Titan Gauntlets
|
||||||
Titan Greaves
|
Titan Greaves
|
||||||
Titanium Spirit Shield
|
Titanium Spirit Shield
|
||||||
|
@ -1604,6 +1651,7 @@ Torture Chamber Map
|
||||||
Totemic Maul
|
Totemic Maul
|
||||||
Tower Key
|
Tower Key
|
||||||
Tower Map
|
Tower Map
|
||||||
|
Toxic Rain
|
||||||
Toxic Sewer Map
|
Toxic Sewer Map
|
||||||
Tranquillity
|
Tranquillity
|
||||||
Transmutation Shard
|
Transmutation Shard
|
||||||
|
@ -1644,6 +1692,7 @@ Unset Ring
|
||||||
Unshaping Orb
|
Unshaping Orb
|
||||||
Ursine Pelt
|
Ursine Pelt
|
||||||
Uul-Netol's Breachstone
|
Uul-Netol's Breachstone
|
||||||
|
Vaal Ancestral Warchief
|
||||||
Vaal Arc
|
Vaal Arc
|
||||||
Vaal Axe
|
Vaal Axe
|
||||||
Vaal Blade
|
Vaal Blade
|
||||||
|
@ -1713,6 +1762,7 @@ Vial of Summoning
|
||||||
Vial of the Ghost
|
Vial of the Ghost
|
||||||
Vial of the Ritual
|
Vial of the Ritual
|
||||||
Vial of Transcendence
|
Vial of Transcendence
|
||||||
|
Vicious Projectiles Support
|
||||||
Vigilant Strike
|
Vigilant Strike
|
||||||
Vile Staff
|
Vile Staff
|
||||||
Vile Toxins Support
|
Vile Toxins Support
|
||||||
|
@ -1790,6 +1840,7 @@ Wild Leather
|
||||||
Wild Strike
|
Wild Strike
|
||||||
Wings of Vastiri
|
Wings of Vastiri
|
||||||
Wither
|
Wither
|
||||||
|
Withering Touch Support
|
||||||
Wolf Pelt
|
Wolf Pelt
|
||||||
Woodful Staff
|
Woodful Staff
|
||||||
Woodsplitter
|
Woodsplitter
|
||||||
|
|
|
@ -9,6 +9,7 @@ Bows
|
||||||
Claws
|
Claws
|
||||||
Currency
|
Currency
|
||||||
Daggers
|
Daggers
|
||||||
|
Delve Stackable Currency
|
||||||
Divination Card
|
Divination Card
|
||||||
Fishing Rods
|
Fishing Rods
|
||||||
Flasks
|
Flasks
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
xmlns:commonConverters="clr-namespace:Filtration.Common.Converters;assembly=Filtration.Common"
|
xmlns:commonConverters="clr-namespace:Filtration.Common.Converters;assembly=Filtration.Common"
|
||||||
xmlns:blockItemBaseTypes="clr-namespace:Filtration.ObjectModel.BlockItemBaseTypes;assembly=Filtration.ObjectModel"
|
xmlns:blockItemBaseTypes="clr-namespace:Filtration.ObjectModel.BlockItemBaseTypes;assembly=Filtration.ObjectModel"
|
||||||
xmlns:blockItemTypes="clr-namespace:Filtration.ObjectModel.BlockItemTypes;assembly=Filtration.ObjectModel"
|
xmlns:blockItemTypes="clr-namespace:Filtration.ObjectModel.BlockItemTypes;assembly=Filtration.ObjectModel"
|
||||||
xmlns:extensions="clr-namespace:Filtration.Extensions"
|
xmlns:extensions="clr-namespace:Filtration.Common.Extensions;assembly=Filtration.Common"
|
||||||
xmlns:enums="clr-namespace:Filtration.ObjectModel.Enums;assembly=Filtration.ObjectModel"
|
xmlns:enums="clr-namespace:Filtration.ObjectModel.Enums;assembly=Filtration.ObjectModel"
|
||||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||||
xmlns:views="clr-namespace:Filtration.Views"
|
xmlns:views="clr-namespace:Filtration.Views"
|
||||||
|
@ -86,14 +86,25 @@
|
||||||
<userControls:EditableListBoxControl Margin="5,5,5,5" ItemsSource="{Binding Items}" />
|
<userControls:EditableListBoxControl Margin="5,5,5,5" ItemsSource="{Binding Items}" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
<!-- Beam Block Template -->
|
<!-- Play Effect Block Template -->
|
||||||
<DataTemplate DataType="{x:Type blockItemTypes:BeamBlockItem}">
|
<DataTemplate DataType="{x:Type blockItemTypes:PlayEffectBlockItem}">
|
||||||
<StackPanel>
|
<StackPanel>
|
||||||
<WrapPanel VerticalAlignment="Center" Margin="5,5,5,5">
|
<WrapPanel VerticalAlignment="Center" Margin="5,5,5,5">
|
||||||
<RadioButton IsChecked="{Binding BooleanValue}" Margin="0,0,10,0">Permanent</RadioButton>
|
<RadioButton IsChecked="{Binding Temporary, Converter={StaticResource BoolInverterConverter}}" Margin="0,0,10,0">Permanent</RadioButton>
|
||||||
<RadioButton IsChecked="{Binding BooleanValue, Converter={StaticResource BoolInverterConverter}}" >Temporary</RadioButton>
|
<RadioButton IsChecked="{Binding Temporary}" >Temporary</RadioButton>
|
||||||
</WrapPanel>
|
</WrapPanel>
|
||||||
<xctk:ColorPicker SelectedColor="{Binding Color}" AvailableColors="{Binding ElementName=BlockItemContentControl, Path=DataContext.AvailableColors }" ShowAvailableColors="True" AvailableColorsHeader="Path of Exile Colors"/>
|
<ComboBox ItemsSource="{Binding Source={extensions:Enumeration {x:Type enums:EffectColor}}}" Style="{StaticResource MetroComboBox}"
|
||||||
|
DisplayMemberPath="Description"
|
||||||
|
SelectedValue="{Binding Color}"
|
||||||
|
SelectedValuePath="Value" />
|
||||||
|
<userControls:ThemeComponentSelectionControl ThemeComponent="{Binding ThemeComponent}" Margin="0,2,0,0">
|
||||||
|
<userControls:ThemeComponentSelectionControl.AvailableThemeComponents>
|
||||||
|
<MultiBinding Converter="{StaticResource AvailableThemeComponentsConverter}">
|
||||||
|
<Binding Path="DataContext.Script.ThemeComponents" RelativeSource="{RelativeSource AncestorType={x:Type views:ItemFilterScriptView}}"/>
|
||||||
|
<Binding Path="." />
|
||||||
|
</MultiBinding>
|
||||||
|
</userControls:ThemeComponentSelectionControl.AvailableThemeComponents>
|
||||||
|
</userControls:ThemeComponentSelectionControl>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
|
@ -171,11 +182,30 @@
|
||||||
</WrapPanel>
|
</WrapPanel>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
<!-- Drop Icon Template -->
|
<!-- Map Icon Template -->
|
||||||
<DataTemplate DataType="{x:Type blockItemTypes:IconBlockItem}">
|
<DataTemplate DataType="{x:Type blockItemTypes:MapIconBlockItem}">
|
||||||
<WrapPanel HorizontalAlignment="Left">
|
<StackPanel Orientation="Vertical" Margin="5,5,5,5">
|
||||||
<userControls:ImageComboBoxControl/>
|
<ComboBox ItemsSource="{Binding Source={extensions:Enumeration {x:Type enums:IconSize}}}" Style="{StaticResource MetroComboBox}"
|
||||||
</WrapPanel>
|
DisplayMemberPath="Description"
|
||||||
|
SelectedValue="{Binding Size}"
|
||||||
|
SelectedValuePath="Value" />
|
||||||
|
<ComboBox ItemsSource="{Binding Source={extensions:Enumeration {x:Type enums:IconColor}}}" Style="{StaticResource MetroComboBox}"
|
||||||
|
DisplayMemberPath="Description"
|
||||||
|
SelectedValue="{Binding Color}"
|
||||||
|
SelectedValuePath="Value" />
|
||||||
|
<ComboBox ItemsSource="{Binding Source={extensions:Enumeration {x:Type enums:IconShape}}}" Style="{StaticResource MetroComboBox}"
|
||||||
|
DisplayMemberPath="Description"
|
||||||
|
SelectedValue="{Binding Shape}"
|
||||||
|
SelectedValuePath="Value" />
|
||||||
|
<userControls:ThemeComponentSelectionControl ThemeComponent="{Binding ThemeComponent}" Margin="0,2,0,0">
|
||||||
|
<userControls:ThemeComponentSelectionControl.AvailableThemeComponents>
|
||||||
|
<MultiBinding Converter="{StaticResource AvailableThemeComponentsConverter}">
|
||||||
|
<Binding Path="DataContext.Script.ThemeComponents" RelativeSource="{RelativeSource AncestorType={x:Type views:ItemFilterScriptView}}"/>
|
||||||
|
<Binding Path="." />
|
||||||
|
</MultiBinding>
|
||||||
|
</userControls:ThemeComponentSelectionControl.AvailableThemeComponents>
|
||||||
|
</userControls:ThemeComponentSelectionControl>
|
||||||
|
</StackPanel>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
<!-- Custom Sound Template -->
|
<!-- Custom Sound Template -->
|
||||||
|
|
|
@ -90,10 +90,6 @@ namespace Filtration.UserControls
|
||||||
"ShFusing", "ShRegal", "ShVaal"
|
"ShFusing", "ShRegal", "ShVaal"
|
||||||
};
|
};
|
||||||
|
|
||||||
public List<string> IconsAvailable => new List<string> {
|
|
||||||
"Icon1", "Icon2", "Icon3", "Icon4", "Icon5", "Icon6"
|
|
||||||
};
|
|
||||||
|
|
||||||
private void OnSetBlockValueCommmand()
|
private void OnSetBlockValueCommmand()
|
||||||
{
|
{
|
||||||
var blockItemWithTheme = BlockItem as IBlockItemWithTheme;
|
var blockItemWithTheme = BlockItem as IBlockItemWithTheme;
|
||||||
|
@ -121,6 +117,17 @@ namespace Filtration.UserControls
|
||||||
var stringBlockItem = BlockItem as StringBlockItem;
|
var stringBlockItem = BlockItem as StringBlockItem;
|
||||||
stringBlockItem.Value = ((StringThemeComponent)stringBlockItem.ThemeComponent).Value;
|
stringBlockItem.Value = ((StringThemeComponent)stringBlockItem.ThemeComponent).Value;
|
||||||
break;
|
break;
|
||||||
|
case ThemeComponentType.Icon:
|
||||||
|
var iconBlockItem = BlockItem as IconBlockItem;
|
||||||
|
iconBlockItem.Size = ((IconThemeComponent)iconBlockItem.ThemeComponent).IconSize;
|
||||||
|
iconBlockItem.Color = ((IconThemeComponent)iconBlockItem.ThemeComponent).IconColor;
|
||||||
|
iconBlockItem.Shape = ((IconThemeComponent)iconBlockItem.ThemeComponent).IconShape;
|
||||||
|
break;
|
||||||
|
case ThemeComponentType.Effect:
|
||||||
|
var effectColorBlockItem = BlockItem as EffectColorBlockItem;
|
||||||
|
effectColorBlockItem.Color = ((EffectColorThemeComponent)effectColorBlockItem.ThemeComponent).EffectColor;
|
||||||
|
effectColorBlockItem.Temporary = ((EffectColorThemeComponent)effectColorBlockItem.ThemeComponent).Temporary;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
|
|
||||||
<UserControl.Resources>
|
<UserControl.Resources>
|
||||||
<Converters:DropIconConverter x:Key="DropIconConverter"/>
|
<Converters:SizeColorToRectConverter x:Key="DropIconConverter"/>
|
||||||
</UserControl.Resources>
|
</UserControl.Resources>
|
||||||
|
|
||||||
<Grid>
|
<Grid>
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
d:DataContext="{d:DesignInstance Type=userControls:ItemPreviewControl}"
|
d:DataContext="{d:DesignInstance Type=userControls:ItemPreviewControl}"
|
||||||
d:DesignHeight="35" d:DesignWidth="170">
|
d:DesignHeight="35" d:DesignWidth="170">
|
||||||
<Border BorderBrush="Black" BorderThickness="1">
|
<Border BorderBrush="Black" BorderThickness="1">
|
||||||
<Grid Width="166" Height="39">
|
<Grid Width="200" Height="39">
|
||||||
<Image Source="pack://application:,,,/resources/groundtile.png" Stretch="Fill" />
|
<Image Source="pack://application:,,,/resources/groundtile.png" Stretch="Fill" />
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:extensions="clr-namespace:Filtration.Extensions"
|
xmlns:extensions="clr-namespace:Filtration.Common.Extensions;assembly=Filtration.Common"
|
||||||
xmlns:userControls="clr-namespace:Filtration.UserControls"
|
xmlns:userControls="clr-namespace:Filtration.UserControls"
|
||||||
xmlns:enums="clr-namespace:Filtration.ObjectModel.Enums;assembly=Filtration.ObjectModel"
|
xmlns:enums="clr-namespace:Filtration.ObjectModel.Enums;assembly=Filtration.ObjectModel"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
|
|
|
@ -67,6 +67,14 @@
|
||||||
<DataTemplate DataType="{x:Type themeEditor:StringThemeComponent}">
|
<DataTemplate DataType="{x:Type themeEditor:StringThemeComponent}">
|
||||||
<!--TODO: How to show theese?-->
|
<!--TODO: How to show theese?-->
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
|
<DataTemplate DataType="{x:Type themeEditor:IconThemeComponent}">
|
||||||
|
<!--TODO: How to show theese?-->
|
||||||
|
</DataTemplate>
|
||||||
|
|
||||||
|
<DataTemplate DataType="{x:Type themeEditor:EffectColorThemeComponent}">
|
||||||
|
<!--TODO: How to show theese?-->
|
||||||
|
</DataTemplate>
|
||||||
</ContentControl.Resources>
|
</ContentControl.Resources>
|
||||||
</ContentControl>
|
</ContentControl>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
|
@ -8,6 +8,7 @@ using System.Windows.Media;
|
||||||
using Filtration.ObjectModel;
|
using Filtration.ObjectModel;
|
||||||
using Filtration.ObjectModel.BlockItemBaseTypes;
|
using Filtration.ObjectModel.BlockItemBaseTypes;
|
||||||
using Filtration.ObjectModel.BlockItemTypes;
|
using Filtration.ObjectModel.BlockItemTypes;
|
||||||
|
using Filtration.ObjectModel.Enums;
|
||||||
using Filtration.Services;
|
using Filtration.Services;
|
||||||
using Filtration.Views;
|
using Filtration.Views;
|
||||||
using GalaSoft.MvvmLight.CommandWpf;
|
using GalaSoft.MvvmLight.CommandWpf;
|
||||||
|
@ -181,6 +182,7 @@ namespace Filtration.ViewModels
|
||||||
typeof (CorruptedBlockItem),
|
typeof (CorruptedBlockItem),
|
||||||
typeof (ElderItemBlockItem),
|
typeof (ElderItemBlockItem),
|
||||||
typeof (ShaperItemBlockItem),
|
typeof (ShaperItemBlockItem),
|
||||||
|
typeof (MapTierBlockItem),
|
||||||
typeof (ShapedMapBlockItem),
|
typeof (ShapedMapBlockItem),
|
||||||
typeof (ElderMapBlockItem),
|
typeof (ElderMapBlockItem),
|
||||||
typeof (GemLevelBlockItem),
|
typeof (GemLevelBlockItem),
|
||||||
|
@ -197,8 +199,8 @@ namespace Filtration.ViewModels
|
||||||
typeof (SoundBlockItem),
|
typeof (SoundBlockItem),
|
||||||
typeof (PositionalSoundBlockItem),
|
typeof (PositionalSoundBlockItem),
|
||||||
typeof (DisableDropSoundBlockItem),
|
typeof (DisableDropSoundBlockItem),
|
||||||
typeof (IconBlockItem),
|
typeof (MapIconBlockItem),
|
||||||
typeof (BeamBlockItem),
|
typeof (PlayEffectBlockItem),
|
||||||
typeof (CustomSoundBlockItem)
|
typeof (CustomSoundBlockItem)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -241,8 +243,10 @@ namespace Filtration.ViewModels
|
||||||
public Color DisplayBackgroundColor => Block.DisplayBackgroundColor;
|
public Color DisplayBackgroundColor => Block.DisplayBackgroundColor;
|
||||||
public Color DisplayBorderColor => Block.DisplayBorderColor;
|
public Color DisplayBorderColor => Block.DisplayBorderColor;
|
||||||
public double DisplayFontSize => Block.DisplayFontSize/1.8;
|
public double DisplayFontSize => Block.DisplayFontSize/1.8;
|
||||||
public string DisplayIcon => Block.DisplayIcon;
|
public int DisplayIconSize => Block.DisplayIconSize;
|
||||||
public Color DisplayBeamColor => Block.DisplayBeamColor;
|
public int DisplayIconColor => Block.DisplayIconColor;
|
||||||
|
public int DisplayIconShape => Block.DisplayIconShape;
|
||||||
|
public Color DisplayEffectColor => Block.DisplayEffectColor;
|
||||||
|
|
||||||
public bool HasSound => Block.HasBlockItemOfType<SoundBlockItem>();
|
public bool HasSound => Block.HasBlockItemOfType<SoundBlockItem>();
|
||||||
public bool HasPositionalSound => Block.HasBlockItemOfType<PositionalSoundBlockItem>();
|
public bool HasPositionalSound => Block.HasBlockItemOfType<PositionalSoundBlockItem>();
|
||||||
|
@ -476,8 +480,10 @@ namespace Filtration.ViewModels
|
||||||
RaisePropertyChanged(nameof(DisplayBackgroundColor));
|
RaisePropertyChanged(nameof(DisplayBackgroundColor));
|
||||||
RaisePropertyChanged(nameof(DisplayBorderColor));
|
RaisePropertyChanged(nameof(DisplayBorderColor));
|
||||||
RaisePropertyChanged(nameof(DisplayFontSize));
|
RaisePropertyChanged(nameof(DisplayFontSize));
|
||||||
RaisePropertyChanged(nameof(DisplayIcon));
|
RaisePropertyChanged(nameof(DisplayIconSize));
|
||||||
RaisePropertyChanged(nameof(DisplayBeamColor));
|
RaisePropertyChanged(nameof(DisplayIconColor));
|
||||||
|
RaisePropertyChanged(nameof(DisplayIconShape));
|
||||||
|
RaisePropertyChanged(nameof(DisplayEffectColor));
|
||||||
RaisePropertyChanged(nameof(HasSound));
|
RaisePropertyChanged(nameof(HasSound));
|
||||||
RaisePropertyChanged(nameof(HasPositionalSound));
|
RaisePropertyChanged(nameof(HasPositionalSound));
|
||||||
RaisePropertyChanged(nameof(HasCustomSound));
|
RaisePropertyChanged(nameof(HasCustomSound));
|
||||||
|
|
|
@ -117,6 +117,8 @@ namespace Filtration.ViewModels
|
||||||
AddFontSizeThemeComponentCommand = new RelayCommand(OnAddFontSizeThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable);
|
AddFontSizeThemeComponentCommand = new RelayCommand(OnAddFontSizeThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable);
|
||||||
AddAlertSoundThemeComponentCommand = new RelayCommand(OnAddAlertSoundThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable);
|
AddAlertSoundThemeComponentCommand = new RelayCommand(OnAddAlertSoundThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable);
|
||||||
AddCustomSoundThemeComponentCommand = new RelayCommand(OnAddCustomSoundThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable);
|
AddCustomSoundThemeComponentCommand = new RelayCommand(OnAddCustomSoundThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable);
|
||||||
|
AddIconThemeComponentCommand = new RelayCommand(OnAddIconThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable);
|
||||||
|
AddEffectColorThemeComponentCommand = new RelayCommand(OnAddEffectColorThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable);
|
||||||
DeleteThemeComponentCommand = new RelayCommand(OnDeleteThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable && _avalonDockWorkspaceViewModel.ActiveThemeViewModel.SelectedThemeComponent != null);
|
DeleteThemeComponentCommand = new RelayCommand(OnDeleteThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable && _avalonDockWorkspaceViewModel.ActiveThemeViewModel.SelectedThemeComponent != null);
|
||||||
|
|
||||||
ExpandAllBlocksCommand = new RelayCommand(OnExpandAllBlocksCommand, () => ActiveDocumentIsScript);
|
ExpandAllBlocksCommand = new RelayCommand(OnExpandAllBlocksCommand, () => ActiveDocumentIsScript);
|
||||||
|
@ -219,6 +221,8 @@ namespace Filtration.ViewModels
|
||||||
public RelayCommand AddFontSizeThemeComponentCommand { get; }
|
public RelayCommand AddFontSizeThemeComponentCommand { get; }
|
||||||
public RelayCommand AddAlertSoundThemeComponentCommand { get; }
|
public RelayCommand AddAlertSoundThemeComponentCommand { get; }
|
||||||
public RelayCommand AddCustomSoundThemeComponentCommand { get; }
|
public RelayCommand AddCustomSoundThemeComponentCommand { get; }
|
||||||
|
public RelayCommand AddIconThemeComponentCommand { get; }
|
||||||
|
public RelayCommand AddEffectColorThemeComponentCommand { get; }
|
||||||
public RelayCommand DeleteThemeComponentCommand { get; }
|
public RelayCommand DeleteThemeComponentCommand { get; }
|
||||||
|
|
||||||
public RelayCommand AddBlockCommand { get; }
|
public RelayCommand AddBlockCommand { get; }
|
||||||
|
@ -698,6 +702,16 @@ namespace Filtration.ViewModels
|
||||||
_avalonDockWorkspaceViewModel.ActiveThemeViewModel.AddThemeComponentCommand.Execute(ThemeComponentType.CustomSound);
|
_avalonDockWorkspaceViewModel.ActiveThemeViewModel.AddThemeComponentCommand.Execute(ThemeComponentType.CustomSound);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnAddIconThemeComponentCommand()
|
||||||
|
{
|
||||||
|
_avalonDockWorkspaceViewModel.ActiveThemeViewModel.AddThemeComponentCommand.Execute(ThemeComponentType.Icon);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnAddEffectColorThemeComponentCommand()
|
||||||
|
{
|
||||||
|
_avalonDockWorkspaceViewModel.ActiveThemeViewModel.AddThemeComponentCommand.Execute(ThemeComponentType.Effect);
|
||||||
|
}
|
||||||
|
|
||||||
private void OnDeleteThemeComponentCommand()
|
private void OnDeleteThemeComponentCommand()
|
||||||
{
|
{
|
||||||
_avalonDockWorkspaceViewModel.ActiveThemeViewModel.DeleteThemeComponentCommand.Execute(
|
_avalonDockWorkspaceViewModel.ActiveThemeViewModel.DeleteThemeComponentCommand.Execute(
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<Window x:Class="Filtration.Views.AboutWindow"
|
<Window x:Class="Filtration.Views.AboutWindow"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:extensions="clr-namespace:Filtration.Extensions"
|
xmlns:extensions="clr-namespace:Filtration.Common.Extensions;assembly=Filtration.Common"
|
||||||
Title="About Filtration"
|
Title="About Filtration"
|
||||||
Height="360"
|
Height="360"
|
||||||
Width="580"
|
Width="580"
|
||||||
|
|
|
@ -18,7 +18,8 @@
|
||||||
<ResourceDictionary>
|
<ResourceDictionary>
|
||||||
<views:BindingProxy x:Key="Proxy" Data="{Binding}" />
|
<views:BindingProxy x:Key="Proxy" Data="{Binding}" />
|
||||||
<converters:BlockGroupAdvancedFillColorConverter x:Key="BlockGroupAdvancedFillColorConverter" />
|
<converters:BlockGroupAdvancedFillColorConverter x:Key="BlockGroupAdvancedFillColorConverter" />
|
||||||
<converters:DropIconConverter x:Key="DropIconConverter"/>
|
<converters:IconShapeToSourceConverter x:Key="IconShapeToSourceConverter"/>
|
||||||
|
<converters:SizeColorToRectConverter x:Key="SizeColorToRectConverter"/>
|
||||||
<Style TargetType="{x:Type ContentPresenter}" x:Key="BlockItemFadeInStyle">
|
<Style TargetType="{x:Type ContentPresenter}" x:Key="BlockItemFadeInStyle">
|
||||||
<Setter Property="LayoutTransform">
|
<Setter Property="LayoutTransform">
|
||||||
<Setter.Value>
|
<Setter.Value>
|
||||||
|
@ -131,12 +132,19 @@
|
||||||
|
|
||||||
<!-- Item Preview Box -->
|
<!-- Item Preview Box -->
|
||||||
<WrapPanel Grid.Row="0" Grid.Column="2" VerticalAlignment="Center">
|
<WrapPanel Grid.Row="0" Grid.Column="2" VerticalAlignment="Center">
|
||||||
<Image Source="{Binding DisplayIcon, Converter={StaticResource DropIconConverter}, Mode=OneWay}" Width="30" Height="30" Margin="0,0,10,0" />
|
<Rectangle Height="40" Width="40" Margin="0,0,10,0">
|
||||||
<Line Y2="41" StrokeThickness="2" Stroke="{Binding DisplayBeamColor, Converter={StaticResource ColorToSolidColorBrushConverter}, Mode=OneWay}" Margin="0,2,10,0" >
|
<Rectangle.Fill>
|
||||||
<Line.Effect>
|
<ImageBrush ImageSource="{Binding DisplayIconShape, Converter={StaticResource IconShapeToSourceConverter}, Mode=OneWay}"
|
||||||
<DropShadowEffect BlurRadius="5" ShadowDepth="0" Color="{Binding DisplayBeamColor, Mode=OneWay}" Direction="0"/>
|
ViewboxUnits="Absolute" Stretch="Fill">
|
||||||
</Line.Effect>
|
<ImageBrush.Viewbox>
|
||||||
</Line>
|
<MultiBinding Converter="{StaticResource SizeColorToRectConverter}">
|
||||||
|
<Binding Path="DisplayIconSize"/>
|
||||||
|
<Binding Path="DisplayIconColor"/>
|
||||||
|
</MultiBinding>
|
||||||
|
</ImageBrush.Viewbox>
|
||||||
|
</ImageBrush>
|
||||||
|
</Rectangle.Fill>
|
||||||
|
</Rectangle>
|
||||||
<Button Command="{Binding PlaySoundCommand}"
|
<Button Command="{Binding PlaySoundCommand}"
|
||||||
Width="25"
|
Width="25"
|
||||||
Height="25"
|
Height="25"
|
||||||
|
@ -173,7 +181,14 @@
|
||||||
ToolTip="Click to preview drop sound">
|
ToolTip="Click to preview drop sound">
|
||||||
<Image Source="/Filtration;component/Resources/Icons/speaker_icon.png" VerticalAlignment="Center" HorizontalAlignment="Center" />
|
<Image Source="/Filtration;component/Resources/Icons/speaker_icon.png" VerticalAlignment="Center" HorizontalAlignment="Center" />
|
||||||
</Button>
|
</Button>
|
||||||
<ToggleButton Margin="0,2,2,2"
|
<Line Y1="5" Y2="38" StrokeThickness="2" Panel.ZIndex="999"
|
||||||
|
Stroke="{Binding DisplayEffectColor, Converter={StaticResource ColorToSolidColorBrushConverter}, Mode=OneWay}"
|
||||||
|
Margin="10,2,0,0" >
|
||||||
|
<Line.Effect>
|
||||||
|
<DropShadowEffect BlurRadius="5" ShadowDepth="0" Color="{Binding DisplayEffectColor, Mode=OneWay}" Direction="0"/>
|
||||||
|
</Line.Effect>
|
||||||
|
</Line>
|
||||||
|
<ToggleButton Margin="-10,2,2,2"
|
||||||
Style="{StaticResource ChromelessToggleButton}"
|
Style="{StaticResource ChromelessToggleButton}"
|
||||||
x:Name="ItemPreviewButton"
|
x:Name="ItemPreviewButton"
|
||||||
IsChecked="{Binding AudioVisualBlockItemsGridVisible}"
|
IsChecked="{Binding AudioVisualBlockItemsGridVisible}"
|
||||||
|
|
|
@ -132,6 +132,8 @@
|
||||||
<fluent:Button SizeDefinition="Middle" Header="Add Font Size" Icon="{StaticResource AddIcon}" Command="{Binding AddFontSizeThemeComponentCommand}" />
|
<fluent:Button SizeDefinition="Middle" Header="Add Font Size" Icon="{StaticResource AddIcon}" Command="{Binding AddFontSizeThemeComponentCommand}" />
|
||||||
<fluent:Button SizeDefinition="Middle" Header="Add Alert Sound" Icon="{StaticResource AddIcon}" Command="{Binding AddAlertSoundThemeComponentCommand}" />
|
<fluent:Button SizeDefinition="Middle" Header="Add Alert Sound" Icon="{StaticResource AddIcon}" Command="{Binding AddAlertSoundThemeComponentCommand}" />
|
||||||
<fluent:Button SizeDefinition="Middle" Header="Add Custom Sound" Icon="{StaticResource AddIcon}" Command="{Binding AddCustomSoundThemeComponentCommand}" />
|
<fluent:Button SizeDefinition="Middle" Header="Add Custom Sound" Icon="{StaticResource AddIcon}" Command="{Binding AddCustomSoundThemeComponentCommand}" />
|
||||||
|
<fluent:Button SizeDefinition="Middle" Header="Add Icon" Icon="{StaticResource AddIcon}" Command="{Binding AddIconThemeComponentCommand}" />
|
||||||
|
<fluent:Button SizeDefinition="Middle" Header="Add Effect Color" Icon="{StaticResource AddIcon}" Command="{Binding AddEffectColorThemeComponentCommand}" />
|
||||||
</fluent:RibbonGroupBox>
|
</fluent:RibbonGroupBox>
|
||||||
<fluent:RibbonGroupBox Header="Delete">
|
<fluent:RibbonGroupBox Header="Delete">
|
||||||
<fluent:Button Header="Delete Theme Component" Icon="{StaticResource ThemeComponentDeleteIcon}" LargeIcon="{StaticResource ThemeComponentDeleteIcon}" Command="{Binding DeleteThemeComponentCommand}" />
|
<fluent:Button Header="Delete Theme Component" Icon="{StaticResource ThemeComponentDeleteIcon}" LargeIcon="{StaticResource ThemeComponentDeleteIcon}" Command="{Binding DeleteThemeComponentCommand}" />
|
||||||
|
|