aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSpp <spp@jorge.gr>2011-09-29 10:21:33 +0200
committerSpp <spp@jorge.gr>2011-09-29 10:21:33 +0200
commit8b820baa7324d41df264f48e344d62584bff70f8 (patch)
tree4971b3df4ca7345646b5630e9c0e061ca22eb097
parent9e517c963b8769d152b408a1e82e5fda907b5417 (diff)
Core/Battleground: Use a general solution for MSG_BATTLEGROUND_PLAYER_POSITIONS
-rwxr-xr-xsrc/server/game/Battlegrounds/Battleground.h2
-rwxr-xr-xsrc/server/game/Battlegrounds/Zones/BattlegroundEY.h2
-rwxr-xr-xsrc/server/game/Battlegrounds/Zones/BattlegroundWS.cpp12
-rwxr-xr-xsrc/server/game/Battlegrounds/Zones/BattlegroundWS.h12
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/BattleGroundHandler.cpp77
5 files changed, 46 insertions, 59 deletions
diff --git a/src/server/game/Battlegrounds/Battleground.h b/src/server/game/Battlegrounds/Battleground.h
index 6e791127c33..bd83f2bcb48 100755
--- a/src/server/game/Battlegrounds/Battleground.h
+++ b/src/server/game/Battlegrounds/Battleground.h
@@ -573,6 +573,8 @@ class Battleground
void RewardXPAtKill(Player* killer, Player* victim);
bool CanAwardArenaPoints() const { return m_LevelMin >= BG_AWARD_ARENA_POINTS_MIN_LEVEL; }
+ virtual uint64 GetFlagPickerGUID(int32 /*team*/ = -1) const { return 0; }
+
protected:
// this method is called, when BG cannot spawn its own spirit guide, or something is wrong, It correctly ends Battleground
void EndNow();
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundEY.h b/src/server/game/Battlegrounds/Zones/BattlegroundEY.h
index 08a34f71ba1..ff40739f83d 100755
--- a/src/server/game/Battlegrounds/Zones/BattlegroundEY.h
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundEY.h
@@ -341,7 +341,7 @@ class BattlegroundEY : public Battleground
virtual void StartingEventOpenDoors();
/* BG Flags */
- uint64 GetFlagPickerGUID() const { return m_FlagKeeper; }
+ uint64 GetFlagPickerGUID(int32 /*team*/ = -1) const { return m_FlagKeeper; }
void SetFlagPicker(uint64 guid) { m_FlagKeeper = guid; }
bool IsFlagPickedup() const { return m_FlagKeeper != 0; }
uint8 GetFlagState() const { return m_FlagState; }
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp
index a567ecf7e33..b34ab0997ac 100755
--- a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp
@@ -359,7 +359,7 @@ void BattlegroundWS::EventPlayerDroppedFlag(Player* Source)
{
if (!this->IsHordeFlagPickedup())
return;
- if (GetHordeFlagPickerGUID() == Source->GetGUID())
+ if (GetFlagPickerGUID(BG_TEAM_HORDE) == Source->GetGUID())
{
SetHordeFlagPicker(0);
Source->RemoveAurasDueToSpell(BG_WS_SPELL_WARSONG_FLAG);
@@ -369,7 +369,7 @@ void BattlegroundWS::EventPlayerDroppedFlag(Player* Source)
{
if (!this->IsAllianceFlagPickedup())
return;
- if (GetAllianceFlagPickerGUID() == Source->GetGUID())
+ if (GetFlagPickerGUID(BG_TEAM_ALLIANCE) == Source->GetGUID())
{
SetAllianceFlagPicker(0);
Source->RemoveAurasDueToSpell(BG_WS_SPELL_SILVERWING_FLAG);
@@ -384,7 +384,7 @@ void BattlegroundWS::EventPlayerDroppedFlag(Player* Source)
{
if (!IsHordeFlagPickedup())
return;
- if (GetHordeFlagPickerGUID() == Source->GetGUID())
+ if (GetFlagPickerGUID(BG_TEAM_HORDE) == Source->GetGUID())
{
SetHordeFlagPicker(0);
Source->RemoveAurasDueToSpell(BG_WS_SPELL_WARSONG_FLAG);
@@ -401,7 +401,7 @@ void BattlegroundWS::EventPlayerDroppedFlag(Player* Source)
{
if (!IsAllianceFlagPickedup())
return;
- if (GetAllianceFlagPickerGUID() == Source->GetGUID())
+ if (GetFlagPickerGUID(BG_TEAM_ALLIANCE) == Source->GetGUID())
{
SetAllianceFlagPicker(0);
Source->RemoveAurasDueToSpell(BG_WS_SPELL_SILVERWING_FLAG);
@@ -629,12 +629,12 @@ void BattlegroundWS::HandleAreaTrigger(Player* Source, uint32 Trigger)
break;
case 3646: // Alliance Flag spawn
if (m_FlagState[BG_TEAM_HORDE] && !m_FlagState[BG_TEAM_ALLIANCE])
- if (GetHordeFlagPickerGUID() == Source->GetGUID())
+ if (GetFlagPickerGUID(BG_TEAM_HORDE) == Source->GetGUID())
EventPlayerCapturedFlag(Source);
break;
case 3647: // Horde Flag spawn
if (m_FlagState[BG_TEAM_ALLIANCE] && !m_FlagState[BG_TEAM_HORDE])
- if (GetAllianceFlagPickerGUID() == Source->GetGUID())
+ if (GetFlagPickerGUID(BG_TEAM_ALLIANCE) == Source->GetGUID())
EventPlayerCapturedFlag(Source);
break;
case 3649: // unk1
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundWS.h b/src/server/game/Battlegrounds/Zones/BattlegroundWS.h
index 5360a04a873..88c0766c461 100755
--- a/src/server/game/Battlegrounds/Zones/BattlegroundWS.h
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundWS.h
@@ -168,8 +168,12 @@ class BattlegroundWS : public Battleground
virtual void StartingEventOpenDoors();
/* BG Flags */
- uint64 GetAllianceFlagPickerGUID() const { return m_FlagKeepers[BG_TEAM_ALLIANCE]; }
- uint64 GetHordeFlagPickerGUID() const { return m_FlagKeepers[BG_TEAM_HORDE]; }
+ uint64 GetFlagPickerGUID(int32 team) const
+ {
+ if (team == BG_TEAM_ALLIANCE || team == BG_TEAM_HORDE)
+ return m_FlagKeepers[BG_TEAM_ALLIANCE];
+ return 0;
+ }
void SetAllianceFlagPicker(uint64 guid) { m_FlagKeepers[BG_TEAM_ALLIANCE] = guid; }
void SetHordeFlagPicker(uint64 guid) { m_FlagKeepers[BG_TEAM_HORDE] = guid; }
bool IsAllianceFlagPickedup() const { return m_FlagKeepers[BG_TEAM_ALLIANCE] != 0; }
@@ -177,10 +181,6 @@ class BattlegroundWS : public Battleground
void RespawnFlag(uint32 Team, bool captured);
void RespawnFlagAfterDrop(uint32 Team);
uint8 GetFlagState(uint32 team) { return m_FlagState[GetTeamIndexByTeamId(team)]; }
- void AddTimedAura(uint32 aura);
- void RemoveTimedAura(uint32 aura);
- bool IsBrutalTimerDone;
- bool IsForceTimerDone;
/* Battleground Events */
virtual void EventPlayerDroppedFlag(Player* Source);
diff --git a/src/server/game/Server/Protocol/Handlers/BattleGroundHandler.cpp b/src/server/game/Server/Protocol/Handlers/BattleGroundHandler.cpp
index 1810016d22e..efdcb5f4e1e 100755
--- a/src/server/game/Server/Protocol/Handlers/BattleGroundHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/BattleGroundHandler.cpp
@@ -25,7 +25,6 @@
#include "ArenaTeam.h"
#include "BattlegroundMgr.h"
-#include "BattlegroundWS.h"
#include "Battleground.h"
#include "Chat.h"
#include "Language.h"
@@ -252,56 +251,42 @@ void WorldSession::HandleBattlegroundPlayerPositionsOpcode(WorldPacket & /*recv_
if (!bg) // can't be received if player not in battleground
return;
- switch(bg->GetTypeID(true))
- {
- case BATTLEGROUND_WS:
- {
- uint32 count = 0;
+ uint32 count = 0;
+ Player* aplr = NULL;
+ Player* hplr = NULL;
- Player* aplr = ObjectAccessor::FindPlayer(((BattlegroundWS*)bg)->GetAllianceFlagPickerGUID());
- if (aplr)
- ++count;
-
- Player* hplr = ObjectAccessor::FindPlayer(((BattlegroundWS*)bg)->GetHordeFlagPickerGUID());
- if (hplr)
- ++count;
+ if (uint64 guid = bg->GetFlagPickerGUID(BG_TEAM_ALLIANCE))
+ {
+ aplr = ObjectAccessor::FindPlayer(guid);
+ if (aplr)
+ ++count;
+ }
- WorldPacket data(MSG_BATTLEGROUND_PLAYER_POSITIONS, 4 + 4 + 16 * count);
- data << 0;
- data << count;
- if (aplr)
- {
- data << uint64(aplr->GetGUID());
- data << float(aplr->GetPositionX());
- data << float(aplr->GetPositionY());
- }
+ if (uint64 guid = bg->GetFlagPickerGUID(BG_TEAM_HORDE))
+ {
+ hplr = ObjectAccessor::FindPlayer(guid);
+ if (hplr)
+ ++count;
+ }
- if (hplr)
- {
- data << uint64(hplr->GetGUID());
- data << float(hplr->GetPositionX());
- data << float(hplr->GetPositionY());
- }
+ WorldPacket data(MSG_BATTLEGROUND_PLAYER_POSITIONS, 4 + 4 + 16 * count);
+ data << 0;
+ data << count;
+ if (aplr)
+ {
+ data << uint64(aplr->GetGUID());
+ data << float(aplr->GetPositionX());
+ data << float(aplr->GetPositionY());
+ }
- SendPacket(&data);
- break;
- }
- case BATTLEGROUND_EY:
- //TODO : fix me!
- break;
- case BATTLEGROUND_AB:
- case BATTLEGROUND_AV:
- {
- WorldPacket data(MSG_BATTLEGROUND_PLAYER_POSITIONS, (4+4));
- data << uint32(0);
- data << uint32(0);
- SendPacket(&data);
- break;
- }
- default:
- //maybe it is sent also in arena - do nothing
- break;
+ if (hplr)
+ {
+ data << uint64(hplr->GetGUID());
+ data << float(hplr->GetPositionX());
+ data << float(hplr->GetPositionY());
}
+
+ SendPacket(&data);
}
void WorldSession::HandlePVPLogDataOpcode(WorldPacket & /*recv_data*/)