Small BattlegroundScore refactoring

This commit is contained in:
hondacrx
2017-07-27 17:30:08 -04:00
parent 0aa7df2f53
commit 2ec2dcf043
9 changed files with 112 additions and 84 deletions
+14 -43
View File
@@ -515,7 +515,13 @@ namespace Game.BattleGrounds
return player;
}
public void SetTeamStartLoc(int teamIndex, Position pos)
public BattlegroundMap GetBgMap()
{
Contract.Assert(m_Map);
return m_Map;
}
public void SetTeamStartPosition(int teamIndex, Position pos)
{
Contract.Assert(teamIndex < TeamId.Neutral);
StartPosition[teamIndex] = pos;
@@ -1196,7 +1202,7 @@ namespace Game.BattleGrounds
return GetPlayersSize() < GetMaxPlayers();
}
public void BuildPvPLogDataPacket(out PVPLogData pvpLogData)
public virtual void BuildPvPLogDataPacket(out PVPLogData pvpLogData)
{
pvpLogData = new PVPLogData();
@@ -1205,57 +1211,25 @@ namespace Game.BattleGrounds
foreach (var score in PlayerScores)
{
PVPLogData.PlayerData playerData = new PVPLogData.PlayerData();
PVPLogData.PlayerData playerData;
playerData.PlayerGUID = score.Value.PlayerGuid;
playerData.Kills = score.Value.KillingBlows;
playerData.Faction = (byte)score.Value.TeamId;
if (score.Value.HonorableKills != 0 || score.Value.Deaths != 0 || score.Value.BonusHonor != 0)
{
playerData.Honor.HasValue = true;
PVPLogData.HonorData honorData = playerData.Honor.Value;
honorData.HonorKills = score.Value.HonorableKills;
honorData.Deaths = score.Value.Deaths;
honorData.ContributionPoints = score.Value.BonusHonor;
}
playerData.DamageDone = score.Value.DamageDone;
playerData.HealingDone = score.Value.HealingDone;
score.Value.BuildObjectivesBlock(playerData.Stats);
score.Value.BuildPvPLogPlayerDataPacket(out playerData);
Player player = Global.ObjAccessor.GetPlayer(GetBgMap(), playerData.PlayerGUID);
if (player)
{
playerData.IsInWorld = true;
playerData.PrimaryTalentTree = (int)player.GetUInt32Value(PlayerFields.CurrentSpecId);
playerData.PrimaryTalentTreeNameIndex = 0;
playerData.PlayerRace = player.GetRace();
playerData.Prestige = player.GetPrestigeLevel();
}
//if (isRated())
//{
// playerData.PreMatchRating;
// playerData.RatingChange;
// playerData.PreMatchMMR;
// playerData.MmrChange;
//}
pvpLogData.Players.Add(playerData);
}
if (isRated())
{
pvpLogData.Ratings.HasValue = true;
PVPLogData.RatingData ratingData = pvpLogData.Ratings.Value;
for (byte i = 0; i < SharedConst.BGTeamsCount; ++i)
{
ratingData.Postmatch[i] = _arenaTeamScores[i].NewRating;
ratingData.Prematch[i] = _arenaTeamScores[i].OldRating;
ratingData.PrematchMMR[i] = (int)_arenaTeamScores[i].MatchmakerRating;
}
}
pvpLogData.PlayerCount[0] = (sbyte)GetPlayersCountByTeam(Team.Horde);
pvpLogData.PlayerCount[1] = (sbyte)GetPlayersCountByTeam(Team.Alliance);
pvpLogData.PlayerCount[(int)BattlegroundTeamId.Horde] = (sbyte)GetPlayersCountByTeam(Team.Horde);
pvpLogData.PlayerCount[(int)BattlegroundTeamId.Alliance] = (sbyte)GetPlayersCountByTeam(Team.Alliance);
}
public virtual bool UpdatePlayerScore(Player player, ScoreType type, uint value, bool doAddHonor = true)
@@ -1907,7 +1881,6 @@ namespace Game.BattleGrounds
public uint GetMapId() { return m_MapId; }
public void SetBgMap(BattlegroundMap map) { m_Map = map; }
public BattlegroundMap GetBgMap() { return m_Map; }
BattlegroundMap FindBgMap() { return m_Map; }
public Position GetTeamStartPosition(int teamIndex)
@@ -2007,8 +1980,6 @@ namespace Game.BattleGrounds
public BGHonorMode m_HonorMode;
public uint[] m_TeamScores = new uint[SharedConst.BGTeamsCount];
public ArenaTeamScore[] _arenaTeamScores = new ArenaTeamScore[SharedConst.BGTeamsCount];
protected Dictionary<int, ObjectGuid> BgObjects = new Dictionary<int, ObjectGuid>();
protected Dictionary<int, ObjectGuid> BgCreatures = new Dictionary<int, ObjectGuid>();
+2 -2
View File
@@ -374,8 +374,8 @@ namespace Game.BattleGrounds
bg.SetMaxPlayersPerTeam(bgTemplate.MaxPlayersPerTeam);
bg.SetMinPlayers(bgTemplate.MinPlayersPerTeam * 2);
bg.SetMaxPlayers(bgTemplate.MaxPlayersPerTeam * 2);
bg.SetTeamStartLoc(TeamId.Alliance, bgTemplate.StartLocation[TeamId.Alliance]);
bg.SetTeamStartLoc(TeamId.Horde, bgTemplate.StartLocation[TeamId.Horde]);
bg.SetTeamStartPosition(TeamId.Alliance, bgTemplate.StartLocation[TeamId.Alliance]);
bg.SetTeamStartPosition(TeamId.Horde, bgTemplate.StartLocation[TeamId.Horde]);
bg.SetStartMaxDist(bgTemplate.StartMaxDist);
bg.SetLevelRange(bgTemplate.MinLevel, bgTemplate.MaxLevel);
bg.SetScriptId(bgTemplate.scriptId);
+19 -2
View File
@@ -19,6 +19,7 @@ using Framework.Constants;
using Game.Entities;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using Game.Network.Packets;
namespace Game.BattleGrounds
{
@@ -27,7 +28,7 @@ namespace Game.BattleGrounds
public BattlegroundScore(ObjectGuid playerGuid, Team team)
{
PlayerGuid = playerGuid;
TeamId = team == Team.Alliance ? 1 : 0;
TeamId = (int)(team == Team.Alliance ? BattlegroundTeamId.Alliance : BattlegroundTeamId.Horde);
}
public virtual void UpdateScore(ScoreType type, uint value)
@@ -58,7 +59,23 @@ namespace Game.BattleGrounds
}
}
public virtual void BuildObjectivesBlock(List<int> stats) { }
public virtual void BuildPvPLogPlayerDataPacket(out PVPLogData.PlayerData playerData)
{
playerData = new PVPLogData.PlayerData();
playerData.PlayerGUID = PlayerGuid;
playerData.Kills = KillingBlows;
playerData.Faction = (byte)TeamId;
if (HonorableKills != 0 || Deaths != 0 || BonusHonor != 0)
{
playerData.Honor.HasValue = true;
playerData.Honor.Value.HonorKills = HonorableKills;
playerData.Honor.Value.Deaths = Deaths;
playerData.Honor.Value.ContributionPoints = BonusHonor;
}
playerData.DamageDone = DamageDone;
playerData.HealingDone = HealingDone;
}
public virtual uint GetAttr1() { return 0; }
public virtual uint GetAttr2() { return 0; }
+5 -3
View File
@@ -863,10 +863,12 @@ namespace Game.BattleGrounds
}
}
public override void BuildObjectivesBlock(List<int> stats)
public override void BuildPvPLogPlayerDataPacket(out PVPLogData.PlayerData playerData)
{
stats.Add((int)BasesAssaulted);
stats.Add((int)BasesDefended);
base.BuildPvPLogPlayerDataPacket(out playerData);
playerData.Stats.Add(BasesAssaulted);
playerData.Stats.Add(BasesDefended);
}
public override uint GetAttr1() { return BasesAssaulted; }
+5 -2
View File
@@ -1021,9 +1021,12 @@ namespace Game.BattleGrounds
break;
}
}
public override void BuildObjectivesBlock(List<int> stats)
public override void BuildPvPLogPlayerDataPacket(out PVPLogData.PlayerData playerData)
{
stats.Add((int)FlagCaptures);
base.BuildPvPLogPlayerDataPacket(out playerData);
playerData.Stats.Add(FlagCaptures);
}
public override uint GetAttr1() { return FlagCaptures; }
+5 -3
View File
@@ -982,10 +982,12 @@ namespace Game.BattleGrounds
}
}
public override void BuildObjectivesBlock(List<int> stats)
public override void BuildPvPLogPlayerDataPacket(out PVPLogData.PlayerData playerData)
{
stats.Add((int)FlagCaptures);
stats.Add((int)FlagReturns);
base.BuildPvPLogPlayerDataPacket(out playerData);
playerData.Stats.Add(FlagCaptures);
playerData.Stats.Add(FlagReturns);
}
public override uint GetAttr1() { return FlagCaptures; }