Skip to content

Commit 0adca5b

Browse files
OvahlordXenphis
authored andcommitted
Core/Player: Modernize some pointers and arrays in player class (#29098)
1 parent 3e5f11f commit 0adca5b

2 files changed

Lines changed: 32 additions & 55 deletions

File tree

src/server/game/Entities/Player/Player.cpp

Lines changed: 18 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ Player::Player(WorldSession* session): Unit(true)
189189

190190
m_movie = 0;
191191

192-
PlayerTalkClass = new PlayerMenu(GetSession());
192+
PlayerTalkClass = std::make_unique<PlayerMenu>(GetSession());
193193
m_currentBuybackSlot = BUYBACK_SLOT_START;
194194

195195
m_DailyQuestChanged = false;
@@ -202,11 +202,10 @@ Player::Player(WorldSession* session): Unit(true)
202202
SetLastRuneGraceTimer(i, 0);
203203
}
204204

205-
for (uint8 i = 0; i < MAX_TIMERS; i++)
206-
m_MirrorTimer[i] = DISABLED_MIRROR_TIMER;
207-
205+
m_MirrorTimer.fill(DISABLED_MIRROR_TIMER);
208206
m_MirrorTimerFlags = UNDERWATER_NONE;
209207
m_MirrorTimerFlagsLast = UNDERWATER_NONE;
208+
210209
m_hostileReferenceCheckTimer = 0;
211210
m_drunkTimer = 0;
212211
m_deathTimer = 0;
@@ -222,8 +221,7 @@ Player::Player(WorldSession* session): Unit(true)
222221

223222
m_logintime = GameTime::GetGameTime();
224223
m_Last_tick = m_logintime;
225-
m_Played_time[PLAYED_TIME_TOTAL] = 0;
226-
m_Played_time[PLAYED_TIME_LEVEL] = 0;
224+
m_Played_time = { };
227225
m_WeaponProficiency = 0;
228226
m_ArmorProficiency = 0;
229227
m_canParry = false;
@@ -265,14 +263,9 @@ Player::Player(WorldSession* session): Unit(true)
265263

266264
_talentMgr = new PlayerTalentInfo();
267265

268-
for (uint8 i = 0; i < BASEMOD_END; ++i)
269-
{
270-
m_auraBaseFlatMod[i] = 0.0f;
271-
m_auraBasePctMod[i] = 1.0f;
272-
}
273-
274-
for (uint8 i = 0; i < MAX_COMBAT_RATING; i++)
275-
m_baseRatingValue[i] = 0;
266+
m_auraBaseFlatMod.fill(0.0f);
267+
m_auraBasePctMod.fill(1.0f);
268+
m_baseRatingValue = { };
276269

277270
m_baseSpellPower = 0;
278271
m_baseFeralAP = 0;
@@ -298,12 +291,8 @@ Player::Player(WorldSession* session): Unit(true)
298291

299292
m_contestedPvPTimer = 0;
300293

301-
m_declinedname = nullptr;
302-
303294
m_isActive = true;
304295

305-
m_runes = nullptr;
306-
307296
m_lastFallTime = 0;
308297
m_lastFallZ = 0;
309298

@@ -317,8 +306,7 @@ Player::Player(WorldSession* session): Unit(true)
317306
m_ChampioningFaction = 0;
318307

319308
m_healthFraction = 0.0f;
320-
for (uint8 i = 0; i < MAX_POWERS; ++i)
321-
m_powerFraction[i] = 0;
309+
m_powerFraction.fill(0.0f);
322310

323311
isDebugAreaTriggers = false;
324312

@@ -332,10 +320,10 @@ Player::Player(WorldSession* session): Unit(true)
332320
healthBeforeDuel = 0;
333321
manaBeforeDuel = 0;
334322

335-
_cinematicMgr = new CinematicMgr(this);
323+
_cinematicMgr = std::make_unique<CinematicMgr>(this);
336324

337-
m_achievementMgr = new AchievementMgr(this);
338-
m_reputationMgr = new ReputationMgr(this);
325+
m_achievementMgr = std::make_unique<AchievementMgr>(this);
326+
m_reputationMgr = std::make_unique<ReputationMgr>(this);
339327
}
340328

341329
Player::~Player()
@@ -356,17 +344,9 @@ Player::~Player()
356344
for (ItemMap::iterator iter = mMitems.begin(); iter != mMitems.end(); ++iter)
357345
delete iter->second; //if item is duplicated... then server may crash ... but that item should be deallocated
358346

359-
delete PlayerTalkClass;
360-
361347
for (size_t x = 0; x < ItemSetEff.size(); x++)
362348
delete ItemSetEff[x];
363349

364-
delete m_declinedname;
365-
delete m_runes;
366-
delete m_achievementMgr;
367-
delete m_reputationMgr;
368-
delete _cinematicMgr;
369-
370350
sWorld->DecreasePlayerCount();
371351
}
372352

@@ -13896,10 +13876,8 @@ void Player::SendNewItem(Item* item, uint32 count, bool received, bool created,
1389613876

1389713877
void Player::PrepareGossipMenu(WorldObject* source, uint32 menuId /*= 0*/, bool showQuests /*= false*/)
1389813878
{
13899-
PlayerMenu* menu = PlayerTalkClass;
13900-
menu->ClearMenus();
13901-
13902-
menu->GetGossipMenu().SetMenuId(menuId);
13879+
PlayerTalkClass->ClearMenus();
13880+
PlayerTalkClass->GetGossipMenu().SetMenuId(menuId);
1390313881

1390413882
GossipMenuItemsMapBounds menuItemBounds = sObjectMgr->GetGossipMenuItemsMapBounds(menuId);
1390513883

@@ -13983,7 +13961,7 @@ void Player::PrepareGossipMenu(WorldObject* source, uint32 menuId /*= 0*/, bool
1398313961
if (!trainer || !trainer->IsTrainerValidForPlayer(this))
1398413962
{
1398513963
TC_LOG_ERROR("sql.sql", "GOSSIP_OPTION_TRAINER:: Player {} {} requested wrong gossip menu: {} at Creature: {} (Entry: {})",
13986-
GetName(), GetGUID().ToString(), menu->GetGossipMenu().GetMenuId(), creature->GetName(), creature->GetEntry());
13964+
GetName(), GetGUID().ToString(), PlayerTalkClass->GetGossipMenu().GetMenuId(), creature->GetName(), creature->GetEntry());
1398713965
canTalk = false;
1398813966
}
1398913967
[[fallthrough]];
@@ -14054,8 +14032,8 @@ void Player::PrepareGossipMenu(WorldObject* source, uint32 menuId /*= 0*/, bool
1405414032
}
1405514033
}
1405614034

14057-
menu->GetGossipMenu().AddMenuItem(itr->second.OptionID, itr->second.OptionIcon, strOptionText, 0, itr->second.OptionType, strBoxText, itr->second.BoxMoney, itr->second.BoxCoded);
14058-
menu->GetGossipMenu().AddGossipMenuItemData(itr->second.OptionID, itr->second.ActionMenuID, itr->second.ActionPoiID);
14035+
PlayerTalkClass->GetGossipMenu().AddMenuItem(itr->second.OptionID, itr->second.OptionIcon, strOptionText, 0, itr->second.OptionType, strBoxText, itr->second.BoxMoney, itr->second.BoxCoded);
14036+
PlayerTalkClass->GetGossipMenu().AddGossipMenuItemData(itr->second.OptionID, itr->second.ActionMenuID, itr->second.ActionPoiID);
1405914037
}
1406014038
}
1406114039
}
@@ -16735,8 +16713,7 @@ void Player::_LoadDeclinedNames(PreparedQueryResult result)
1673516713
if (!result)
1673616714
return;
1673716715

16738-
delete m_declinedname;
16739-
m_declinedname = new DeclinedName;
16716+
m_declinedname = std::make_unique<DeclinedName>();
1674016717
for (uint8 i = 0; i < MAX_DECLINED_NAME_CASES; ++i)
1674116718
m_declinedname->name[i] = (*result)[i].GetString();
1674216719
}
@@ -24482,7 +24459,7 @@ void Player::InitRunes()
2448224459
if (GetClass() != CLASS_DEATH_KNIGHT)
2448324460
return;
2448424461

24485-
m_runes = new Runes;
24462+
m_runes = std::make_unique<Runes>();
2448624463

2448724464
m_runes->runeState = 0;
2448824465
m_runes->lastUsedRune = RUNE_BLOOD;

src/server/game/Entities/Player/Player.h

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1003,7 +1003,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
10031003
// Played Time Stuff
10041004
time_t m_logintime;
10051005
time_t m_Last_tick;
1006-
uint32 m_Played_time[MAX_PLAYED_TIME_INDEX];
1006+
std::array<uint32, MAX_PLAYED_TIME_INDEX> m_Played_time;
10071007
uint32 GetTotalPlayedTime() const { return m_Played_time[PLAYED_TIME_TOTAL]; }
10081008
uint32 GetLevelPlayedTime() const { return m_Played_time[PLAYED_TIME_LEVEL]; }
10091009

@@ -1186,7 +1186,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
11861186
TradeData* GetTradeData() const { return m_trade; }
11871187
void TradeCancel(bool sendback, TradeStatus status = TRADE_STATUS_TRADE_CANCELED);
11881188

1189-
CinematicMgr* GetCinematicMgr() const { return _cinematicMgr; }
1189+
CinematicMgr* GetCinematicMgr() const { return _cinematicMgr.get(); }
11901190

11911191
void UpdateEnchantTime(uint32 time);
11921192
void UpdateSoulboundTradeItems();
@@ -1945,7 +1945,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
19451945

19461946
void SendAurasForTarget(Unit* target, bool force = false) const;
19471947

1948-
PlayerMenu* PlayerTalkClass;
1948+
std::unique_ptr<PlayerMenu> PlayerTalkClass;
19491949
std::vector<ItemSetEffect*> ItemSetEff;
19501950

19511951
void SendLoot(ObjectGuid guid, LootType loot_type);
@@ -2179,7 +2179,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
21792179

21802180
bool isAllowedToLoot(Creature const* creature) const;
21812181

2182-
DeclinedName const* GetDeclinedNames() const { return m_declinedname; }
2182+
DeclinedName const* GetDeclinedNames() const { return m_declinedname.get(); }
21832183
uint8 GetRunesState() const { return m_runes->runeState; }
21842184
RuneType GetBaseRune(uint8 index) const { return RuneType(m_runes->runes[index].BaseRune); }
21852185
RuneType GetCurrentRune(uint8 index) const { return RuneType(m_runes->runes[index].CurrentRune); }
@@ -2246,7 +2246,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
22462246
uint32 m_regenTimerCount;
22472247
uint32 m_foodEmoteTimerCount;
22482248
float m_healthFraction;
2249-
float m_powerFraction[MAX_POWERS];
2249+
std::array<float, MAX_POWERS> m_powerFraction;
22502250
uint32 m_contestedPvPTimer;
22512251

22522252
/*********************************************************/
@@ -2387,9 +2387,9 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
23872387

23882388
ActionButtonList m_actionButtons;
23892389

2390-
float m_auraBaseFlatMod[BASEMOD_END];
2391-
float m_auraBasePctMod[BASEMOD_END];
2392-
int16 m_baseRatingValue[MAX_COMBAT_RATING];
2390+
std::array<float, BASEMOD_END> m_auraBaseFlatMod;
2391+
std::array<float, BASEMOD_END> m_auraBasePctMod;
2392+
std::array<int16, MAX_COMBAT_RATING> m_baseRatingValue;
23932393
uint32 m_baseSpellPower;
23942394
uint32 m_baseFeralAP;
23952395
uint32 m_baseManaRegen;
@@ -2470,8 +2470,8 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
24702470
// Recall position
24712471
WorldLocation m_recall_location;
24722472

2473-
DeclinedName *m_declinedname;
2474-
Runes *m_runes;
2473+
std::unique_ptr<DeclinedName> m_declinedname;
2474+
std::unique_ptr<Runes> m_runes;
24752475
EquipmentSetContainer _equipmentSets;
24762476

24772477
bool CanAlwaysSee(WorldObject const* obj) const override;
@@ -2492,7 +2492,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
24922492
Item* _StoreItem(uint16 pos, Item* pItem, uint32 count, bool clone, bool update);
24932493
Item* _LoadItem(CharacterDatabaseTransaction trans, uint32 zoneId, uint32 timeDiff, Field* fields);
24942494

2495-
CinematicMgr* _cinematicMgr;
2495+
std::unique_ptr<CinematicMgr> _cinematicMgr;
24962496

24972497
GuidSet m_refundableItems;
24982498
void SendRefundInfo(Item* item);
@@ -2517,7 +2517,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
25172517
uint32 m_lastFallTime;
25182518
float m_lastFallZ;
25192519

2520-
int32 m_MirrorTimer[MAX_TIMERS];
2520+
std::array<int32, MAX_TIMERS> m_MirrorTimer;
25212521
uint8 m_MirrorTimerFlags;
25222522
uint8 m_MirrorTimerFlagsLast;
25232523

@@ -2541,8 +2541,8 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
25412541
uint32 m_temporaryUnsummonedPetNumber;
25422542
uint32 m_oldpetspell;
25432543

2544-
AchievementMgr* m_achievementMgr;
2545-
ReputationMgr* m_reputationMgr;
2544+
std::unique_ptr<AchievementMgr> m_achievementMgr;
2545+
std::unique_ptr<ReputationMgr> m_reputationMgr;
25462546

25472547
uint32 m_ChampioningFaction;
25482548

0 commit comments

Comments
 (0)