119 lines
3.5 KiB
C#
119 lines
3.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Windows.Media;
|
|
using Filtration.ObjectModel.BlockItemBaseTypes;
|
|
using Filtration.ObjectModel.Enums;
|
|
using Filtration.ObjectModel.LootExplosionStudio;
|
|
|
|
namespace Filtration.ObjectModel.BlockItemTypes
|
|
{
|
|
public class SocketGroupBlockItem : StringListBlockItem
|
|
{
|
|
public override string PrefixText
|
|
{
|
|
get { return "SocketGroup"; }
|
|
}
|
|
|
|
public override int MaximumAllowed
|
|
{
|
|
get { return 1; }
|
|
}
|
|
|
|
public override string DisplayHeading
|
|
{
|
|
get
|
|
{
|
|
return "Socket Group";
|
|
}
|
|
}
|
|
|
|
public override string SummaryText
|
|
{
|
|
get
|
|
{
|
|
var summaryItemText = " " + Items.Aggregate(string.Empty, (current, i) => current + " " + i);
|
|
return "Socket Group " + summaryItemText.TrimStart(' ');
|
|
}
|
|
}
|
|
|
|
public override Color SummaryBackgroundColor
|
|
{
|
|
get { return Colors.GhostWhite; }
|
|
}
|
|
|
|
public override Color SummaryTextColor
|
|
{
|
|
get { return Colors.Black; }
|
|
}
|
|
|
|
public override int SortOrder
|
|
{
|
|
get { return 9; }
|
|
}
|
|
|
|
public override string GetLootItemProperty(LootItem lootItem)
|
|
{
|
|
return lootItem.SocketGroups.ToString();
|
|
}
|
|
|
|
public override bool MatchesLootItem(LootItem lootItem)
|
|
{
|
|
foreach (var socketGroupString in Items)
|
|
{
|
|
var socketColorList = SocketGroupStringToSocketColors(socketGroupString);
|
|
if (
|
|
lootItem.SocketGroups.Any(
|
|
g =>
|
|
g.Sockets.Count(s => s == SocketColor.Red) >=
|
|
socketColorList.Count(l => l == SocketColor.Red) &&
|
|
g.Sockets.Count(s => s == SocketColor.Green) >=
|
|
socketColorList.Count(l => l == SocketColor.Green) &&
|
|
g.Sockets.Count(s => s == SocketColor.Blue) >=
|
|
socketColorList.Count(l => l == SocketColor.Blue) &&
|
|
g.Sockets.Count(s => s == SocketColor.White) >=
|
|
socketColorList.Count(l => l == SocketColor.White)))
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
private List<SocketColor> SocketGroupStringToSocketColors(string socketGroupString)
|
|
{
|
|
var socketColorList = new List<SocketColor>();
|
|
|
|
foreach (var c in socketGroupString.ToCharArray())
|
|
{
|
|
switch (c)
|
|
{
|
|
case 'R':
|
|
{
|
|
socketColorList.Add(SocketColor.Red);
|
|
break;
|
|
}
|
|
case 'G':
|
|
{
|
|
socketColorList.Add(SocketColor.Green);
|
|
break;
|
|
}
|
|
case 'B':
|
|
{
|
|
socketColorList.Add(SocketColor.Blue);
|
|
break;
|
|
}
|
|
case 'W':
|
|
{
|
|
socketColorList.Add(SocketColor.White);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return socketColorList;
|
|
}
|
|
}
|
|
}
|