refactor(Core/BG/AV): code cleanup (#1695)

This commit is contained in:
Francesco Borzì
2020-01-10 08:47:45 +01:00
committed by Stoabrogga
parent 55b23c53ad
commit 41946bbedb
3 changed files with 45 additions and 51 deletions
+2 -1
View File
@@ -489,7 +489,8 @@ class Battleground
void UpdateWorldState(uint32 Field, uint32 Value); void UpdateWorldState(uint32 Field, uint32 Value);
void UpdateWorldStateForPlayer(uint32 Field, uint32 Value, Player* player); void UpdateWorldStateForPlayer(uint32 Field, uint32 Value, Player* player);
void EndBattleground(TeamId winnerTeamId);
virtual void EndBattleground(TeamId winnerTeamId);
void BlockMovement(Player* player); void BlockMovement(Player* player);
void SendWarningToAll(uint32 entry, ...); void SendWarningToAll(uint32 entry, ...);
@@ -290,7 +290,7 @@ void BattlegroundAV::UpdateScore(TeamId teamId, int16 points)
Creature* BattlegroundAV::AddAVCreature(uint16 cinfoid, uint16 type) Creature* BattlegroundAV::AddAVCreature(uint16 cinfoid, uint16 type)
{ {
bool isStatic = false; bool isStatic = false;
Creature* creature = NULL; Creature* creature = nullptr;
ASSERT(type <= AV_CPLACE_MAX + AV_STATICCPLACE_MAX); ASSERT(type <= AV_CPLACE_MAX + AV_STATICCPLACE_MAX);
if (type >= AV_CPLACE_MAX) //static if (type >= AV_CPLACE_MAX) //static
{ {
@@ -314,7 +314,7 @@ Creature* BattlegroundAV::AddAVCreature(uint16 cinfoid, uint16 type)
BG_AV_CreaturePos[type][3]); BG_AV_CreaturePos[type][3]);
} }
if (!creature) if (!creature)
return NULL; return nullptr;
if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_A_CAPTAIN] || creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_H_CAPTAIN]) if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_A_CAPTAIN] || creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_H_CAPTAIN])
creature->SetRespawnDelay(RESPAWN_ONE_DAY); // TODO: look if this can be done by database + also add this for the wingcommanders creature->SetRespawnDelay(RESPAWN_ONE_DAY); // TODO: look if this can be done by database + also add this for the wingcommanders
@@ -550,12 +550,14 @@ void BattlegroundAV::HandleAreaTrigger(Player* player, uint32 trigger)
case 3331: case 3331:
//player->Unmount(); //player->Unmount();
break; break;
default:
break;
} }
} }
void BattlegroundAV::UpdatePlayerScore(Player* player, uint32 type, uint32 value, bool doAddHonor) void BattlegroundAV::UpdatePlayerScore(Player* player, uint32 type, uint32 value, bool doAddHonor)
{ {
BattlegroundScoreMap::iterator itr = PlayerScores.find(player->GetGUID()); auto itr = PlayerScores.find(player->GetGUID());
if (itr == PlayerScores.end()) if (itr == PlayerScores.end())
return; return;
@@ -744,7 +746,6 @@ void BattlegroundAV::ChangeMineOwner(uint8 mine, TeamId teamId, bool initial)
YellToAll(creature, LANG_BG_AV_S_MINE_BOSS_CLAIMS, LANG_UNIVERSAL); YellToAll(creature, LANG_BG_AV_S_MINE_BOSS_CLAIMS, LANG_UNIVERSAL);
} }
} }
return;
} }
bool BattlegroundAV::PlayerCanDoMineQuest(int32 GOId, TeamId teamId) bool BattlegroundAV::PlayerCanDoMineQuest(int32 GOId, TeamId teamId)
@@ -1180,15 +1181,14 @@ void BattlegroundAV::SendMineWorldStates(uint32 mine)
GraveyardStruct const* BattlegroundAV::GetClosestGraveyard(Player* player) GraveyardStruct const* BattlegroundAV::GetClosestGraveyard(Player* player)
{ {
GraveyardStruct const* pGraveyard = NULL; GraveyardStruct const* entry = nullptr;
GraveyardStruct const* entry = NULL;
float dist = 0; float dist = 0;
float minDist = 0; float minDist = 0;
float x, y; float x, y;
player->GetPosition(x, y); player->GetPosition(x, y);
pGraveyard = sGraveyard->GetGraveyard(BG_AV_GraveyardIds[player->GetTeamId()+7]); GraveyardStruct const* pGraveyard = sGraveyard->GetGraveyard(BG_AV_GraveyardIds[player->GetTeamId()+7]);
minDist = (pGraveyard->x - x)*(pGraveyard->x - x)+(pGraveyard->y - y)*(pGraveyard->y - y); minDist = (pGraveyard->x - x)*(pGraveyard->x - x)+(pGraveyard->y - y)*(pGraveyard->y - y);
for (uint8 i = BG_AV_NODES_FIRSTAID_STATION; i <= BG_AV_NODES_FROSTWOLF_HUT; ++i) for (uint8 i = BG_AV_NODES_FIRSTAID_STATION; i <= BG_AV_NODES_FROSTWOLF_HUT; ++i)
@@ -1556,8 +1556,8 @@ void BattlegroundAV::ResetBGSubclass()
bool BattlegroundAV::IsBothMinesControlledByTeam(TeamId teamId) const bool BattlegroundAV::IsBothMinesControlledByTeam(TeamId teamId) const
{ {
for (uint8 mine = 0; mine < 2; mine++) for (auto mine : m_Mine_Owner)
if (m_Mine_Owner[mine] != teamId) if (mine != teamId)
return false; return false;
return true; return true;
@@ -1582,10 +1582,7 @@ bool BattlegroundAV::IsAllTowersControlledAndCaptainAlive(TeamId teamId) const
if (m_Nodes[i].State != POINT_DESTROYED) if (m_Nodes[i].State != POINT_DESTROYED)
return false; return false;
if (!m_CaptainAlive[0]) return m_CaptainAlive[0];
return false;
return true;
} }
else if (teamId == TEAM_HORDE) else if (teamId == TEAM_HORDE)
{ {
@@ -1604,10 +1601,7 @@ bool BattlegroundAV::IsAllTowersControlledAndCaptainAlive(TeamId teamId) const
if (m_Nodes[i].State != POINT_DESTROYED) if (m_Nodes[i].State != POINT_DESTROYED)
return false; return false;
if (!m_CaptainAlive[1]) return m_CaptainAlive[1];
return false;
return true;
} }
return false; return false;
@@ -1544,8 +1544,8 @@ inline BG_AV_Nodes &operator++(BG_AV_Nodes &i){ return i = BG_AV_Nodes(i + 1); }
struct BattlegroundAVScore : public BattlegroundScore struct BattlegroundAVScore : public BattlegroundScore
{ {
BattlegroundAVScore(Player* player) : BattlegroundScore(player), GraveyardsAssaulted(0), GraveyardsDefended(0), TowersAssaulted(0), TowersDefended(0), MinesCaptured(0), LeadersKilled(0), SecondaryObjectives(0) { } explicit BattlegroundAVScore(Player* player) : BattlegroundScore(player), GraveyardsAssaulted(0), GraveyardsDefended(0), TowersAssaulted(0), TowersDefended(0), MinesCaptured(0), LeadersKilled(0), SecondaryObjectives(0) { }
~BattlegroundAVScore() { } ~BattlegroundAVScore() override { }
uint32 GraveyardsAssaulted; uint32 GraveyardsAssaulted;
uint32 GraveyardsDefended; uint32 GraveyardsDefended;
uint32 TowersAssaulted; uint32 TowersAssaulted;
@@ -1554,53 +1554,52 @@ struct BattlegroundAVScore : public BattlegroundScore
uint32 LeadersKilled; uint32 LeadersKilled;
uint32 SecondaryObjectives; uint32 SecondaryObjectives;
uint32 GetAttr1() const final override { return GraveyardsAssaulted; } uint32 GetAttr1() const final { return GraveyardsAssaulted; }
uint32 GetAttr2() const final override { return GraveyardsDefended; } uint32 GetAttr2() const final { return GraveyardsDefended; }
uint32 GetAttr3() const final override { return TowersAssaulted; } uint32 GetAttr3() const final { return TowersAssaulted; }
uint32 GetAttr4() const final override { return TowersDefended; } uint32 GetAttr4() const final { return TowersDefended; }
uint32 GetAttr5() const final override { return MinesCaptured; } uint32 GetAttr5() const final { return MinesCaptured; }
}; };
class BattlegroundAV : public Battleground class BattlegroundAV : public Battleground
{ {
public: public:
BattlegroundAV(); BattlegroundAV();
~BattlegroundAV(); ~BattlegroundAV() override;
/* inherited from BattlegroundClass */ /* inherited from BattlegroundClass */
void AddPlayer(Player* player); void AddPlayer(Player* player) override;
void StartingEventCloseDoors(); void StartingEventCloseDoors() override;
void StartingEventOpenDoors(); void StartingEventOpenDoors() override;
void RemovePlayer(Player* player); void RemovePlayer(Player* player) override;
void HandleAreaTrigger(Player* player, uint32 trigger); void HandleAreaTrigger(Player* player, uint32 trigger) override;
bool SetupBattleground(); bool SetupBattleground() override;
void ResetBGSubclass(); void ResetBGSubclass() override;
/*general stuff*/ /*general stuff*/
void UpdateScore(TeamId teamId, int16 points); void UpdateScore(TeamId teamId, int16 points);
void UpdatePlayerScore(Player* player, uint32 type, uint32 value, bool doAddHonor = true); void UpdatePlayerScore(Player* player, uint32 type, uint32 value, bool doAddHonor = true) override;
/*handlestuff*/ //these are functions which get called from extern /*handlestuff*/ //these are functions which get called from extern
void EventPlayerClickedOnFlag(Player* source, GameObject* gameObject); void EventPlayerClickedOnFlag(Player* source, GameObject* gameObject) override;
void HandleKillPlayer(Player* player, Player* killer); void HandleKillPlayer(Player* player, Player* killer) override;
void HandleKillUnit(Creature* unit, Player* killer); void HandleKillUnit(Creature* unit, Player* killer) override;
void HandleQuestComplete(uint32 questid, Player* player); void HandleQuestComplete(uint32 questid, Player* player);
bool PlayerCanDoMineQuest(int32 GOId, TeamId teamId); bool PlayerCanDoMineQuest(int32 GOId, TeamId teamId);
TeamId GetMineOwner(uint8 mine) { return m_Mine_Owner[mine]; }
void EndBattleground(TeamId winnerTeamId); void EndBattleground(TeamId winnerTeamId) override;
GraveyardStruct const* GetClosestGraveyard(Player* player); GraveyardStruct const* GetClosestGraveyard(Player* player) override;
/* achievement req. */ /* achievement req. */
bool IsBothMinesControlledByTeam(TeamId teamId) const; bool IsBothMinesControlledByTeam(TeamId teamId) const;
bool IsAllTowersControlledAndCaptainAlive(TeamId teamId) const; bool IsAllTowersControlledAndCaptainAlive(TeamId teamId) const;
TeamId GetPrematureWinner(); TeamId GetPrematureWinner() override;
private: private:
void PostUpdateImpl(uint32 diff); void PostUpdateImpl(uint32 diff) override;
/* Nodes occupying */ /* Nodes occupying */
void EventPlayerAssaultsPoint(Player* player, uint32 object); void EventPlayerAssaultsPoint(Player* player, uint32 object);
@@ -1624,7 +1623,7 @@ class BattlegroundAV : public Battleground
void ChangeMineOwner(uint8 mine, TeamId teamId, bool initial=false); void ChangeMineOwner(uint8 mine, TeamId teamId, bool initial=false);
/*worldstates*/ /*worldstates*/
void FillInitialWorldStates(WorldPacket& data); void FillInitialWorldStates(WorldPacket& data) override;
uint8 GetWorldStateType(uint8 state, TeamId teamId); uint8 GetWorldStateType(uint8 state, TeamId teamId);
void SendMineWorldStates(uint32 mine); void SendMineWorldStates(uint32 mine);
void UpdateNodeWorldState(BG_AV_Nodes node); void UpdateNodeWorldState(BG_AV_Nodes node);
@@ -1633,18 +1632,18 @@ class BattlegroundAV : public Battleground
Creature* AddAVCreature(uint16 cinfoid, uint16 type); Creature* AddAVCreature(uint16 cinfoid, uint16 type);
/*variables */ /*variables */
int32 m_Team_Scores[2]; int32 m_Team_Scores[2]{};
uint32 m_Team_QuestStatus[2][9]; //[x][y] x=team y=questcounter uint32 m_Team_QuestStatus[2][9]{}; //[x][y] x=team y=questcounter
BG_AV_NodeInfo m_Nodes[BG_AV_NODES_MAX]; BG_AV_NodeInfo m_Nodes[BG_AV_NODES_MAX]{};
TeamId m_Mine_Owner[2]; TeamId m_Mine_Owner[2]{};
int32 m_Mine_Timer; //ticks for both teams int32 m_Mine_Timer; //ticks for both teams
uint32 m_Mine_Reclaim_Timer[2]; uint32 m_Mine_Reclaim_Timer[2]{};
uint32 m_CaptainBuffTimer[2]; uint32 m_CaptainBuffTimer[2]{};
bool m_CaptainAlive[2]; bool m_CaptainAlive[2]{};
bool m_IsInformedNearVictory[2]; bool m_IsInformedNearVictory[2]{};
}; };
#endif #endif