Skip to content
This repository was archived by the owner on Jun 16, 2025. It is now read-only.

Commit 52991fc

Browse files
committed
Add support for fractured mods
- Add fractured mods support - Add fractured item test - Update api test data - Update test for map with curse
1 parent c496b4e commit 52991fc

File tree

13 files changed

+82
-8
lines changed

13 files changed

+82
-8
lines changed

src/Sidekick.Business/Apis/Poe/Models/Modifiers.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,6 @@ public class Modifiers
99
public List<Modifier> Crafted { get; set; } = new List<Modifier>();
1010
public List<Modifier> Enchant { get; set; } = new List<Modifier>();
1111
public List<Modifier> Pseudo { get; set; } = new List<Modifier>();
12+
public List<Modifier> Fractured { get; set; } = new List<Modifier>();
1213
}
1314
}

src/Sidekick.Business/Apis/Poe/Trade/Data/Stats/StatDataService.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ public StatDataService(IPoeTradeClient poeApiClient,
4040

4141
private List<StatData> VeiledPatterns { get; set; }
4242

43+
private List<StatData> FracturedPatterns { get; set; }
44+
4345
private Regex NewLinePattern { get; set; }
4446
private Regex IncreasedPattern { get; set; }
4547

@@ -53,6 +55,7 @@ public async Task OnInit()
5355
EnchantPatterns = new List<StatData>();
5456
CraftedPatterns = new List<StatData>();
5557
VeiledPatterns = new List<StatData>();
58+
FracturedPatterns = new List<StatData>();
5659

5760
NewLinePattern = new Regex("(?:\\\\)*[\\r\\n]+");
5861
IncreasedPattern = new Regex(languageProvider.Language.ModifierIncreased);
@@ -83,6 +86,7 @@ public async Task OnInit()
8386
case "enchant": suffix = "(?:\\ \\(enchant\\)\\n|(?<!(?:\\n.*){2,})$)"; patterns = EnchantPatterns; break;
8487
case "crafted": suffix = "(?:\\ \\(crafted\\)\\n|(?<!(?:\\n.*){2,})$)"; patterns = CraftedPatterns; break;
8588
case "veiled": suffix = "(?:\\ \\(veiled\\)\\n|(?<!(?:\\n.*){2,})$)"; patterns = VeiledPatterns; break;
89+
case "fractured": suffix = "(?:\\ \\(fractured\\)\\n|(?<!(?:\\n.*){2,})$)"; patterns = FracturedPatterns; break;
8690
}
8791

8892
foreach (var entry in category.Entries)
@@ -159,7 +163,8 @@ public Modifiers ParseMods(string text)
159163
FillMods(mods.Implicit, ImplicitPatterns, text);
160164
FillMods(mods.Enchant, EnchantPatterns, text);
161165
FillMods(mods.Crafted, CraftedPatterns, text);
162-
// FillMods(mods.Veiled, VeiledPatterns, text);
166+
//FillMods(mods.Veiled, VeiledPatterns, text);
167+
FillMods(mods.Fractured, FracturedPatterns, text);
163168

164169
FillPseudo(mods.Pseudo, mods.Explicit);
165170
FillPseudo(mods.Pseudo, mods.Implicit);
@@ -302,6 +307,12 @@ public StatData GetById(string id)
302307
return result;
303308
}
304309

310+
result = FracturedPatterns.FirstOrDefault(x => x.Id == id);
311+
if (result != null)
312+
{
313+
return result;
314+
}
315+
305316
return null;
306317
}
307318
}

src/Sidekick.Business/Apis/Poe/Trade/Search/Results/Hashes.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ public class Hashes
3636
[JsonIgnore]
3737
public List<LineContentValue> Pseudo => Parse(ApiPseudo);
3838

39+
[JsonPropertyName("fractured")]
40+
public List<List<JsonElement>> ApiFractured { get; set; }
41+
[JsonIgnore]
42+
public List<LineContentValue> Fractured => Parse(ApiFractured);
43+
3944
private List<LineContentValue> Parse(List<List<JsonElement>> values)
4045
{
4146
var result = new List<LineContentValue>();

src/Sidekick.Business/Apis/Poe/Trade/Search/Results/Mods.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public class Mods
99
public List<Mod> Explicit { get; set; } = new List<Mod>();
1010
public List<Mod> Crafted { get; set; } = new List<Mod>();
1111
public List<Mod> Enchant { get; set; } = new List<Mod>();
12+
public List<Mod> Fractured { get; set; } = new List<Mod>();
1213

1314
[JsonIgnore]
1415
public List<Mod> Pseudo { get; set; } = new List<Mod>();

src/Sidekick.Business/Apis/Poe/Trade/Search/Results/ResultItem.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ public class ResultItem
2020

2121
public bool Corrupted { get; set; }
2222

23+
public bool Fractured { get; set; }
24+
2325
public Influences Influences { get; set; } = new Influences();
2426

2527
public bool Verified { get; set; }
@@ -58,6 +60,9 @@ public class ResultItem
5860
[JsonPropertyName("enchantMods")]
5961
public List<string> EnchantMods { get; set; }
6062

63+
[JsonPropertyName("fracturedMods")]
64+
public List<string> FracturedMods { get; set; }
65+
6166
public List<Socket> Sockets { get; set; } = new List<Socket>();
6267

6368
public Extended Extended { get; set; } = new Extended();

src/Sidekick.Business/Apis/Poe/Trade/Search/Results/TradeItem.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,12 @@ public TradeItem(Result result, IStatDataService statDataService)
6464
result.Item.PseudoMods,
6565
result.Item.Extended.Mods?.Pseudo,
6666
result.Item.Extended.Hashes?.Pseudo);
67+
68+
ParseMods(statDataService,
69+
Modifiers.Fractured,
70+
result.Item.FracturedMods,
71+
result.Item.Extended.Mods?.Fractured,
72+
result.Item.Extended.Hashes?.Fractured);
6773
}
6874

6975
private void ParseMods(IStatDataService statDataService, List<Modifier> modifiers, List<string> texts, List<Mod> mods, List<LineContentValue> hashes)

src/Sidekick/Sidekick.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
<UseWPF>true</UseWPF>
66
<UseWindowsForms>true</UseWindowsForms>
77
<ApplicationIcon>Resources\ExaltedOrb.ico</ApplicationIcon>
8-
<AssemblyVersion>1.0.2.0</AssemblyVersion>
9-
<FileVersion>1.0.2.0</FileVersion>
10-
<Version>1.0.2</Version>
8+
<AssemblyVersion>1.0.3.0</AssemblyVersion>
9+
<FileVersion>1.0.3.0</FileVersion>
10+
<Version>1.0.3</Version>
1111
<ApplicationManifest>app.manifest</ApplicationManifest>
1212
<Description>A Path of Exile helper that shows item prices using the official Path of Exile Trade API.</Description>
1313
<PackageProjectUrl>https://github.com/domialex/Sidekick</PackageProjectUrl>

src/Sidekick/Views/Prices/ItemPreview.xaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,14 @@
187187
</ItemsControl.ItemTemplate>
188188
</ItemsControl>
189189

190+
<ItemsControl ItemsSource="{Binding Path=ViewModel.PreviewItem.Item.Modifiers.Fractured}">
191+
<ItemsControl.ItemTemplate>
192+
<DataTemplate>
193+
<local:ItemMod Modifier="{Binding}" />
194+
</DataTemplate>
195+
</ItemsControl.ItemTemplate>
196+
</ItemsControl>
197+
190198
<Border
191199
Margin="0,2,0,5"
192200
BorderBrush="Gray"

src/Sidekick/Views/Prices/PriceViewModel.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,7 @@ private void InitializeFilters()
346346
InitializeMods(Item.Modifiers.Implicit);
347347
InitializeMods(Item.Modifiers.Explicit);
348348
InitializeMods(Item.Modifiers.Crafted);
349+
InitializeMods(Item.Modifiers.Fractured);
349350

350351
if (Filters.Count == 0)
351352
{

tests/Sidekick.Business.Tests/ItemParserTests/EquipmentParsing.cs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,24 @@ public async Task ParseMagicWeapon()
166166
.Should().Contain(expectedExplicits);
167167
}
168168

169+
[Test]
170+
public async Task ParseFracturedItem()
171+
{
172+
var actual = await Subject.ParseItem(FracturedItem);
173+
174+
actual.Type.Should().Be("Iron Greaves");
175+
actual.Rarity.Should().Be(Apis.Poe.Models.Rarity.Rare);
176+
177+
var expectedFractured = new[]
178+
{
179+
"10% increased Movement Speed"
180+
};
181+
182+
actual.Modifiers.Fractured
183+
.Select(mod => mod.Text)
184+
.Should().Contain(expectedFractured);
185+
}
186+
169187
#region ItemText
170188

171189
private const string UniqueSixLink = @"Rarity: Unique
@@ -299,6 +317,24 @@ Two Handed Axe
299317
Item Level: 50
300318
--------
301319
11% reduced Enemy Stun Threshold
320+
";
321+
322+
private const string FracturedItem = @"Rarity: Rare
323+
Invasion Track
324+
Iron Greaves
325+
--------
326+
Armour: 6
327+
--------
328+
Sockets: B B
329+
--------
330+
Item Level: 2
331+
--------
332+
10% increased Movement Speed (fractured)
333+
+5 to maximum Life
334+
Regenerate 1.9 Life per second
335+
+8% to Cold Resistance
336+
--------
337+
Fractured Item
302338
";
303339

304340
#endregion

0 commit comments

Comments
 (0)