From 89f6d9adcda4561894deed0f62fda253a9d69734 Mon Sep 17 00:00:00 2001 From: Ethan Moffat Date: Mon, 4 Apr 2022 22:41:58 -0700 Subject: [PATCH] Make sure stale shop data isn't shown when opening new shop after previous shop has been opened --- EOLib/Domain/Interact/Shop/ShopDataRepository.cs | 6 +++--- EndlessClient/Dialogs/Actions/InGameDialogActions.cs | 10 +++++++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/EOLib/Domain/Interact/Shop/ShopDataRepository.cs b/EOLib/Domain/Interact/Shop/ShopDataRepository.cs index b1db3f9df..c7b024d13 100644 --- a/EOLib/Domain/Interact/Shop/ShopDataRepository.cs +++ b/EOLib/Domain/Interact/Shop/ShopDataRepository.cs @@ -3,7 +3,7 @@ namespace EOLib.Domain.Interact.Shop { - public interface IShopDataRepository + public interface IShopDataRepository : IResettable { int ShopID { get; set; } @@ -14,7 +14,7 @@ public interface IShopDataRepository List CraftItems { get; set; } } - public interface IShopDataProvider + public interface IShopDataProvider : IResettable { int ShopID { get; } @@ -26,7 +26,7 @@ public interface IShopDataProvider } [AutoMappedType(IsSingleton = true)] - public class ShopDataRepository : IShopDataProvider, IShopDataRepository, IResettable + public class ShopDataRepository : IShopDataProvider, IShopDataRepository { public int ShopID { get; set; } public string ShopName { get; set; } diff --git a/EndlessClient/Dialogs/Actions/InGameDialogActions.cs b/EndlessClient/Dialogs/Actions/InGameDialogActions.cs index 7772524bb..c0d4e9d4e 100644 --- a/EndlessClient/Dialogs/Actions/InGameDialogActions.cs +++ b/EndlessClient/Dialogs/Actions/InGameDialogActions.cs @@ -1,6 +1,7 @@ using AutomaticTypeMapper; using EndlessClient.Dialogs.Factories; using EOLib.Domain.Character; +using EOLib.Domain.Interact.Shop; using Optional; namespace EndlessClient.Dialogs.Actions @@ -11,16 +12,19 @@ public class InGameDialogActions : IInGameDialogActions private readonly IFriendIgnoreListDialogFactory _friendIgnoreListDialogFactory; private readonly IPaperdollDialogFactory _paperdollDialogFactory; private readonly IActiveDialogRepository _activeDialogRepository; + private readonly IShopDataRepository _shopDataRepository; private readonly IShopDialogFactory _shopDialogFactory; public InGameDialogActions(IFriendIgnoreListDialogFactory friendIgnoreListDialogFactory, IPaperdollDialogFactory paperdollDialogFactory, IActiveDialogRepository activeDialogRepository, + IShopDataRepository shopDataRepository, IShopDialogFactory shopDialogFactory) { _friendIgnoreListDialogFactory = friendIgnoreListDialogFactory; _paperdollDialogFactory = paperdollDialogFactory; _activeDialogRepository = activeDialogRepository; + _shopDataRepository = shopDataRepository; _shopDialogFactory = shopDialogFactory; } @@ -65,7 +69,11 @@ public void ShowShopDialog() _activeDialogRepository.ShopDialog.MatchNone(() => { var dlg = _shopDialogFactory.Create(); - dlg.DialogClosed += (_, _) => _activeDialogRepository.ShopDialog = Option.None(); + dlg.DialogClosed += (_, _) => + { + _activeDialogRepository.ShopDialog = Option.None(); + _shopDataRepository.ResetState(); + }; _activeDialogRepository.ShopDialog = Option.Some(dlg); dlg.Show();