From b05665660a2d47e8e0f75835fa3a09a49b8c4993 Mon Sep 17 00:00:00 2001 From: Spp Date: Wed, 7 Aug 2013 10:31:13 +0200 Subject: Core/Battleground: Get rid of dinamic casts BattlegroundXX outside Battleground scope by implementing generic functions (1/2) - HandleQuestComplete, CanActivateGO and IsSpellAllowed --- src/server/scripts/World/achievement_scripts.cpp | 32 +++++++++++++----------- 1 file changed, 18 insertions(+), 14 deletions(-) (limited to 'src/server/scripts') diff --git a/src/server/scripts/World/achievement_scripts.cpp b/src/server/scripts/World/achievement_scripts.cpp index 0243b08e80e..068333e347b 100644 --- a/src/server/scripts/World/achievement_scripts.cpp +++ b/src/server/scripts/World/achievement_scripts.cpp @@ -40,7 +40,7 @@ class achievement_resilient_victory : public AchievementCriteriaScript if (bg->GetTypeID(true) != BATTLEGROUND_AB) return false; - if (!bg->ToBattlegroundAB()->IsTeamScores500Disadvantage(source->GetTeam())) + if (!static_cast(bg)->IsTeamScores500Disadvantage(source->GetTeam())) return false; return true; @@ -54,14 +54,10 @@ class achievement_bg_control_all_nodes : public AchievementCriteriaScript bool OnCheck(Player* source, Unit* /*target*/) OVERRIDE { - Battleground* bg = source->GetBattleground(); - if (!bg) - return false; + if (Battleground* bg = source->GetBattleground()) + return bg->IsAllNodesControlledByTeam(source->GetTeam()); - if (!bg->IsAllNodesConrolledByTeam(source->GetTeam())) - return false; - - return true; + return false; } }; @@ -84,7 +80,7 @@ class achievement_save_the_day : public AchievementCriteriaScript if (bg->GetTypeID(true) != BATTLEGROUND_WS) return false; - if (bg->ToBattlegroundWS()->GetFlagState(player->GetTeam()) == BG_WS_FLAG_STATE_ON_BASE) + if (static_cast(bg)->GetFlagState(player->GetTeam()) == BG_WS_FLAG_STATE_ON_BASE) return true; } return false; @@ -209,7 +205,7 @@ class achievement_everything_counts : public AchievementCriteriaScript if (bg->GetTypeID(true) != BATTLEGROUND_AV) return false; - if (bg->ToBattlegroundAV()->IsBothMinesControlledByTeam(source->GetTeam())) + if (static_cast(bg)->IsBothMinesControlledByTeam(source->GetTeam())) return true; return false; @@ -230,7 +226,7 @@ class achievement_bg_av_perfection : public AchievementCriteriaScript if (bg->GetTypeID(true) != BATTLEGROUND_AV) return false; - if (bg->ToBattlegroundAV()->IsAllTowersControlledAndCaptainAlive(source->GetTeam())) + if (static_cast(bg)->IsAllTowersControlledAndCaptainAlive(source->GetTeam())) return true; return false; @@ -253,10 +249,14 @@ class achievement_bg_sa_defense_of_ancients : public AchievementCriteriaScript if (!battleground) return false; - if (player->GetTeamId() == battleground->ToBattlegroundSA()->Attackers) + BattlegroundSA* bg = static_cast(battleground); + if (!bg) + return false; + + if (player->GetTeamId() == bg->Attackers) return false; - if (!battleground->ToBattlegroundSA()->gateDestroyed) + if (!bg->gateDestroyed) return true; return false; @@ -308,7 +308,11 @@ class achievement_not_even_a_scratch : public AchievementCriteriaScript if (!battleground) return false; - if (battleground->ToBattlegroundSA()->notEvenAScratch(source->GetTeam())) + BattlegroundSA* bg = static_cast(battleground); + if (!bg) + return false; + + if (bg->notEvenAScratch(source->GetTeam())) return true; return false; -- cgit v1.2.3