aboutsummaryrefslogtreecommitdiff
path: root/src/server/game
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-05-13 15:46:27 +0200
committerShauren <shauren.trinity@gmail.com>2023-05-13 15:46:27 +0200
commit3260b94dd627b7b0c7114f94bb97d108b005af3e (patch)
tree980d58d6db4a3d20785f8bca881d36f79d0f5755 /src/server/game
parentc4d40085964109893c76d301b6f7d99f03838fa0 (diff)
Core/Misc: Replace string to int conversion functions from Common.h with c++17 std::from_chars based ones Trinity::StringTo
Diffstat (limited to 'src/server/game')
-rw-r--r--src/server/game/Chat/Channels/Channel.cpp11
-rw-r--r--src/server/game/Chat/Chat.cpp75
-rw-r--r--src/server/game/Chat/Chat.h1
-rw-r--r--src/server/game/Chat/LanguageMgr.cpp6
-rw-r--r--src/server/game/DataStores/DB2Stores.cpp2
-rw-r--r--src/server/game/DataStores/GameTables.cpp9
-rw-r--r--src/server/game/Entities/Object/ObjectGuid.cpp2
-rw-r--r--src/server/game/Scripting/ScriptReloadMgr.cpp3
-rw-r--r--src/server/game/Server/WorldSocket.cpp2
-rw-r--r--src/server/game/Spells/SpellScript.h2
-rw-r--r--src/server/game/Tools/PlayerDump.cpp11
11 files changed, 31 insertions, 93 deletions
diff --git a/src/server/game/Chat/Channels/Channel.cpp b/src/server/game/Chat/Channels/Channel.cpp
index 3398503d270..dc423a55986 100644
--- a/src/server/game/Chat/Channels/Channel.cpp
+++ b/src/server/game/Chat/Channels/Channel.cpp
@@ -77,9 +77,16 @@ Channel::Channel(ObjectGuid const& guid, std::string const& name, uint32 team /*
for (std::string_view guid : Trinity::Tokenize(banList, ' ', false))
{
// legacy db content might not have 0x prefix, account for that
- std::string bannedGuidStr(guid.size() > 2 && guid.substr(0, 2) == "0x" ? guid.substr(2) : guid);
+ if (guid.size() > 2 && guid.substr(0, 2) == "0x")
+ guid.remove_suffix(2);
+
+ Optional<uint64> high = Trinity::StringTo<uint64>(guid.substr(0, 16), 16);
+ Optional<uint64> low = Trinity::StringTo<uint64>(guid.substr(16, 16), 16);
+ if (!high || !low)
+ continue;
+
ObjectGuid banned;
- banned.SetRawValue(uint64(strtoull(bannedGuidStr.substr(0, 16).c_str(), nullptr, 16)), uint64(strtoull(bannedGuidStr.substr(16).c_str(), nullptr, 16)));
+ banned.SetRawValue(*high, *low);
if (!banned)
continue;
diff --git a/src/server/game/Chat/Chat.cpp b/src/server/game/Chat/Chat.cpp
index b1b1a221c2f..832d14631bc 100644
--- a/src/server/game/Chat/Chat.cpp
+++ b/src/server/game/Chat/Chat.cpp
@@ -22,18 +22,15 @@
#include "ChatCommand.h"
#include "ChatPackets.h"
#include "Common.h"
-#include "DatabaseEnv.h"
-#include "DB2Stores.h"
#include "GridNotifiersImpl.h"
#include "Group.h"
#include "Language.h"
-#include "Log.h"
#include "ObjectAccessor.h"
#include "ObjectMgr.h"
#include "Optional.h"
#include "Player.h"
#include "Realm.h"
-#include "ScriptMgr.h"
+#include "StringConvert.h"
#include "World.h"
#include "WorldSession.h"
#include <boost/algorithm/string/replace.hpp>
@@ -413,72 +410,6 @@ Creature* ChatHandler::GetCreatureFromPlayerMapByDbGuid(ObjectGuid::LowType lowg
return creature;
}
-enum SpellLinkType
-{
- SPELL_LINK_SPELL = 0,
- SPELL_LINK_TALENT = 1,
- SPELL_LINK_ENCHANT = 2,
- SPELL_LINK_TRADE = 3,
- SPELL_LINK_GLYPH = 4
-};
-
-static char const* const spellKeys[] =
-{
- "Hspell", // normal spell
- "Htalent", // talent spell
- "Henchant", // enchanting recipe spell
- "Htrade", // profession/skill spell
- "Hglyph", // glyph
- nullptr
-};
-
-uint32 ChatHandler::extractSpellIdFromLink(char* text)
-{
- // number or [name] Shift-click form |color|Henchant:recipe_spell_id|h[prof_name: recipe_name]|h|r
- // number or [name] Shift-click form |color|Hglyph:glyph_slot_id:glyph_prop_id|h[%s]|h|r
- // number or [name] Shift-click form |color|Hspell:spell_id|h[name]|h|r
- // number or [name] Shift-click form |color|Htalent:talent_id, rank|h[name]|h|r
- // number or [name] Shift-click form |color|Htrade:spell_id, skill_id, max_value, cur_value|h[name]|h|r
- int type = 0;
- char* param1_str = nullptr;
- char* idS = extractKeyFromLink(text, spellKeys, &type, &param1_str);
- if (!idS)
- return 0;
-
- uint32 id = atoul(idS);
-
- switch (type)
- {
- case SPELL_LINK_SPELL:
- return id;
- case SPELL_LINK_TALENT:
- {
- // talent
- TalentEntry const* talentEntry = sTalentStore.LookupEntry(id);
- if (!talentEntry)
- return 0;
-
- return talentEntry->SpellID;
- }
- case SPELL_LINK_ENCHANT:
- case SPELL_LINK_TRADE:
- return id;
- case SPELL_LINK_GLYPH:
- {
- uint32 glyph_prop_id = param1_str ? atoul(param1_str) : 0;
-
- GlyphPropertiesEntry const* glyphPropEntry = sGlyphPropertiesStore.LookupEntry(glyph_prop_id);
- if (!glyphPropEntry)
- return 0;
-
- return glyphPropEntry->SpellID;
- }
- }
-
- // unknown type?
- return 0;
-}
-
enum GuidLinkType
{
GUID_LINK_PLAYER = 0, // must be first for selection in not link case
@@ -526,13 +457,13 @@ ObjectGuid::LowType ChatHandler::extractLowGuidFromLink(char* text, HighGuid& gu
case GUID_LINK_CREATURE:
{
guidHigh = HighGuid::Creature;
- ObjectGuid::LowType lowguid = atoull(idS);
+ ObjectGuid::LowType lowguid = Trinity::StringTo<ObjectGuid::LowType>(idS).value_or(UI64LIT(0));
return lowguid;
}
case GUID_LINK_GAMEOBJECT:
{
guidHigh = HighGuid::GameObject;
- ObjectGuid::LowType lowguid = atoull(idS);
+ ObjectGuid::LowType lowguid = Trinity::StringTo<ObjectGuid::LowType>(idS).value_or(UI64LIT(0));
return lowguid;
}
}
diff --git a/src/server/game/Chat/Chat.h b/src/server/game/Chat/Chat.h
index 53a49cc058c..2d9b49fb6b5 100644
--- a/src/server/game/Chat/Chat.h
+++ b/src/server/game/Chat/Chat.h
@@ -98,7 +98,6 @@ class TC_GAME_API ChatHandler
char* extractKeyFromLink(char* text, char const* linkType, char** something1 = nullptr);
char* extractKeyFromLink(char* text, char const* const* linkTypes, int* found_idx, char** something1 = nullptr);
char* extractQuotedArg(char* args);
- uint32 extractSpellIdFromLink(char* text);
ObjectGuid::LowType extractLowGuidFromLink(char* text, HighGuid& guidHigh);
bool GetPlayerGroupAndGUIDByName(const char* cname, Player*& player, Group*& group, ObjectGuid& guid, bool offline = false);
std::string extractPlayerNameFromLink(char* text);
diff --git a/src/server/game/Chat/LanguageMgr.cpp b/src/server/game/Chat/LanguageMgr.cpp
index d383f152513..9fc877944bc 100644
--- a/src/server/game/Chat/LanguageMgr.cpp
+++ b/src/server/game/Chat/LanguageMgr.cpp
@@ -237,7 +237,7 @@ std::string LanguageMgr::Translate(std::string const& msg, uint32 language, Loca
for (size_t i = 0; i < length; ++i)
{
if (str[i] >= 'A' && str[i] <= 'Z')
- result += char(toupper(replacementWord[i]));
+ result += charToUpper(replacementWord[i]);
else
result += replacementWord[i];
}
@@ -252,9 +252,9 @@ std::string LanguageMgr::Translate(std::string const& msg, uint32 language, Loca
for (size_t i = 0; i < length; ++i)
{
if (isUpper(wstrSourceWord[i]))
- result += char(toupper(replacementWord[i]));
+ result += charToUpper(replacementWord[i]);
else
- result += char(tolower(replacementWord[i]));
+ result += charToLower(replacementWord[i]);
}
}
break;
diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp
index 6aa2d59b967..05c093d7717 100644
--- a/src/server/game/DataStores/DB2Stores.cpp
+++ b/src/server/game/DataStores/DB2Stores.cpp
@@ -2981,7 +2981,7 @@ PowerTypeEntry const* DB2Manager::GetPowerTypeByName(std::string const& name) co
for (PowerTypeEntry const* powerType : sPowerTypeStore)
{
std::string powerName = powerType->NameGlobalStringTag;
- std::transform(powerName.begin(), powerName.end(), powerName.begin(), [](char c) { return char(::tolower(c)); });
+ strToLower(powerName);
if (powerName == name)
return powerType;
diff --git a/src/server/game/DataStores/GameTables.cpp b/src/server/game/DataStores/GameTables.cpp
index e164253a084..0d30439c685 100644
--- a/src/server/game/DataStores/GameTables.cpp
+++ b/src/server/game/DataStores/GameTables.cpp
@@ -19,6 +19,7 @@
#include "ItemTemplate.h"
#include "Timer.h"
#include "Log.h"
+#include "StringConvert.h"
#include "Util.h"
#include <boost/filesystem/path.hpp>
#include <fstream>
@@ -84,14 +85,14 @@ inline uint32 LoadGameTable(std::vector<std::string>& errors, GameTable<T>& stor
ASSERT(std::size_t(std::distance(values.begin(), end)) == columnDefs.size(), SZFMTD " == " SZFMTD, std::size_t(std::distance(values.begin(), end)), columnDefs.size());
// client ignores id column - CombatRatings has copypasted rows for levels > 110
- //ASSERT(strtol(values[0], nullptr, 10) == data.size(),
- // "Unexpected row identifier %u at row " SZFMTD " (expected " SZFMTD ")",
- // strtol(values[0], nullptr, 10), data.size(), data.size());
+ //ASSERT(Trinity::StringTo<int32>(values[0], 10) == data.size(),
+ // "Unexpected row identifier %d at row " SZFMTD " (expected " SZFMTD ")",
+ // Trinity::StringTo<int32>(values[0], 10).value_or(0), data.size(), data.size());
data.emplace_back();
float* row = reinterpret_cast<float*>(&data.back());
for (auto itr = values.begin() + 1; itr != end; ++itr)
- *row++ = strtof(itr->data(), nullptr);
+ *row++ = Trinity::StringTo<float>(itr->data(), 10).value_or(0.0f);
}
storage.SetData(std::move(data));
diff --git a/src/server/game/Entities/Object/ObjectGuid.cpp b/src/server/game/Entities/Object/ObjectGuid.cpp
index 0d6fd328be3..77e9bef5746 100644
--- a/src/server/game/Entities/Object/ObjectGuid.cpp
+++ b/src/server/game/Entities/Object/ObjectGuid.cpp
@@ -535,7 +535,7 @@ std::string ObjectGuid::ToString() const
std::string ObjectGuid::ToHexString() const
{
- return Trinity::StringFormat("0x%016llX%016llX", _data[1], _data[0]);
+ return Trinity::StringFormat("0x{:016X}{:016X}", _data[1], _data[0]);
}
ObjectGuid ObjectGuid::FromString(std::string const& guidString)
diff --git a/src/server/game/Scripting/ScriptReloadMgr.cpp b/src/server/game/Scripting/ScriptReloadMgr.cpp
index 16d52343119..121cbc2286c 100644
--- a/src/server/game/Scripting/ScriptReloadMgr.cpp
+++ b/src/server/game/Scripting/ScriptReloadMgr.cpp
@@ -384,8 +384,7 @@ static std::shared_ptr<Trinity::AsyncProcessResult> InvokeAsyncCMakeCommand(T&&.
static std::string CalculateScriptModuleProjectName(std::string const& module)
{
std::string module_project = "scripts_" + module;
- std::transform(module_project.begin(), module_project.end(),
- module_project.begin(), ::tolower);
+ strToLower(module_project);
return module_project;
}
diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp
index 93991977321..08c972cc12f 100644
--- a/src/server/game/Server/WorldSocket.cpp
+++ b/src/server/game/Server/WorldSocket.cpp
@@ -823,7 +823,7 @@ void WorldSocket::HandleAuthSessionCallback(std::shared_ptr<WorldPackets::Auth::
//! Negative mutetime indicates amount of seconds to be muted effective on next login - which is now.
if (mutetime < 0)
{
- mutetime = GameTime::GetGameTime() + llabs(mutetime);
+ mutetime = GameTime::GetGameTime() + std::llabs(mutetime);
stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_MUTE_TIME_LOGIN);
stmt->setInt64(0, mutetime);
diff --git a/src/server/game/Spells/SpellScript.h b/src/server/game/Spells/SpellScript.h
index 038020536cc..db41de17c8c 100644
--- a/src/server/game/Spells/SpellScript.h
+++ b/src/server/game/Spells/SpellScript.h
@@ -412,7 +412,7 @@ class TC_GAME_API SpellScript : public _SpellScript
class OnCalculateResistAbsorbHandlerFunction : public SpellScript::OnCalculateResistAbsorbHandler { public: explicit OnCalculateResistAbsorbHandlerFunction(SpellOnResistAbsorbCalculateFnType _onCalculateResistAbsorbScript) : SpellScript::OnCalculateResistAbsorbHandler((SpellScript::SpellOnResistAbsorbCalculateFnType)_onCalculateResistAbsorbScript) { } }; \
class ObjectAreaTargetSelectHandlerFunction : public SpellScript::ObjectAreaTargetSelectHandler { public: explicit ObjectAreaTargetSelectHandlerFunction(SpellObjectAreaTargetSelectFnType _pObjectAreaTargetSelectHandlerScript, uint8 _effIndex, uint16 _targetType) : SpellScript::ObjectAreaTargetSelectHandler((SpellScript::SpellObjectAreaTargetSelectFnType)_pObjectAreaTargetSelectHandlerScript, _effIndex, _targetType) { } }; \
class ObjectTargetSelectHandlerFunction : public SpellScript::ObjectTargetSelectHandler { public: explicit ObjectTargetSelectHandlerFunction(SpellObjectTargetSelectFnType _pObjectTargetSelectHandlerScript, uint8 _effIndex, uint16 _targetType) : SpellScript::ObjectTargetSelectHandler((SpellScript::SpellObjectTargetSelectFnType)_pObjectTargetSelectHandlerScript, _effIndex, _targetType) { } }; \
- class DestinationTargetSelectHandlerFunction : public SpellScript::DestinationTargetSelectHandler { public: explicit DestinationTargetSelectHandlerFunction(SpellDestinationTargetSelectFnType _DestinationTargetSelectHandlerScript, uint8 _effIndex, uint16 _targetType) : SpellScript::DestinationTargetSelectHandler((SpellScript::SpellDestinationTargetSelectFnType)_DestinationTargetSelectHandlerScript, _effIndex, _targetType) { } };
+ class DestinationTargetSelectHandlerFunction : public SpellScript::DestinationTargetSelectHandler { public: explicit DestinationTargetSelectHandlerFunction(SpellDestinationTargetSelectFnType _DestinationTargetSelectHandlerScript, uint8 _effIndex, uint16 _targetType) : SpellScript::DestinationTargetSelectHandler((SpellScript::SpellDestinationTargetSelectFnType)_DestinationTargetSelectHandlerScript, _effIndex, _targetType) { } }
#define PrepareSpellScript(CLASSNAME) SPELLSCRIPT_FUNCTION_TYPE_DEFINES(CLASSNAME) SPELLSCRIPT_FUNCTION_CAST_DEFINES(CLASSNAME)
public:
diff --git a/src/server/game/Tools/PlayerDump.cpp b/src/server/game/Tools/PlayerDump.cpp
index 0eabe462431..5fe16403faa 100644
--- a/src/server/game/Tools/PlayerDump.cpp
+++ b/src/server/game/Tools/PlayerDump.cpp
@@ -23,6 +23,7 @@
#include "Log.h"
#include "ObjectMgr.h"
#include "Player.h"
+#include "StringConvert.h"
#include "World.h"
#include <boost/algorithm/string/find.hpp>
#include <fstream>
@@ -592,7 +593,7 @@ inline T RegisterNewGuid(T oldGuid, MapType<T, T, Rest...>& guidMap, T guidOffse
template <typename T, template<class, class, class...> class MapType, class... Rest>
inline bool ChangeGuid(TableStruct const& ts, std::string& str, std::string const& column, MapType<T, T, Rest...>& guidMap, T guidOffset, bool allowZero = false)
{
- T oldGuid(atoull(GetColumn(ts, str, column).c_str()));
+ T oldGuid = Trinity::StringTo<T>(GetColumn(ts, str, column)).template value_or<T>(0);
if (allowZero && !oldGuid)
return true; // not an error
@@ -1015,10 +1016,10 @@ DumpReturn PlayerDumpReader::LoadDump(std::istream& input, uint32 account, std::
{
case DTT_CHARACTER:
{
- race = uint8(atoul(GetColumn(ts, line, "race").c_str()));
- playerClass = uint8(atoul(GetColumn(ts, line, "class").c_str()));
- gender = uint8(atoul(GetColumn(ts, line, "gender").c_str()));
- level = uint8(atoul(GetColumn(ts, line, "level").c_str()));
+ race = Trinity::StringTo<uint8>(GetColumn(ts, line, "race")).value_or<uint8>(0);
+ playerClass = Trinity::StringTo<uint8>(GetColumn(ts, line, "class")).value_or<uint8>(0);
+ gender = Trinity::StringTo<uint8>(GetColumn(ts, line, "gender")).value_or<uint8>(0);
+ level = Trinity::StringTo<uint8>(GetColumn(ts, line, "level")).value_or<uint8>(0);
if (name.empty())
{
// generate a temporary name