diff options
| author | MitchesD <majklprofik@seznam.cz> | 2015-08-26 11:12:35 +0200 |
|---|---|---|
| committer | MitchesD <majklprofik@seznam.cz> | 2015-08-26 11:15:00 +0200 |
| commit | 614b5832ba96b4c5905ece5490a7b5d18c2f710b (patch) | |
| tree | 454e71dfcab1da90490466dfebd69a115950866d /src/server/game/Entities/Player | |
| parent | ca5c5221ba8376d152a4c8216afd922924475802 (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.cpp | 27 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.h | 3 |
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); |
