aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Player
diff options
context:
space:
mode:
authorMitchesD <majklprofik@seznam.cz>2015-08-26 11:12:35 +0200
committerMitchesD <majklprofik@seznam.cz>2015-08-26 11:15:00 +0200
commit614b5832ba96b4c5905ece5490a7b5d18c2f710b (patch)
tree454e71dfcab1da90490466dfebd69a115950866d /src/server/game/Entities/Player
parentca5c5221ba8376d152a4c8216afd922924475802 (diff)
Core/Player: implemented Toybox
* now you can use all the things in toybox - add new toys, set them as favorite and use them
Diffstat (limited to 'src/server/game/Entities/Player')
-rw-r--r--src/server/game/Entities/Player/Player.cpp27
-rw-r--r--src/server/game/Entities/Player/Player.h3
2 files changed, 30 insertions, 0 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 8237a9759ef..9d64078cc8c 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -86,6 +86,7 @@
#include "SpellMgr.h"
#include "SpellPackets.h"
#include "TalentPackets.h"
+#include "ToyPackets.h"
#include "TradePackets.h"
#include "Transport.h"
#include "UpdateData.h"
@@ -17233,6 +17234,7 @@ bool Player::LoadFromDB(ObjectGuid guid, SQLQueryHolder *holder)
_LoadTalents(holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_TALENTS));
_LoadSpells(holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_SPELLS));
+ _LoadToys(GetSession()->GetAccountToys());
LearnSpecializationSpells();
@@ -18371,6 +18373,23 @@ void Player::_LoadSpells(PreparedQueryResult result)
}
}
+void Player::_LoadToys(ToyBoxContainer const& toys)
+{
+ for (auto const& t : toys)
+ AddDynamicValue(PLAYER_DYNAMIC_FIELD_TOYS, t.first);
+}
+
+bool Player::AddToy(uint32 itemId, bool isFavourite /*= false*/)
+{
+ if (GetSession()->UpdateAccountToys(itemId, isFavourite))
+ {
+ AddDynamicValue(PLAYER_DYNAMIC_FIELD_TOYS, itemId);
+ return true;
+ }
+
+ return false;
+}
+
void Player::_LoadGroup(PreparedQueryResult result)
{
//QueryResult* result = CharacterDatabase.PQuery("SELECT guid FROM group_member WHERE memberGuid=%u", GetGUIDLow());
@@ -19171,6 +19190,10 @@ void Player::SaveToDB(bool create /*=false*/)
CharacterDatabase.CommitTransaction(trans);
+ SQLTransaction transLogin = LoginDatabase.BeginTransaction();
+ GetSession()->SaveAccountToys(transLogin);
+ LoginDatabase.CommitTransaction(transLogin);
+
// save pet (hunter pet level and experience and all type pets health/mana).
if (Pet* pet = GetPet())
pet->SavePetToDB(PET_SAVE_AS_CURRENT);
@@ -22612,6 +22635,10 @@ void Player::SendInitialPacketsBeforeAddToMap()
// SMSG_ACCOUNT_MOUNT_UPDATE
// SMSG_ACCOUNT_TOYS_UPDATE
+ WorldPackets::Toy::AccountToysUpdate toysUpdate;
+ toysUpdate.IsFullUpdate = true;
+ toysUpdate.Toys = &GetSession()->GetAccountToys();
+ SendDirectMessage(toysUpdate.Write());
WorldPackets::Character::InitialSetup initialSetup;
initialSetup.ServerExpansionLevel = sWorld->getIntConfig(CONFIG_EXPANSION);
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 83f60d64352..96c3be75a1c 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -2624,6 +2624,8 @@ class Player : public Unit, public GridObject<Player>
VoidStorageItem* GetVoidStorageItem(uint8 slot) const;
VoidStorageItem* GetVoidStorageItem(uint64 id, uint8& slot) const;
+ bool AddToy(uint32 itemId, bool isFavourite /*= false*/);
+
void OnCombatExit();
void CreateGarrison(uint32 garrSiteId);
@@ -2701,6 +2703,7 @@ class Player : public Unit, public GridObject<Player>
void _LoadGroup(PreparedQueryResult result);
void _LoadSkills(PreparedQueryResult result);
void _LoadSpells(PreparedQueryResult result);
+ void _LoadToys(ToyBoxContainer const& toys);
void _LoadFriendList(PreparedQueryResult result);
bool _LoadHomeBind(PreparedQueryResult result);
void _LoadDeclinedNames(PreparedQueryResult result);