aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Entities')
-rw-r--r--src/server/game/Entities/Player/Player.cpp32
-rw-r--r--src/server/game/Entities/Player/Player.h2
2 files changed, 34 insertions, 0 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index e9c53e161d5..1e084d87850 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -27121,6 +27121,38 @@ void Player::SendMovementSetCollisionHeight(float height)
SendMessageToSet(updateCollisionHeight.Write(), false);
}
+void Player::SendPlayerChoice(ObjectGuid sender, uint32 choiceID)
+{
+ PlayerChoice const* playerChoice = sObjectMgr->GetPlayerChoice(choiceID);
+ if (!playerChoice)
+ return;
+
+ PlayerChoice localizedPlayerChoice = *playerChoice;
+
+ LocaleConstant locale = GetSession()->GetSessionDbLocaleIndex();
+ if (locale != DEFAULT_LOCALE)
+ {
+ if (PlayerChoiceLocale const* playerChoiceLocale = sObjectMgr->GetPlayerChoiceLocale(localizedPlayerChoice.ChoiceId))
+ sObjectMgr->GetLocaleString(playerChoiceLocale->Question, locale, localizedPlayerChoice.Question);
+
+ for (auto& playerChoiceResponse : localizedPlayerChoice.Responses)
+ {
+ if (PlayerChoiceResponseLocale const* playerChoiceResponseLocale = sObjectMgr->GetPlayerChoiceResponseLocale(localizedPlayerChoice.ChoiceId, playerChoiceResponse.second.ResponseID))
+ {
+ sObjectMgr->GetLocaleString(playerChoiceResponseLocale->Header, locale, playerChoiceResponse.second.Header);
+ sObjectMgr->GetLocaleString(playerChoiceResponseLocale->Answer, locale, playerChoiceResponse.second.Answer);
+ sObjectMgr->GetLocaleString(playerChoiceResponseLocale->Description, locale, playerChoiceResponse.second.Description);
+ sObjectMgr->GetLocaleString(playerChoiceResponseLocale->Confirmation, locale, playerChoiceResponse.second.Confirmation);
+ }
+ }
+ }
+
+ WorldPackets::Quest::DisplayPlayerChoice displayPlayerChoice;
+ displayPlayerChoice.Choice = &localizedPlayerChoice;
+ displayPlayerChoice.SenderGUID = sender;
+ SendDirectMessage(displayPlayerChoice.Write());
+}
+
float Player::GetCollisionHeight(bool mounted) const
{
if (mounted)
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 4d111da3c0d..1391ad7e532 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -2338,6 +2338,8 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
SceneMgr& GetSceneMgr() { return m_sceneMgr; }
RestMgr& GetRestMgr() const { return *_restMgr; }
+ void SendPlayerChoice(ObjectGuid sender, uint32 choiceID);
+
protected:
// Gamemaster whisper whitelist
GuidList WhisperList;