Skip to content

Commit 65521dc

Browse files
committed
Addressing review remarks for Capture Badges and Location Change Callbacks
1 parent fb30e80 commit 65521dc

8 files changed

Lines changed: 55 additions & 65 deletions

File tree

EmoTracker.Data/Layout/LayoutItem.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,26 @@ public enum VerticalAlignment
5555
Stretch = 3
5656
}
5757

58+
/// <summary>
59+
/// Represents one of nine anchor positions on a 3×3 grid:
60+
///
61+
/// TopLeft | Top | TopRight
62+
/// Left | Center | Right
63+
/// BottomLeft| Bottom | BottomRight
64+
/// </summary>
65+
public enum ContentAlignment
66+
{
67+
TopLeft = 0,
68+
Top = 1,
69+
TopRight = 2,
70+
Left = 3,
71+
Center = 4,
72+
Right = 5,
73+
BottomLeft = 6,
74+
Bottom = 7,
75+
BottomRight = 8
76+
}
77+
5878
public abstract class LayoutItem : ObservableObject
5979
{
6080
string mBackground;

EmoTracker.Data/LocationDatabase.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
using System.Collections.ObjectModel;
1010
using System.IO;
1111
using System.Linq;
12-
1312
namespace EmoTracker.Data
1413
{
1514
public class LocationDatabase : ObservableSingleton<LocationDatabase>, ICodeProvider
@@ -434,8 +433,8 @@ Location LoadLocation(IGamePackage package, Location parent, JObject data)
434433
{
435434
string[] parts = captureBadgeOffset.Split(',');
436435
if (parts.Length == 2 &&
437-
double.TryParse(parts[0].Trim(), out double ox) &&
438-
double.TryParse(parts[1].Trim(), out double oy))
436+
double.TryParse(parts[0].Trim(), System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out double ox) &&
437+
double.TryParse(parts[1].Trim(), System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out double oy))
439438
{
440439
section.CaptureBadge = true;
441440
section.CaptureBadgeOffsetX = ox;
@@ -532,7 +531,7 @@ Location LoadLocation(IGamePackage package, Location parent, JObject data)
532531
string badgealignment = entry.GetValue<string>("badge_alignment");
533532
if (!string.IsNullOrEmpty(badgealignment))
534533
{
535-
if (System.Enum.TryParse<Locations.BadgeAlignment>(badgealignment, ignoreCase: true, out var alignment))
534+
if (System.Enum.TryParse<EmoTracker.Data.Layout.ContentAlignment>(badgealignment, ignoreCase: true, out var alignment))
536535
mapLocation.BadgeAlignment = alignment;
537536
}
538537

@@ -743,7 +742,8 @@ internal bool Load(JObject root)
743742
foreach (JProperty badge in badgesData.Properties())
744743
{
745744
string key = badge.Name;
746-
JObject badgeData = (JObject)badge.Value;
745+
JObject badgeData = badge.Value as JObject;
746+
if (badgeData == null) continue;
747747
string imagePath = badgeData.GetValue<string>("image");
748748
string filter = badgeData.GetValue<string>("filter");
749749
double ox = badgeData.GetValue<double>("ox", 0);

EmoTracker.Data/Locations/BadgeAlignment.cs

Lines changed: 0 additions & 27 deletions
This file was deleted.

EmoTracker.Data/Locations/Location.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ namespace EmoTracker.Data.Locations
1111
{
1212
public class Location : LocationVisualProperties
1313
{
14+
public const string DefaultBadgeKey = "";
15+
1416
private static AccessibilityLevel Min(AccessibilityLevel a, AccessibilityLevel b)
1517
{
1618
return (a < b) ? a : b;
@@ -493,7 +495,7 @@ public ImageReference AddBadge(string imageRef, string filterSpec = null)
493495
{
494496
ImageReference badge = ImageReference.FromPackRelativePath(Tracker.Instance.ActiveGamePackage, imageRef, filterSpec);
495497
if (badge == null) return null;
496-
mBadges[""] = new BadgeEntry("", badge);
498+
mBadges[DefaultBadgeKey] = new BadgeEntry(DefaultBadgeKey, badge);
497499
return badge;
498500
}
499501
catch
@@ -508,7 +510,7 @@ public ImageReference AddBadge(ImageReference imageRef, string filter = null)
508510
{
509511
ImageReference badge = ImageReference.FromImageReference(imageRef, filter);
510512
if (badge == null) return null;
511-
mBadges[""] = new BadgeEntry("", badge);
513+
mBadges[DefaultBadgeKey] = new BadgeEntry(DefaultBadgeKey, badge);
512514
return badge;
513515
}
514516
catch

EmoTracker.Data/Locations/Map.cs

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public class MapLocation : ObservableObject
2222

2323
double mBadgeSize = 35;
2424
Thickness mBadgeMargin = new Thickness(0, 0, 0, 0);
25-
BadgeAlignment mBadgeAlignment = BadgeAlignment.BottomRight;
25+
EmoTracker.Data.Layout.ContentAlignment mBadgeAlignment = EmoTracker.Data.Layout.ContentAlignment.BottomRight;
2626
double mBadgeOffsetX = 0;
2727
double mBadgeOffsetY = 0;
2828

@@ -149,15 +149,15 @@ private void UpdateBadgeMargin()
149149

150150
switch (mBadgeAlignment)
151151
{
152-
case BadgeAlignment.TopLeft: left = -sHalf - half; top = -sHalf - half; break;
153-
case BadgeAlignment.Top: left = -half; top = -sHalf - half; break;
154-
case BadgeAlignment.TopRight: left = sHalf - half; top = -sHalf - half; break;
155-
case BadgeAlignment.Left: left = -sHalf - half; top = -half; break;
156-
case BadgeAlignment.Right: left = sHalf - half; top = -half; break;
157-
case BadgeAlignment.BottomLeft: left = -sHalf - half; top = sHalf - half; break;
158-
case BadgeAlignment.Bottom: left = -half; top = sHalf - half; break;
159-
case BadgeAlignment.BottomRight:left = sHalf - half; top = sHalf - half; break;
160-
default: /* Center */ left = -half; top = -half; break;
152+
case EmoTracker.Data.Layout.ContentAlignment.TopLeft: left = -sHalf - half; top = -sHalf - half; break;
153+
case EmoTracker.Data.Layout.ContentAlignment.Top: left = -half; top = -sHalf - half; break;
154+
case EmoTracker.Data.Layout.ContentAlignment.TopRight: left = sHalf - half; top = -sHalf - half; break;
155+
case EmoTracker.Data.Layout.ContentAlignment.Left: left = -sHalf - half; top = -half; break;
156+
case EmoTracker.Data.Layout.ContentAlignment.Right: left = sHalf - half; top = -half; break;
157+
case EmoTracker.Data.Layout.ContentAlignment.BottomLeft: left = -sHalf - half; top = sHalf - half; break;
158+
case EmoTracker.Data.Layout.ContentAlignment.Bottom: left = -half; top = sHalf - half; break;
159+
case EmoTracker.Data.Layout.ContentAlignment.BottomRight:left = sHalf - half; top = sHalf - half; break;
160+
default: /* Center */ left = -half; top = -half; break;
161161
}
162162

163163
mBadgeMargin = new Thickness(left + mBadgeOffsetX, top + mBadgeOffsetY, 0, 0);
@@ -183,17 +183,11 @@ public double BadgeSize
183183
if (SetProperty(ref mBadgeSize, value))
184184
{
185185
UpdateBadgeMargin();
186-
NotifyPropertyChanged("ShowBadge");
187186
}
188187
}
189188
}
190189

191-
public bool ShowBadge
192-
{
193-
get { return mBadgeSize != 0; }
194-
}
195-
196-
public BadgeAlignment BadgeAlignment
190+
public EmoTracker.Data.Layout.ContentAlignment BadgeAlignment
197191
{
198192
get { return mBadgeAlignment; }
199193
set

EmoTracker.Data/Locations/Section.cs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,18 @@ public Section(Location owner)
4444
{
4545
VisualParent = owner;
4646
mOwner = owner;
47+
48+
PropertyChanging += (sender, e) =>
49+
{
50+
if (e.PropertyName == nameof(CapturedItem) || e.PropertyName == nameof(AvailableChestCount))
51+
ScriptManager.Instance.InvokeStandardCallback(ScriptManager.StandardCallback.LocationUpdating, this);
52+
};
53+
54+
PropertyChanged += (sender, e) =>
55+
{
56+
if (e.PropertyName == nameof(CapturedItem) || e.PropertyName == nameof(AvailableChestCount))
57+
ScriptManager.Instance.InvokeStandardCallback(ScriptManager.StandardCallback.LocationUpdated, this);
58+
};
4759
}
4860

4961
public Location Owner
@@ -95,8 +107,6 @@ public ITrackableItem CapturedItem
95107
{
96108
using (TransactionProcessor.Current.OpenTransaction())
97109
{
98-
ScriptManager.Instance.InvokeStandardCallback(ScriptManager.StandardCallback.LocationUpdating, this);
99-
100110
if (SetTransactableProperty(value, (processedValue) =>
101111
{
102112
LocationDatabase.Instance.RefeshAccessibility();
@@ -134,8 +144,6 @@ public ITrackableItem CapturedItem
134144
// we update the pinned status here to include it in the
135145
// current open transaction.
136146
Owner.AutoUnpinIfAppropriate();
137-
138-
ScriptManager.Instance.InvokeStandardCallback(ScriptManager.StandardCallback.LocationUpdated, this);
139147
}
140148
}
141149
}
@@ -191,9 +199,6 @@ public uint AvailableChestCount
191199
{
192200
using (TransactionProcessor.Current.OpenTransaction())
193201
{
194-
if (!mSuppressCaptureClearing)
195-
ScriptManager.Instance.InvokeStandardCallback(ScriptManager.StandardCallback.LocationUpdating, this);
196-
197202
if (value == 0 && CapturedItem != null && !mbCaptureBadge && !mSuppressCaptureClearing)
198203
{
199204
CapturedItem.AdvanceToCode();
@@ -209,9 +214,6 @@ public uint AvailableChestCount
209214
// we update the pinned status here to include it in the
210215
// current open transaction.
211216
Owner.AutoUnpinIfAppropriate();
212-
213-
if (!mSuppressCaptureClearing)
214-
ScriptManager.Instance.InvokeStandardCallback(ScriptManager.StandardCallback.LocationUpdated, this);
215217
}
216218
}
217219
}
@@ -246,7 +248,7 @@ public bool CaptureItem
246248
public bool CaptureBadge
247249
{
248250
get { return mbCaptureBadge; }
249-
set { mbCaptureBadge = value; NotifyPropertyChanged(); }
251+
set { SetProperty(ref mbCaptureBadge, value); }
250252
}
251253

252254
public double CaptureBadgeOffsetX

EmoTracker/Extensions/McpServer/Tools/LocationTools.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,7 @@ public static async Task<string> GetLocation([Description("The location name")]
108108
badgeSize = ml.BadgeSize,
109109
badgeAlignment = ml.BadgeAlignment.ToString(),
110110
badgeOffsetX = ml.BadgeOffsetX,
111-
badgeOffsetY = ml.BadgeOffsetY,
112-
showBadge = ml.ShowBadge
111+
badgeOffsetY = ml.BadgeOffsetY
113112
});
114113
}
115114
}

EmoTracker/UI/LocationMapControl.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@
134134
of the blip (e.g. BottomRight = blip corner at Size/2, Size/2).
135135
BadgeMargin encodes the computed offset; BadgeOffset shifts further. -->
136136
<ItemsControl ItemsSource="{Binding Location.BadgeItems}"
137-
IsVisible="{Binding DataContext.ShowBadge, ElementName=MinifiedLocation}"
137+
IsVisible="{Binding DataContext.BadgeSize, ElementName=MinifiedLocation, Converter={x:Static converters:NonZeroToBoolConverter.Instance}}"
138138
VerticalAlignment="Top"
139139
HorizontalAlignment="Left"
140140
Margin="{Binding DataContext.BadgeMargin, ElementName=MinifiedLocation, Converter={x:Static converters:ThicknessConverter.Instance}}">

0 commit comments

Comments
 (0)