diff options
| author | AlcDenat <alcdenat@hotmail.com> | 2018-10-09 16:31:27 +0200 |
|---|---|---|
| committer | jackpoz <giacomopoz@gmail.com> | 2018-10-09 16:31:27 +0200 |
| commit | 2f5403d4af3a90a6e51a377e05a55a0d197afb4d (patch) | |
| tree | 2e396a1631a3a53056b350ea9eb3ea644783d183 /src | |
| parent | f97cfe673f9958228be8bbc45a5bc12f5346096e (diff) | |
Split quest template locales (#22596)
* add quest locales tables
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Entities/Creature/GossipDef.cpp | 16 | ||||
| -rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 74 | ||||
| -rw-r--r-- | src/server/game/Globals/ObjectMgr.h | 21 | ||||
| -rw-r--r-- | src/server/game/Quests/QuestDef.h | 10 | ||||
| -rw-r--r-- | src/server/game/World/World.cpp | 4 | ||||
| -rw-r--r-- | src/server/scripts/Commands/cs_reload.cpp | 20 |
6 files changed, 124 insertions, 21 deletions
diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp index 930444ed475..6451fc912a7 100644 --- a/src/server/game/Entities/Creature/GossipDef.cpp +++ b/src/server/game/Entities/Creature/GossipDef.cpp @@ -523,16 +523,16 @@ void PlayerMenu::SendQuestQueryResponse(Quest const* quest) const void PlayerMenu::SendQuestGiverOfferReward(Quest const* quest, ObjectGuid npcGUID, bool enableNext) const { std::string questTitle = quest->GetTitle(); - std::string questOfferRewardText = quest->GetOfferRewardText(); + std::string RewardText = quest->GetOfferRewardText(); LocaleConstant localeConstant = _session->GetSessionDbLocaleIndex(); if (localeConstant != LOCALE_enUS) { if (QuestLocale const* localeData = sObjectMgr->GetQuestLocale(quest->GetQuestId())) - { ObjectMgr::GetLocaleString(localeData->Title, localeConstant, questTitle); - ObjectMgr::GetLocaleString(localeData->OfferRewardText, localeConstant, questOfferRewardText); - } + + if (QuestOfferRewardLocale const* questOfferRewardLocale = sObjectMgr->GetQuestOfferRewardLocale(quest->GetQuestId())) + ObjectMgr::GetLocaleString(questOfferRewardLocale->RewardText, localeConstant, RewardText); } if (sWorld->getBoolConfig(CONFIG_UI_QUESTLEVELS_IN_DIALOGS)) @@ -542,7 +542,7 @@ void PlayerMenu::SendQuestGiverOfferReward(Quest const* quest, ObjectGuid npcGUI data << uint64(npcGUID); data << uint32(quest->GetQuestId()); data << questTitle; - data << questOfferRewardText; + data << RewardText; data << uint8(enableNext ? 1 : 0); // Auto Finish data << uint32(quest->GetFlags()); // 3.3.3 questFlags @@ -626,10 +626,10 @@ void PlayerMenu::SendQuestGiverRequestItems(Quest const* quest, ObjectGuid npcGU if (localeConstant != LOCALE_enUS) { if (QuestLocale const* localeData = sObjectMgr->GetQuestLocale(quest->GetQuestId())) - { ObjectMgr::GetLocaleString(localeData->Title, localeConstant, questTitle); - ObjectMgr::GetLocaleString(localeData->RequestItemsText, localeConstant, requestItemsText); - } + + if (QuestRequestItemsLocale const* questRequestItemsLocale = sObjectMgr->GetQuestRequestItemsLocale(quest->GetQuestId())) + ObjectMgr::GetLocaleString(questRequestItemsLocale->CompletionText, localeConstant, requestItemsText); } if (!quest->GetReqItemsCount() && canComplete) diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 0275100e11f..80f823f9beb 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -4919,8 +4919,8 @@ void ObjectMgr::LoadQuestLocales() _questLocaleStore.clear(); // need for reload case - // 0 1 2 3 4 5 6 7 8 9 10 11 12 - QueryResult result = WorldDatabase.Query("SELECT ID, locale, Title, Details, Objectives, OfferRewardText, RequestItemsText, EndText, CompletedText, ObjectiveText1, ObjectiveText2, ObjectiveText3, ObjectiveText4 FROM quest_template_locale"); + // 0 1 2 3 4 5 6 7 8 9 10 + QueryResult result = WorldDatabase.Query("SELECT ID, locale, Title, Details, Objectives, EndText, CompletedText, ObjectiveText1, ObjectiveText2, ObjectiveText3, ObjectiveText4 FROM quest_template_locale"); if (!result) return; @@ -4928,8 +4928,8 @@ void ObjectMgr::LoadQuestLocales() { Field* fields = result->Fetch(); - uint32 id = fields[0].GetUInt32(); - std::string localeName = fields[1].GetString(); + uint32 id = fields[0].GetUInt32(); + std::string localeName = fields[1].GetString(); QuestLocale& data = _questLocaleStore[id]; @@ -4940,13 +4940,11 @@ void ObjectMgr::LoadQuestLocales() AddLocaleString(fields[2].GetString(), locale, data.Title); AddLocaleString(fields[3].GetString(), locale, data.Details); AddLocaleString(fields[4].GetString(), locale, data.Objectives); - AddLocaleString(fields[5].GetString(), locale, data.OfferRewardText); - AddLocaleString(fields[6].GetString(), locale, data.RequestItemsText); - AddLocaleString(fields[7].GetString(), locale, data.AreaDescription); - AddLocaleString(fields[8].GetString(), locale, data.CompletedText); + AddLocaleString(fields[5].GetString(), locale, data.AreaDescription); + AddLocaleString(fields[6].GetString(), locale, data.CompletedText); for (uint8 i = 0; i < 4; ++i) - AddLocaleString(fields[i + 9].GetString(), locale, data.ObjectiveText[i]); + AddLocaleString(fields[i + 7].GetString(), locale, data.ObjectiveText[i]); } while (result->NextRow()); TC_LOG_INFO("server.loading", ">> Loaded %u Quest locale strings in %u ms", uint32(_questLocaleStore.size()), GetMSTimeDiffToNow(oldMSTime)); @@ -6114,7 +6112,7 @@ void ObjectMgr::LoadQuestGreetings() TC_LOG_INFO("server.loading", ">> Loaded %u quest_greeting in %u ms", count, GetMSTimeDiffToNow(oldMSTime)); } -void ObjectMgr::LoadQuestGreetingsLocales() +void ObjectMgr::LoadQuestGreetingLocales() { uint32 oldMSTime = getMSTime(); @@ -6161,6 +6159,62 @@ void ObjectMgr::LoadQuestGreetingsLocales() TC_LOG_INFO("server.loading", ">> Loaded %u quest greeting locale strings in %u ms", uint32(_questGreetingLocaleStore.size()), GetMSTimeDiffToNow(oldMSTime)); } +void ObjectMgr::LoadQuestOfferRewardLocale() +{ + uint32 oldMSTime = getMSTime(); + + _questOfferRewardLocaleStore.clear(); // need for reload case + // 0 1 2 + QueryResult result = WorldDatabase.Query("SELECT Id, locale, RewardText FROM quest_offer_reward_locale"); + if (!result) + return; + + do + { + Field* fields = result->Fetch(); + + uint32 id = fields[0].GetUInt32(); + std::string localeName = fields[1].GetString(); + + LocaleConstant locale = GetLocaleByName(localeName); + if (locale == LOCALE_enUS) + continue; + + QuestOfferRewardLocale& data = _questOfferRewardLocaleStore[id]; + AddLocaleString(fields[2].GetString(), locale, data.RewardText); + } while (result->NextRow()); + + TC_LOG_INFO("server.loading", ">> Loaded " SZFMTD " Quest Offer Reward locale strings in %u ms", _questOfferRewardLocaleStore.size(), GetMSTimeDiffToNow(oldMSTime)); +} + +void ObjectMgr::LoadQuestRequestItemsLocale() +{ + uint32 oldMSTime = getMSTime(); + + _questRequestItemsLocaleStore.clear(); // need for reload case + // 0 1 2 + QueryResult result = WorldDatabase.Query("SELECT Id, locale, CompletionText FROM quest_request_items_locale"); + if (!result) + return; + + do + { + Field* fields = result->Fetch(); + + uint32 id = fields[0].GetUInt32(); + std::string localeName = fields[1].GetString(); + + LocaleConstant locale = GetLocaleByName(localeName); + if (locale == LOCALE_enUS) + continue; + + QuestRequestItemsLocale& data = _questRequestItemsLocaleStore[id]; + AddLocaleString(fields[2].GetString(), locale, data.CompletionText); + } while (result->NextRow()); + + TC_LOG_INFO("server.loading", ">> Loaded " SZFMTD " Quest Request Items locale strings in %u ms", _questRequestItemsLocaleStore.size(), GetMSTimeDiffToNow(oldMSTime)); +} + void ObjectMgr::LoadTavernAreaTriggers() { uint32 oldMSTime = getMSTime(); diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index ee423badea8..7c5fa315d3d 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -562,6 +562,8 @@ typedef std::unordered_map<uint32, ItemTemplate> ItemTemplateContainer; typedef std::unordered_map<uint32, ItemLocale> ItemLocaleContainer; typedef std::unordered_map<uint32, ItemSetNameLocale> ItemSetNameLocaleContainer; typedef std::unordered_map<uint32, QuestLocale> QuestLocaleContainer; +typedef std::unordered_map<uint32, QuestOfferRewardLocale> QuestOfferRewardLocaleContainer; +typedef std::unordered_map<uint32, QuestRequestItemsLocale> QuestRequestItemsLocaleContainer; typedef std::unordered_map<uint32, NpcTextLocale> NpcTextLocaleContainer; typedef std::unordered_map<uint32, PageTextLocale> PageTextLocaleContainer; @@ -1166,10 +1168,12 @@ class TC_GAME_API ObjectMgr void LoadItemSetNameLocales(); void LoadQuestLocales(); void LoadNpcTextLocales(); + void LoadQuestOfferRewardLocale(); + void LoadQuestRequestItemsLocale(); void LoadPageTextLocales(); void LoadGossipMenuItemsLocales(); void LoadPointOfInterestLocales(); - void LoadQuestGreetingsLocales(); + void LoadQuestGreetingLocales(); void LoadInstanceTemplate(); void LoadInstanceEncounters(); void LoadMailLevelRewards(); @@ -1366,6 +1370,18 @@ class TC_GAME_API ObjectMgr if (itr == _questLocaleStore.end()) return nullptr; return &itr->second; } + QuestOfferRewardLocale const* GetQuestOfferRewardLocale(uint32 entry) const + { + auto itr = _questOfferRewardLocaleStore.find(entry); + if (itr == _questOfferRewardLocaleStore.end()) return nullptr; + return &itr->second; + } + QuestRequestItemsLocale const* GetQuestRequestItemsLocale(uint32 entry) const + { + auto itr = _questRequestItemsLocaleStore.find(entry); + if (itr == _questRequestItemsLocaleStore.end()) return nullptr; + return &itr->second; + } NpcTextLocale const* GetNpcTextLocale(uint32 entry) const { NpcTextLocaleContainer::const_iterator itr = _npcTextLocaleStore.find(entry); @@ -1657,6 +1673,9 @@ class TC_GAME_API ObjectMgr ItemLocaleContainer _itemLocaleStore; ItemSetNameLocaleContainer _itemSetNameLocaleStore; QuestLocaleContainer _questLocaleStore; + QuestOfferRewardLocaleContainer _questOfferRewardLocaleStore; + QuestRequestItemsLocaleContainer _questRequestItemsLocaleStore; + NpcTextLocaleContainer _npcTextLocaleStore; PageTextLocaleContainer _pageTextLocaleStore; GossipMenuItemsLocaleContainer _gossipMenuItemsLocaleStore; diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h index 2fd8ba454a7..516976d9052 100644 --- a/src/server/game/Quests/QuestDef.h +++ b/src/server/game/Quests/QuestDef.h @@ -183,6 +183,16 @@ struct QuestLocale std::vector<std::vector<std::string>> ObjectiveText; }; +struct QuestRequestItemsLocale +{ + std::vector<std::string> CompletionText; +}; + +struct QuestOfferRewardLocale +{ + std::vector<std::string> RewardText; +}; + // This Quest class provides a convenient way to access a few pretotaled (cached) quest details, // all base quest information, and any utility functions such as generating the amount of // xp to give diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index cab8c786289..3cf43f85850 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1622,11 +1622,13 @@ void World::SetInitialWorldSettings() sObjectMgr->LoadItemLocales(); sObjectMgr->LoadItemSetNameLocales(); sObjectMgr->LoadQuestLocales(); + sObjectMgr->LoadQuestOfferRewardLocale(); + sObjectMgr->LoadQuestRequestItemsLocale(); sObjectMgr->LoadNpcTextLocales(); sObjectMgr->LoadPageTextLocales(); sObjectMgr->LoadGossipMenuItemsLocales(); sObjectMgr->LoadPointOfInterestLocales(); - sObjectMgr->LoadQuestGreetingsLocales(); + sObjectMgr->LoadQuestGreetingLocales(); sObjectMgr->SetDBCLocaleIndex(GetDefaultDbcLocale()); // Get once for all the locale index of DBC language (console/broadcasts) TC_LOG_INFO("server.loading", ">> Localization strings loaded in %u ms", GetMSTimeDiffToNow(oldMSTime)); diff --git a/src/server/scripts/Commands/cs_reload.cpp b/src/server/scripts/Commands/cs_reload.cpp index 660af91ed6e..eae194b1044 100644 --- a/src/server/scripts/Commands/cs_reload.cpp +++ b/src/server/scripts/Commands/cs_reload.cpp @@ -322,6 +322,8 @@ public: HandleReloadLocalesPageTextCommand(handler, "a"); HandleReloadLocalesPointsOfInterestCommand(handler, "a"); HandleReloadLocalesQuestCommand(handler, "a"); + HandleReloadLocalesQuestOfferRewardCommand(handler, "a"); + HandleReloadLocalesQuestRequestItemsCommand(handler, "a"); HandleReloadLocalesQuestGreetingCommand(handler, ""); return true; } @@ -540,7 +542,7 @@ public: static bool HandleReloadLocalesQuestGreetingCommand(ChatHandler* handler, char const* /*args*/) { TC_LOG_INFO("misc", "Re-Loading Quest Greeting locales..."); - sObjectMgr->LoadQuestGreetingsLocales(); + sObjectMgr->LoadQuestGreetingLocales(); handler->SendGlobalGMSysMessage("DB table `quest_greeting_locale` reloaded."); return true; } @@ -1120,6 +1122,22 @@ public: return true; } + static bool HandleReloadLocalesQuestOfferRewardCommand(ChatHandler* handler, char const* /*args*/) + { + TC_LOG_INFO("misc", "Re-Loading Quest Offer Reward Locale... "); + sObjectMgr->LoadQuestOfferRewardLocale(); + handler->SendGlobalGMSysMessage("DB table `quest_offer_reward_locale` reloaded."); + return true; + } + + static bool HandleReloadLocalesQuestRequestItemsCommand(ChatHandler* handler, char const* /*args*/) + { + TC_LOG_INFO("misc", "Re-Loading Quest Request Item Locale... "); + sObjectMgr->LoadQuestRequestItemsLocale(); + handler->SendGlobalGMSysMessage("DB table `quest_request_item_locale` reloaded."); + return true; + } + static bool HandleReloadMailLevelRewardCommand(ChatHandler* handler, char const* /*args*/) { TC_LOG_INFO("misc", "Re-Loading Player level dependent mail rewards..."); |
