diff --git a/src/TrackerCouncil.Smz3.UI/Services/TrackerWindowService.cs b/src/TrackerCouncil.Smz3.UI/Services/TrackerWindowService.cs index f4b45761..15a64eca 100644 --- a/src/TrackerCouncil.Smz3.UI/Services/TrackerWindowService.cs +++ b/src/TrackerCouncil.Smz3.UI/Services/TrackerWindowService.cs @@ -530,8 +530,11 @@ private TrackerWindowPanelViewModel GetItemPanelViewModel(UIGridLocation gridLoc { item.UpdatedItemState += (sender, args) => { - var sprite = uiService.GetSpritePath(item); - model.UpdateItem(item, sprite); + Dispatcher.UIThread.Post(() => + { + var sprite = uiService.GetSpritePath(item); + model.UpdateItem(item, sprite); + }); }; } @@ -541,14 +544,20 @@ private TrackerWindowPanelViewModel GetItemPanelViewModel(UIGridLocation gridLoc model.IsMMRequirement = miseryMire.PrerequisiteState.MarkedItem == items.Keys.First().Type; miseryMire.UpdatedPrerequisite += (_, _) => { - model.IsMMRequirement = miseryMire.PrerequisiteState.MarkedItem == items.Keys.First().Type; + Dispatcher.UIThread.Post(() => + { + model.IsMMRequirement = miseryMire.PrerequisiteState.MarkedItem == items.Keys.First().Type; + }); }; var turtleRock = world.World.TurtleRock; model.IsTRRequirement = turtleRock.PrerequisiteState.MarkedItem == items.Keys.First().Type; turtleRock.UpdatedPrerequisite += (_, _) => { - model.IsTRRequirement = turtleRock.PrerequisiteState.MarkedItem == items.Keys.First().Type; + Dispatcher.UIThread.Post(() => + { + model.IsTRRequirement = turtleRock.PrerequisiteState.MarkedItem == items.Keys.First().Type; + }); }; } @@ -644,35 +653,50 @@ private void HintItem(Item item, bool isSpoiler) var rewardImage = rewardRegion?.RewardType.GetCategories().Length > 0 ? uiService.GetSpritePath(rewardRegion.MarkedReward) : null; var model = new TrackerWindowDungeonPanelViewModel() - { - Region = dungeon as Region, - DungeonImage = dungeonImage, - RewardImage = rewardImage, - Row = gridLocation.Row, - Column = gridLocation.Column, - AddShadows = _model.AddShadows, - DungeonCleared = bossRegion?.BossDefeated == true, - DungeonTreasure = dungeon.RemainingTreasure, - }; + { + Region = dungeon as Region, + DungeonImage = dungeonImage, + RewardImage = rewardImage, + Row = gridLocation.Row, + Column = gridLocation.Column, + AddShadows = _model.AddShadows, + DungeonCleared = bossRegion?.BossDefeated == true, + DungeonTreasure = dungeon.RemainingTreasure, + }; if (bossRegion != null) { - bossRegion.Boss.UpdatedBossState += (_, _) => model.DungeonCleared = bossRegion.BossDefeated; + bossRegion.Boss.UpdatedBossState += (_, _) => + { + Dispatcher.UIThread.Post(() => + { + model.DungeonCleared = bossRegion.BossDefeated; + }); + }; model.Clicked += (_, _) => tracker.BossTracker.MarkBossAsDefeated(bossRegion, force: true); model.ResetCleared += (_, _) => tracker.BossTracker.MarkBossAsNotDefeated(bossRegion, force: true); } - dungeon.UpdatedTreasure += (_, _) => model.DungeonTreasure = dungeon.RemainingTreasure; + dungeon.UpdatedTreasure += (_, _) => + { + Dispatcher.UIThread.Post(() => + { + model.DungeonTreasure = dungeon.RemainingTreasure; + }); + }; model.TreasureCleared += (_, _) => tracker.TreasureTracker.ClearDungeon(dungeon); if (rewardRegion != null) { rewardRegion.Reward.UpdatedRewardState += (_, _) => { - var newImage = rewardRegion.MarkedReward.GetCategories().Length > 0 - ? uiService.GetSpritePath(rewardRegion.MarkedReward) - : null; - model.RewardImage = newImage; + Dispatcher.UIThread.Post(() => + { + var newImage = rewardRegion.MarkedReward.GetCategories().Length > 0 + ? uiService.GetSpritePath(rewardRegion.MarkedReward) + : null; + model.RewardImage = newImage; + }); }; model.RewardSet += (_, args) => tracker.RewardTracker.SetAreaReward(rewardRegion, args.RewardType); @@ -723,7 +747,10 @@ private void HintItem(Item item, bool isSpoiler) boss.UpdatedBossState += (_, _) => { - model.BossDefeated = boss.Defeated; + Dispatcher.UIThread.Post(() => + { + model.BossDefeated = boss.Defeated; + }); }; model.Clicked += (_, _) => tracker.BossTracker.MarkBossAsDefeated(boss, force: true); @@ -733,9 +760,12 @@ private void HintItem(Item item, bool isSpoiler) { rewardRegion.Reward.UpdatedRewardState += (_, _) => { - model.RewardImage = rewardRegion?.RewardType.GetCategories().Length > 0 - ? uiService.GetBossRewardPath(rewardRegion.MarkedReward) - : null; + Dispatcher.UIThread.Post(() => + { + model.RewardImage = rewardRegion?.RewardType.GetCategories().Length > 0 + ? uiService.GetBossRewardPath(rewardRegion.MarkedReward) + : null; + }); }; model.RewardSet += (_, args) => tracker.RewardTracker.SetAreaReward(rewardRegion, args.RewardType); diff --git a/src/TrackerCouncil.Smz3.UI/TrackerCouncil.Smz3.UI.csproj b/src/TrackerCouncil.Smz3.UI/TrackerCouncil.Smz3.UI.csproj index 425c7cb4..ba9f5157 100644 --- a/src/TrackerCouncil.Smz3.UI/TrackerCouncil.Smz3.UI.csproj +++ b/src/TrackerCouncil.Smz3.UI/TrackerCouncil.Smz3.UI.csproj @@ -6,7 +6,7 @@ true app.manifest true - 10.0.0-rc.1 + 10.0.0 SMZ3CasRandomizer Assets\smz3.ico $(MSBuildProjectName.Replace(" ", "_"))