diff --git a/Hearthstone Deck Tracker/Controls/Overlay/BattlegroundsMinions.xaml b/Hearthstone Deck Tracker/Controls/Overlay/BattlegroundsMinions.xaml index 806d16975..5dc877839 100644 --- a/Hearthstone Deck Tracker/Controls/Overlay/BattlegroundsMinions.xaml +++ b/Hearthstone Deck Tracker/Controls/Overlay/BattlegroundsMinions.xaml @@ -17,6 +17,7 @@ + _availableTiers = BattlegroundsUtils.GetAvailableTiers(null); + public void SetAvailableTiers(HashSet tiers) + { + _availableTiers = tiers; + for(var i = 0; i < 7; i++) + _tierIcons[i].SetAvailable(_availableTiers.Contains(i + 1)); + } + public void Reset() { + _availableTiers = BattlegroundsUtils.GetAvailableTiers(null); + for(var i = 0; i < 7; i++) + _tierIcons[i].SetAvailable(_availableTiers.Contains(i + 1)); Update(0, _db.Value.Races); } @@ -74,15 +85,16 @@ private void Update(int tier, IEnumerable availableRaces) ActiveTier = tier; foreach(var item in _tierIcons) item.Active = tier == item.Tier; - if(tier < 1 || tier > 6) + + if(tier < 1 || tier > 7) { - for(var i = 0; i < 6; i++) + for(var i = 0; i < 7; i++) _tierIcons[i].SetFaded(false); Groups.Clear(); UnavailableTypes.UnavailableTypesVisibility = System.Windows.Visibility.Collapsed; return; } - for(var i = 0; i < 6; i++) + for(var i = 0; i < 7; i++) _tierIcons[i].SetFaded(i != tier - 1); var resort = false; diff --git a/Hearthstone Deck Tracker/Controls/Overlay/BattlegroundsTier.xaml.cs b/Hearthstone Deck Tracker/Controls/Overlay/BattlegroundsTier.xaml.cs index 9a690a0e8..c939a31c2 100644 --- a/Hearthstone Deck Tracker/Controls/Overlay/BattlegroundsTier.xaml.cs +++ b/Hearthstone Deck Tracker/Controls/Overlay/BattlegroundsTier.xaml.cs @@ -57,7 +57,6 @@ public bool Active } private bool _faded; - public void SetFaded(bool faded) { if(faded == _faded || Active) @@ -66,6 +65,15 @@ public void SetFaded(bool faded) Update(true); } + private bool _available = true; + public void SetAvailable(bool available) + { + if(available == _available) + return; + _available = available; + Update(true); + } + private void Update(bool updateRemove) { if(updateRemove) @@ -77,7 +85,11 @@ private void Update(bool updateRemove) private double GetOpacity() { - if(Active || _hovering || !_faded) + if(Active) + return 1; + if(!_available) + return _hovering ? 0.6 : 0.3; + if(_hovering || !_faded) return 1; return 0.3; } diff --git a/Hearthstone Deck Tracker/Hearthstone/BattlegroundsUtils.cs b/Hearthstone Deck Tracker/Hearthstone/BattlegroundsUtils.cs index 389262f92..3bb5be6b5 100644 --- a/Hearthstone Deck Tracker/Hearthstone/BattlegroundsUtils.cs +++ b/Hearthstone Deck Tracker/Hearthstone/BattlegroundsUtils.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; using System.Linq; +using static HearthDb.CardIds; namespace Hearthstone_Deck_Tracker.Hearthstone { @@ -10,11 +11,11 @@ public static class BattlegroundsUtils { private static readonly Dictionary> _availableRacesCache = new Dictionary>(); - const string UntransformedArannaCardid = HearthDb.CardIds.NonCollectible.Neutral.ArannaStarseekerTavernBrawl1; - const string TransformedArannaCardid = HearthDb.CardIds.NonCollectible.Neutral.ArannaStarseeker_ArannaUnleashedTokenTavernBrawl; + const string UntransformedArannaCardid = NonCollectible.Neutral.ArannaStarseekerTavernBrawl1; + const string TransformedArannaCardid = NonCollectible.Neutral.ArannaStarseeker_ArannaUnleashedTokenTavernBrawl; - const string UntransformedQueenAzshara = HearthDb.CardIds.NonCollectible.Neutral.QueenAzsharaBATTLEGROUNDS; - const string TransformedQueenAzshara = HearthDb.CardIds.NonCollectible.Neutral.QueenAzshara_NagaQueenAzsharaToken; + const string UntransformedQueenAzshara = NonCollectible.Neutral.QueenAzsharaBATTLEGROUNDS; + const string TransformedQueenAzshara = NonCollectible.Neutral.QueenAzshara_NagaQueenAzsharaToken; private static readonly Dictionary TransformableHeroCardidTable = new Dictionary() { @@ -48,5 +49,13 @@ private static HashSet? AvailableRaces } public static string GetOriginalHeroId(string heroId) => TransformableHeroCardidTable.TryGetValue(heroId, out var mapped) ? mapped : heroId; + + public static HashSet GetAvailableTiers(string? anomalyCardId) => anomalyCardId switch + { + NonCollectible.Neutral.BigLeague => new HashSet { 3, 4, 5, 6 }, + NonCollectible.Neutral.LittleLeague => new HashSet { 1, 2, 3, 4 }, + NonCollectible.Invalid.SecretsOfNorgannon => new HashSet { 1, 2, 3, 4, 5, 6, 7 }, + _ => new HashSet { 1, 2, 3, 4, 5, 6 }, + }; } } diff --git a/Hearthstone Deck Tracker/Resources/tier-7.png b/Hearthstone Deck Tracker/Resources/tier-7.png new file mode 100644 index 000000000..bda1872e3 Binary files /dev/null and b/Hearthstone Deck Tracker/Resources/tier-7.png differ diff --git a/Hearthstone Deck Tracker/Windows/OverlayWindow.xaml.cs b/Hearthstone Deck Tracker/Windows/OverlayWindow.xaml.cs index c427420fd..06dca1811 100644 --- a/Hearthstone Deck Tracker/Windows/OverlayWindow.xaml.cs +++ b/Hearthstone Deck Tracker/Windows/OverlayWindow.xaml.cs @@ -452,6 +452,11 @@ internal void HideBattlegroundsHeroPanel() internal void ShowBgsTopBar() { TurnCounter.Visibility = Config.Instance.ShowBattlegroundsTurnCounter ? Visible : Collapsed; + + var anomalyDbfId = _game.GameEntity?.GetTag(GameTag.BACON_GLOBAL_ANOMALY_DBID); + var anomalyCardId = anomalyDbfId.HasValue ? Database.GetCardFromDbfId(anomalyDbfId.Value)?.Id : null; + BattlegroundsMinionsPanel.SetAvailableTiers(BattlegroundsUtils.GetAvailableTiers(anomalyCardId)); + BattlegroundsMinionsPanel.Visibility = Config.Instance.ShowBattlegroundsTiers ? Visible : Collapsed; _bgsTopBarBehavior.Show();