diff options
author | Naios <naios-dev@live.de> | 2015-11-04 20:06:20 +0100 |
---|---|---|
committer | Carbenium <carbenium@outlook.com> | 2015-11-07 13:09:10 +0100 |
commit | 3a3a6bbfd2d841f58cb6af191f969830ce852d8c (patch) | |
tree | 47aaef336804899237f6e0f36daebff0cbc1b0c2 /src/server/game/Globals/ObjectMgr.cpp | |
parent | 23153c8bf168175c28fe6f1b20f3c0507c75f316 (diff) |
Core/Globals: Use std::string rather than char* to pass script names around.
(cherry picked from commit b7b49fe35f87e83813466cb302ff17381792e607)
Conflicts:
src/server/game/Battlegrounds/BattlegroundMgr.cpp
src/server/game/Globals/ObjectMgr.cpp
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 37 |
1 files changed, 22 insertions, 15 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 7a9302699b2..622ed02e2b8 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -503,7 +503,7 @@ void ObjectMgr::LoadCreatureTemplate(Field* fields) creatureTemplate.RegenHealth = fields[71].GetBool(); creatureTemplate.MechanicImmuneMask = fields[72].GetUInt32(); creatureTemplate.flags_extra = fields[73].GetUInt32(); - creatureTemplate.ScriptID = GetScriptId(fields[74].GetCString()); + creatureTemplate.ScriptID = GetScriptId(fields[74].GetString()); } void ObjectMgr::LoadCreatureTemplateAddons() @@ -2405,7 +2405,7 @@ void ObjectMgr::LoadItemTemplates() itemTemplate.Duration = fields[129].GetUInt32(); itemTemplate.ItemLimitCategory = uint32(fields[130].GetInt16()); itemTemplate.HolidayId = fields[131].GetUInt32(); - itemTemplate.ScriptId = sObjectMgr->GetScriptId(fields[132].GetCString()); + itemTemplate.ScriptId = sObjectMgr->GetScriptId(fields[132].GetString()); itemTemplate.DisenchantID = fields[133].GetUInt32(); itemTemplate.FoodType = uint32(fields[134].GetUInt8()); itemTemplate.MinMoneyLoot = fields[135].GetUInt32(); @@ -5103,8 +5103,8 @@ void ObjectMgr::LoadSpellScriptNames() Field* fields = result->Fetch(); - int32 spellId = fields[0].GetInt32(); - char const* scriptName = fields[1].GetCString(); + int32 spellId = fields[0].GetInt32(); + std::string const scriptName = fields[1].GetString(); bool allRanks = false; if (spellId < 0) @@ -5116,18 +5116,18 @@ void ObjectMgr::LoadSpellScriptNames() SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId); if (!spellInfo) { - TC_LOG_ERROR("sql.sql", "Scriptname: `%s` spell (Id: %d) does not exist.", scriptName, spellId); + TC_LOG_ERROR("sql.sql", "Scriptname: `%s` spell (Id: %d) does not exist.", scriptName.c_str(), spellId); continue; } if (allRanks) { if (!spellInfo->IsRanked()) - TC_LOG_ERROR("sql.sql", "Scriptname: `%s` spell (Id: %d) has no ranks of spell.", scriptName, fields[0].GetInt32()); + TC_LOG_ERROR("sql.sql", "Scriptname: `%s` spell (Id: %d) has no ranks of spell.", scriptName.c_str(), fields[0].GetInt32()); if (spellInfo->GetFirstRankSpell()->Id != uint32(spellId)) { - TC_LOG_ERROR("sql.sql", "Scriptname: `%s` spell (Id: %d) is not first rank of spell.", scriptName, fields[0].GetInt32()); + TC_LOG_ERROR("sql.sql", "Scriptname: `%s` spell (Id: %d) is not first rank of spell.", scriptName.c_str(), fields[0].GetInt32()); continue; } @@ -5140,7 +5140,7 @@ void ObjectMgr::LoadSpellScriptNames() else { if (spellInfo->IsRanked()) - TC_LOG_ERROR("sql.sql", "Scriptname: `%s` spell (Id: %d) is ranked spell. Perhaps not all ranks are assigned to this script.", scriptName, spellId); + TC_LOG_ERROR("sql.sql", "Scriptname: `%s` spell (Id: %d) is ranked spell. Perhaps not all ranks are assigned to this script.", scriptName.c_str(), spellId); _spellScriptsStore.insert(SpellScriptsContainer::value_type(spellInfo->Id, GetScriptId(scriptName))); } @@ -5178,7 +5178,7 @@ void ObjectMgr::ValidateSpellScripts() bool valid = true; if (!spellScript && !auraScript) { - TC_LOG_ERROR("scripts", "Functions GetSpellScript() and GetAuraScript() of script `%s` do not return objects - script skipped", GetScriptName(sitr->second->second)); + TC_LOG_ERROR("scripts", "Functions GetSpellScript() and GetAuraScript() of script `%s` do not return objects - script skipped", GetScriptName(sitr->second->second).c_str()); valid = false; } if (spellScript) @@ -5314,7 +5314,7 @@ void ObjectMgr::LoadInstanceTemplate() instanceTemplate.AllowMount = fields[3].GetBool(); instanceTemplate.Parent = uint32(fields[1].GetUInt16()); - instanceTemplate.ScriptId = sObjectMgr->GetScriptId(fields[2].GetCString()); + instanceTemplate.ScriptId = sObjectMgr->GetScriptId(fields[2].GetString()); _instanceTemplateStore[mapID] = instanceTemplate; @@ -5779,8 +5779,8 @@ void ObjectMgr::LoadAreaTriggerScripts() { Field* fields = result->Fetch(); - uint32 triggerId = fields[0].GetUInt32(); - char const* scriptName = fields[1].GetCString(); + uint32 triggerId = fields[0].GetUInt32(); + std::string const scriptName = fields[1].GetString(); AreaTriggerEntry const* atEntry = sAreaTriggerStore.LookupEntry(triggerId); if (!atEntry) @@ -6637,7 +6637,7 @@ void ObjectMgr::LoadGameObjectTemplate() got.raw.data[i] = fields[10 + i].GetInt32(); // data1 and data6 can be -1 got.AIName = fields[34].GetString(); - got.ScriptId = GetScriptId(fields[35].GetCString()); + got.ScriptId = GetScriptId(fields[35].GetString()); // Checks @@ -8585,11 +8585,18 @@ void ObjectMgr::LoadScriptNames() TC_LOG_INFO("server.loading", ">> Loaded " SZFMTD " ScriptNames in %u ms", _scriptNamesStore.size(), GetMSTimeDiffToNow(oldMSTime)); } -uint32 ObjectMgr::GetScriptId(char const* name) +std::string const& ObjectMgr::GetScriptName(uint32 id) const +{ + static std::string const empty = ""; + return id < _scriptNamesStore.size() ? _scriptNamesStore[id] : empty; +} + + +uint32 ObjectMgr::GetScriptId(std::string const& name) { // use binary search to find the script name in the sorted vector // assume "" is the first element - if (!name) + if (name.empty()) return 0; ScriptNameContainer::const_iterator itr = std::lower_bound(_scriptNamesStore.begin(), _scriptNamesStore.end(), name); |