diff --git a/HSReflection/Reflection.cs b/HSReflection/Reflection.cs index 6975b0b..2c2f281 100644 --- a/HSReflection/Reflection.cs +++ b/HSReflection/Reflection.cs @@ -25,19 +25,14 @@ private static Dictionary GetQuestRecordsInternal() dynamic? questPoolState = Services.QuestManager["m_questPoolState"]; - dynamic? quests = Services.GameDbf["Quest"]?["m_recordsById"]; + dynamic? quests = Services.GameDbf["Quest"]?["m_records"]; if (quests == null) return questRecords; - dynamic questKeys = quests["keySlots"]; + dynamic questEntries = quests["_items"]; - foreach (dynamic? questKey in questKeys) + foreach (dynamic quest in questEntries) { - if (questKey == null) continue; - - dynamic? quest = Map.GetValue(quests, questKey); - if (quest == null) continue; - int questPoolId = quest["m_questPoolId"]; dynamic? questPoolStateEntry = questPoolState == null @@ -46,7 +41,7 @@ private static Dictionary GetQuestRecordsInternal() DynamicUtil.TryCast(Map.GetValue(questPoolState, questPoolId) ?? 0) ?? 0 ); - questRecords.Add(questKey, new QuestRecord() + questRecords.Add(quest["m_ID"], new QuestRecord() { CanAbandon = quest["m_canAbandon"], Description = GetLocalization(quest["m_description"]), diff --git a/QuestOverlayPlugin/Overlay/QuestListButton.xaml.cs b/QuestOverlayPlugin/Overlay/QuestListButton.xaml.cs index dd35c1c..930cc3d 100644 --- a/QuestOverlayPlugin/Overlay/QuestListButton.xaml.cs +++ b/QuestOverlayPlugin/Overlay/QuestListButton.xaml.cs @@ -39,12 +39,12 @@ private async void OnMouseEnter(object sender, MouseEventArgs e) return; if (IsBattlegrounds) { - Plugin.Instance.UpdateBattlegroundsQuestList(); + Plugin.Instance.BattlegroundsQuestListVM.UpdateAsync(); Plugin.Instance.ShowBattlegroundsQuests(); } else { - Plugin.Instance.UpdateQuestList(); + Plugin.Instance.QuestListVM.UpdateAsync(); Plugin.Instance.ShowQuests(); } } diff --git a/QuestOverlayPlugin/Plugin.cs b/QuestOverlayPlugin/Plugin.cs index d20a8ea..93b2b31 100644 --- a/QuestOverlayPlugin/Plugin.cs +++ b/QuestOverlayPlugin/Plugin.cs @@ -155,9 +155,12 @@ public void OnLoad() GameEvents.OnInMenu.Add(Update); GameEvents.OnInMenu.Add(OnGameStart); + GameEvents.OnInMenu.Add(UpdateQuestWindow); GameEvents.OnGameEnd.Add(Update); + GameEvents.OnGameEnd.Add(UpdateQuestWindow); GameEvents.OnModeChanged.Add(Update); GameEvents.OnModeChanged.Add(OnGameStart); + GameEvents.OnModeChanged.Add(UpdateQuestWindow); Watchers.ExperienceWatcher.NewExperienceHandler += UpdateEventHandler; if (Core.Game.IsRunning) Update(); if (Core.Game.IsRunning) OnGameStart(); @@ -165,10 +168,14 @@ public void OnLoad() Extractor = new Extractor( Path.Combine(Config.Instance.ConfigDir, "Plugins", "HearthstoneQuestOverlay", "TextureExtractor"), Core.Game.MetaData.HearthstoneBuild.ToString()); - -#pragma warning disable CS4014 + Extractor.ExtractAsync(CreateBundlePath(QUEST_ICONS_LOC)); -#pragma warning restore CS4014 + } + + private void UpdateQuestWindow(Mode mode) => UpdateQuestWindow(); + private void UpdateQuestWindow() + { + if (Settings.ShowPopupWindow) QuestListWindowVM.UpdateAsync(); } private void OnGameStart(Mode mode) => OnGameStart(); @@ -199,10 +206,8 @@ private void OnGameExit(object sender, EventArgs e) } } - public static string CreateBundlePath(string bundleName) - { - return Path.Combine(Config.Instance.HearthstoneDirectory, @"Data\Win", bundleName + ".unity3d"); - } + public static string CreateBundlePath(string bundleName) => + Path.Combine(Config.Instance.HearthstoneDirectory, @"Data\Win", bundleName + ".unity3d"); private void InitSettings() { @@ -254,6 +259,8 @@ public void OnUnload() Watchers.ExperienceWatcher.NewExperienceHandler -= UpdateEventHandler; RemoveOverlay(); + _questListWindow.Shutdown(); + _questListWindowRT?.Dispose(); } public void OnButtonPress() @@ -352,30 +359,7 @@ internal void HideBattlegroundsQuestsButton() _battlegroundsQuestListButtonBehavior.Hide(); } - internal void UpdateQuestList(bool force = false) - { - ((QuestListViewModel)_questListView.DataContext).Update(force); - } - - internal void UpdateBattlegroundsQuestList(bool force = false) - { - ((QuestListViewModel)_battlegroundsQuestListView.DataContext).Update(force); - } - - internal void ForceNextQuestUpdate() - { - ((QuestListViewModel)_questListView.DataContext).ForceNext = true; - } - - internal void ForceNextBattlegroundsQuestUpdate() - { - ((QuestListViewModel)_battlegroundsQuestListView.DataContext).ForceNext = true; - } - - internal void ForceNextQuestWindowUpdate() - { - ((QuestListViewModel)_questListWindow.DataContext).ForceNext = true; - } + internal void ForceNextQuestWindowUpdate() => QuestListWindowVM.ForceNext = true; internal void ShowQuests() { @@ -412,8 +396,8 @@ internal static void Update() { Instance.ShowOrHideQuestsButton(); Instance.ShowOrHideBattlegroundsQuestsButton(); - Instance.ForceNextQuestUpdate(); - Instance.ForceNextBattlegroundsQuestUpdate(); - Instance.ForceNextQuestWindowUpdate(); + Instance.QuestListVM.ForceNext = true; + Instance.BattlegroundsQuestListVM.ForceNext = true; + Instance.QuestListWindowVM.ForceNext = true; } } \ No newline at end of file diff --git a/QuestOverlayPlugin/QuestOverlayPlugin.csproj b/QuestOverlayPlugin/QuestOverlayPlugin.csproj index fcf42c4..2b9df88 100644 --- a/QuestOverlayPlugin/QuestOverlayPlugin.csproj +++ b/QuestOverlayPlugin/QuestOverlayPlugin.csproj @@ -22,6 +22,7 @@ enable true true + 1701;1702;4014 diff --git a/QuestOverlayPlugin/Windows/QuestListWindow.xaml.cs b/QuestOverlayPlugin/Windows/QuestListWindow.xaml.cs index c972e3a..49cd876 100644 --- a/QuestOverlayPlugin/Windows/QuestListWindow.xaml.cs +++ b/QuestOverlayPlugin/Windows/QuestListWindow.xaml.cs @@ -9,14 +9,12 @@ namespace QuestOverlayPlugin.Windows; public partial class QuestListWindow : MetroWindow { private bool _appIsClosing; - public QuestListViewModel QuestListViewModelVM; public QuestListWindow(QuestListViewModel questListViewModel) { InitializeComponent(); DataContext = questListViewModel; - QuestListViewModelVM = questListViewModel; } protected override void OnClosing(CancelEventArgs e) @@ -35,7 +33,7 @@ internal void Shutdown() private async void QuestListWindow_OnActivated(object sender, EventArgs e) { - await QuestListViewModelVM.UpdateAsync(); + await Plugin.Instance.QuestListWindowVM.UpdateAsync(); Topmost = true; } @@ -47,7 +45,7 @@ private void QuestListWindow_OnDeactivated(object sender, EventArgs e) private async void QuestListWindow_OnLoaded(object sender, RoutedEventArgs e) { - await QuestListViewModelVM.UpdateAsync(); + await Plugin.Instance.QuestListWindowVM.UpdateAsync(); UpdateScaling(); } diff --git a/Version.props b/Version.props index d073804..2c806b8 100644 --- a/Version.props +++ b/Version.props @@ -1,5 +1,5 @@ - 1.5.1 + 1.5.2 \ No newline at end of file