From 05f2bedf88b5d355609dd455aee1dadad2698b98 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Wed, 25 Mar 2026 11:40:49 -0700 Subject: [PATCH] refactor: replace C-style casts with static_cast and extract toLowerInPlace Replace ~300 C-style casts ((int), (float), (uint32_t), etc.) with static_cast across 15 source files. Extract toLowerInPlace() helper in lua_engine.cpp to replace 72 identical tolower loop patterns. --- src/addons/lua_engine.cpp | 148 ++++++++++++------------ src/auth/auth_handler.cpp | 38 +++---- src/auth/auth_packets.cpp | 18 +-- src/core/application.cpp | 38 +++---- src/game/game_handler.cpp | 168 ++++++++++++++-------------- src/game/packet_parsers_classic.cpp | 44 ++++---- src/game/packet_parsers_tbc.cpp | 32 +++--- src/game/transport_manager.cpp | 4 +- src/game/world_packets.cpp | 114 +++++++++---------- src/network/world_socket.cpp | 26 ++--- src/pipeline/asset_manager.cpp | 2 +- src/pipeline/blp_loader.cpp | 4 +- src/rendering/renderer.cpp | 14 +-- src/ui/game_screen.cpp | 114 +++++++++---------- src/ui/talent_screen.cpp | 2 +- 15 files changed, 385 insertions(+), 381 deletions(-) diff --git a/src/addons/lua_engine.cpp b/src/addons/lua_engine.cpp index 2e555903..536688fb 100644 --- a/src/addons/lua_engine.cpp +++ b/src/addons/lua_engine.cpp @@ -21,6 +21,10 @@ extern "C" { namespace wowee::addons { +static void toLowerInPlace(std::string& s) { + toLowerInPlace(s); +} + // Shared GetTime() epoch — all time-returning functions must use this same origin // so that addon calculations like (start + duration - GetTime()) are consistent. static const auto kLuaTimeEpoch = std::chrono::steady_clock::now(); @@ -133,7 +137,7 @@ static game::Unit* resolveUnit(lua_State* L, const char* unitId) { auto* gh = getGameHandler(L); if (!gh || !unitId) return nullptr; std::string uid(unitId); - for (char& c : uid) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uid); uint64_t guid = resolveUnitGuid(gh, uid); if (guid == 0) return nullptr; @@ -162,7 +166,7 @@ static int lua_UnitName(lua_State* L) { // Fallback: party member name for out-of-range members auto* gh = getGameHandler(L); std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = gh ? resolveUnitGuid(gh, uidStr) : 0; const auto* pm = findPartyMember(gh, guid); if (pm && !pm->name.empty()) { @@ -188,7 +192,7 @@ static int lua_UnitHealth(lua_State* L) { // Fallback: party member stats for out-of-range members auto* gh = getGameHandler(L); std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = gh ? resolveUnitGuid(gh, uidStr) : 0; const auto* pm = findPartyMember(gh, guid); lua_pushnumber(L, pm ? pm->curHealth : 0); @@ -204,7 +208,7 @@ static int lua_UnitHealthMax(lua_State* L) { } else { auto* gh = getGameHandler(L); std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = gh ? resolveUnitGuid(gh, uidStr) : 0; const auto* pm = findPartyMember(gh, guid); lua_pushnumber(L, pm ? pm->maxHealth : 0); @@ -220,7 +224,7 @@ static int lua_UnitPower(lua_State* L) { } else { auto* gh = getGameHandler(L); std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = gh ? resolveUnitGuid(gh, uidStr) : 0; const auto* pm = findPartyMember(gh, guid); lua_pushnumber(L, pm ? pm->curPower : 0); @@ -236,7 +240,7 @@ static int lua_UnitPowerMax(lua_State* L) { } else { auto* gh = getGameHandler(L); std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = gh ? resolveUnitGuid(gh, uidStr) : 0; const auto* pm = findPartyMember(gh, guid); lua_pushnumber(L, pm ? pm->maxPower : 0); @@ -252,7 +256,7 @@ static int lua_UnitLevel(lua_State* L) { } else { auto* gh = getGameHandler(L); std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = gh ? resolveUnitGuid(gh, uidStr) : 0; const auto* pm = findPartyMember(gh, guid); lua_pushnumber(L, pm ? pm->level : 0); @@ -269,7 +273,7 @@ static int lua_UnitExists(lua_State* L) { // Party members in other zones don't have entities but still "exist" auto* gh = getGameHandler(L); std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = gh ? resolveUnitGuid(gh, uidStr) : 0; lua_pushboolean(L, guid != 0 && findPartyMember(gh, guid) != nullptr); } @@ -285,7 +289,7 @@ static int lua_UnitIsDead(lua_State* L) { // Fallback: party member stats for out-of-range members auto* gh = getGameHandler(L); std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = gh ? resolveUnitGuid(gh, uidStr) : 0; const auto* pm = findPartyMember(gh, guid); lua_pushboolean(L, pm ? (pm->curHealth == 0 && pm->maxHealth > 0) : 0); @@ -302,7 +306,7 @@ static int lua_UnitClass(lua_State* L) { "Death Knight","Shaman","Mage","Warlock","","Druid"}; uint8_t classId = 0; std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); if (uidStr == "player") { classId = gh->getPlayerClass(); } else { @@ -339,7 +343,7 @@ static int lua_UnitIsGhost(lua_State* L) { auto* gh = getGameHandler(L); if (!gh) { lua_pushboolean(L, 0); return 1; } std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); if (uidStr == "player") { lua_pushboolean(L, gh->isPlayerGhost()); } else { @@ -366,7 +370,7 @@ static int lua_UnitIsDeadOrGhost(lua_State* L) { bool dead = (unit && unit->getHealth() == 0); if (!dead && gh) { std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); if (uidStr == "player") dead = gh->isPlayerGhost() || gh->isPlayerDead(); } lua_pushboolean(L, dead); @@ -379,7 +383,7 @@ static int lua_UnitIsAFK(lua_State* L) { auto* gh = getGameHandler(L); if (!gh) { lua_pushboolean(L, 0); return 1; } std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = resolveUnitGuid(gh, uidStr); if (guid != 0) { auto entity = gh->getEntityManager().getEntity(guid); @@ -399,7 +403,7 @@ static int lua_UnitIsDND(lua_State* L) { auto* gh = getGameHandler(L); if (!gh) { lua_pushboolean(L, 0); return 1; } std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = resolveUnitGuid(gh, uidStr); if (guid != 0) { auto entity = gh->getEntityManager().getEntity(guid); @@ -419,7 +423,7 @@ static int lua_UnitPlayerControlled(lua_State* L) { auto* gh = getGameHandler(L); if (!gh) { lua_pushboolean(L, 0); return 1; } std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = resolveUnitGuid(gh, uidStr); if (guid == 0) { lua_pushboolean(L, 0); return 1; } auto entity = gh->getEntityManager().getEntity(guid); @@ -473,14 +477,14 @@ static int lua_UnitThreatSituation(lua_State* L) { const char* uid = luaL_optstring(L, 1, "player"); const char* mobUid = luaL_optstring(L, 2, nullptr); std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t playerUnitGuid = resolveUnitGuid(gh, uidStr); if (playerUnitGuid == 0) { lua_pushnumber(L, 0); return 1; } // If no mob specified, check general combat threat against current target uint64_t mobGuid = 0; if (mobUid && *mobUid) { std::string mStr(mobUid); - for (char& c : mStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(mStr); mobGuid = resolveUnitGuid(gh, mStr); } // Approximate threat: check if the mob is targeting this unit @@ -521,13 +525,13 @@ static int lua_UnitDetailedThreatSituation(lua_State* L) { const char* uid = luaL_optstring(L, 1, "player"); const char* mobUid = luaL_optstring(L, 2, nullptr); std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t unitGuid = resolveUnitGuid(gh, uidStr); bool isTanking = false; int status = 0; if (unitGuid != 0 && mobUid && *mobUid) { std::string mStr(mobUid); - for (char& c : mStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(mStr); uint64_t mobGuid = resolveUnitGuid(gh, mStr); if (mobGuid != 0) { auto mobEnt = gh->getEntityManager().getEntity(mobGuid); @@ -557,7 +561,7 @@ static int lua_UnitDistanceSquared(lua_State* L) { if (!gh) { lua_pushnumber(L, 0); lua_pushboolean(L, 0); return 2; } const char* uid = luaL_checkstring(L, 1); std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = resolveUnitGuid(gh, uidStr); if (guid == 0 || guid == gh->getPlayerGuid()) { lua_pushnumber(L, 0); lua_pushboolean(L, 0); return 2; } auto targetEnt = gh->getEntityManager().getEntity(guid); @@ -579,7 +583,7 @@ static int lua_CheckInteractDistance(lua_State* L) { const char* uid = luaL_checkstring(L, 1); int distIdx = static_cast(luaL_optnumber(L, 2, 4)); std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = resolveUnitGuid(gh, uidStr); if (guid == 0) { lua_pushboolean(L, 0); return 1; } auto targetEnt = gh->getEntityManager().getEntity(guid); @@ -613,10 +617,10 @@ static int lua_IsSpellInRange(lua_State* L) { spellId = static_cast(strtoul(spellNameOrId, nullptr, 10)); } else { std::string nameLow(spellNameOrId); - for (char& c : nameLow) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(nameLow); for (uint32_t sid : gh->getKnownSpells()) { std::string sn = gh->getSpellName(sid); - for (char& c : sn) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(sn); if (sn == nameLow) { spellId = sid; break; } } } @@ -628,7 +632,7 @@ static int lua_IsSpellInRange(lua_State* L) { // Resolve target position std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = resolveUnitGuid(gh, uidStr); if (guid == 0) { lua_pushnil(L); return 1; } auto targetEnt = gh->getEntityManager().getEntity(guid); @@ -657,7 +661,7 @@ static int lua_UnitGroupRolesAssigned(lua_State* L) { if (!gh) { lua_pushstring(L, "NONE"); return 1; } const char* uid = luaL_optstring(L, 1, "player"); std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = resolveUnitGuid(gh, uidStr); if (guid == 0) { lua_pushstring(L, "NONE"); return 1; } const auto& pd = gh->getPartyData(); @@ -681,8 +685,8 @@ static int lua_UnitCanAttack(lua_State* L) { const char* uid1 = luaL_checkstring(L, 1); const char* uid2 = luaL_checkstring(L, 2); std::string u1(uid1), u2(uid2); - for (char& c : u1) c = static_cast(std::tolower(static_cast(c))); - for (char& c : u2) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(u1); + toLowerInPlace(u2); uint64_t g1 = resolveUnitGuid(gh, u1); uint64_t g2 = resolveUnitGuid(gh, u2); if (g1 == 0 || g2 == 0 || g1 == g2) { lua_pushboolean(L, 0); return 1; } @@ -714,7 +718,7 @@ static int lua_UnitCreatureFamily(lua_State* L) { if (!gh) { lua_pushnil(L); return 1; } const char* uid = luaL_optstring(L, 1, "target"); std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = resolveUnitGuid(gh, uidStr); if (guid == 0) { lua_pushnil(L); return 1; } auto entity = gh->getEntityManager().getEntity(guid); @@ -743,7 +747,7 @@ static int lua_UnitOnTaxi(lua_State* L) { auto* gh = getGameHandler(L); if (!gh) { lua_pushboolean(L, 0); return 1; } std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); if (uidStr == "player") { lua_pushboolean(L, gh->isOnTaxiFlight()); } else { @@ -758,7 +762,7 @@ static int lua_UnitSex(lua_State* L) { auto* gh = getGameHandler(L); if (!gh) { lua_pushnumber(L, 1); return 1; } std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = resolveUnitGuid(gh, uidStr); if (guid != 0) { auto entity = gh->getEntityManager().getEntity(guid); @@ -1068,7 +1072,7 @@ static int lua_UnitRace(lua_State* L) { auto* gh = getGameHandler(L); if (!gh) { lua_pushstring(L, "Unknown"); lua_pushstring(L, "Unknown"); lua_pushnumber(L, 0); return 3; } std::string uid(luaL_optstring(L, 1, "player")); - for (char& c : uid) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uid); static const char* kRaces[] = {"","Human","Orc","Dwarf","Night Elf","Undead", "Tauren","Gnome","Troll","","Blood Elf","Draenei"}; uint8_t raceId = 0; @@ -1108,7 +1112,7 @@ static int lua_UnitPowerType(lua_State* L) { // Fallback: party member stats for out-of-range members auto* gh = getGameHandler(L); std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = gh ? resolveUnitGuid(gh, uidStr) : 0; const auto* pm = findPartyMember(gh, guid); if (pm) { @@ -1133,7 +1137,7 @@ static int lua_UnitGUID(lua_State* L) { auto* gh = getGameHandler(L); if (!gh) { lua_pushnil(L); return 1; } std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = resolveUnitGuid(gh, uidStr); if (guid == 0) { lua_pushnil(L); return 1; } char buf[32]; @@ -1147,7 +1151,7 @@ static int lua_UnitIsPlayer(lua_State* L) { auto* gh = getGameHandler(L); if (!gh) { lua_pushboolean(L, 0); return 1; } std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = resolveUnitGuid(gh, uidStr); auto entity = guid ? gh->getEntityManager().getEntity(guid) : nullptr; lua_pushboolean(L, entity && entity->getType() == game::ObjectType::PLAYER); @@ -1249,7 +1253,7 @@ static int lua_UnitAura(lua_State* L, bool wantBuff) { if (index < 1) { lua_pushnil(L); return 1; } std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); const std::vector* auras = nullptr; if (uidStr == "player") auras = &gh->getPlayerAuras(); @@ -1453,19 +1457,19 @@ static int lua_CastSpellByName(lua_State* L) { // Find highest rank of spell by name (same logic as /cast) std::string nameLow(name); - for (char& c : nameLow) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(nameLow); uint32_t bestId = 0; int bestRank = -1; for (uint32_t sid : gh->getKnownSpells()) { std::string sn = gh->getSpellName(sid); - for (char& c : sn) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(sn); if (sn != nameLow) continue; int rank = 0; const std::string& rk = gh->getSpellRank(sid); if (!rk.empty()) { std::string rkl = rk; - for (char& c : rkl) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(rkl); if (rkl.rfind("rank ", 0) == 0) { try { rank = std::stoi(rkl.substr(5)); } catch (...) {} } @@ -1748,10 +1752,10 @@ static int lua_GetSpellCooldown(lua_State* L) { } else { const char* name = luaL_checkstring(L, 1); std::string nameLow(name); - for (char& c : nameLow) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(nameLow); for (uint32_t sid : gh->getKnownSpells()) { std::string sn = gh->getSpellName(sid); - for (char& c : sn) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(sn); if (sn == nameLow) { spellId = sid; break; } } } @@ -1795,7 +1799,7 @@ static int lua_TargetUnit(lua_State* L) { if (!gh) return 0; const char* uid = luaL_checkstring(L, 1); std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = resolveUnitGuid(gh, uidStr); if (guid != 0) gh->setTarget(guid); return 0; @@ -1815,7 +1819,7 @@ static int lua_FocusUnit(lua_State* L) { const char* uid = luaL_optstring(L, 1, nullptr); if (!uid || !*uid) return 0; std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = resolveUnitGuid(gh, uidStr); if (guid != 0) gh->setFocus(guid); return 0; @@ -1834,7 +1838,7 @@ static int lua_AssistUnit(lua_State* L) { if (!gh) return 0; const char* uid = luaL_optstring(L, 1, "target"); std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = resolveUnitGuid(gh, uidStr); if (guid == 0) return 0; uint64_t theirTarget = getEntityTargetGuid(gh, guid); @@ -1869,7 +1873,7 @@ static int lua_GetRaidTargetIndex(lua_State* L) { if (!gh) { lua_pushnil(L); return 1; } const char* uid = luaL_optstring(L, 1, "target"); std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = resolveUnitGuid(gh, uidStr); if (guid == 0) { lua_pushnil(L); return 1; } uint8_t mark = gh->getEntityRaidMark(guid); @@ -1885,7 +1889,7 @@ static int lua_SetRaidTarget(lua_State* L) { const char* uid = luaL_optstring(L, 1, "target"); int index = static_cast(luaL_checknumber(L, 2)); std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = resolveUnitGuid(gh, uidStr); if (guid == 0) return 0; if (index >= 1 && index <= 8) @@ -1929,17 +1933,17 @@ static int lua_GetSpellInfo(lua_State* L) { const char* name = lua_tostring(L, 1); if (!name || !*name) { lua_pushnil(L); return 1; } std::string nameLow(name); - for (char& c : nameLow) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(nameLow); int bestRank = -1; for (uint32_t sid : gh->getKnownSpells()) { std::string sn = gh->getSpellName(sid); - for (char& c : sn) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(sn); if (sn != nameLow) continue; int rank = 0; const std::string& rk = gh->getSpellRank(sid); if (!rk.empty()) { std::string rkl = rk; - for (char& c : rkl) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(rkl); if (rkl.rfind("rank ", 0) == 0) { try { rank = std::stoi(rkl.substr(5)); } catch (...) {} } @@ -1979,10 +1983,10 @@ static int lua_GetSpellTexture(lua_State* L) { const char* name = lua_tostring(L, 1); if (!name || !*name) { lua_pushnil(L); return 1; } std::string nameLow(name); - for (char& c : nameLow) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(nameLow); for (uint32_t sid : gh->getKnownSpells()) { std::string sn = gh->getSpellName(sid); - for (char& c : sn) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(sn); if (sn == nameLow) { spellId = sid; break; } } } @@ -2642,7 +2646,7 @@ static int lua_GetInventoryItemLink(lua_State* L) { int slotId = static_cast(luaL_checknumber(L, 2)); if (!gh || slotId < 1 || slotId > 19) { lua_pushnil(L); return 1; } std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); if (uidStr != "player") { lua_pushnil(L); return 1; } const auto& inv = gh->getInventory(); @@ -2667,7 +2671,7 @@ static int lua_GetInventoryItemID(lua_State* L) { int slotId = static_cast(luaL_checknumber(L, 2)); if (!gh || slotId < 1 || slotId > 19) { lua_pushnil(L); return 1; } std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); if (uidStr != "player") { lua_pushnil(L); return 1; } const auto& inv = gh->getInventory(); @@ -2683,7 +2687,7 @@ static int lua_GetInventoryItemTexture(lua_State* L) { int slotId = static_cast(luaL_checknumber(L, 2)); if (!gh || slotId < 1 || slotId > 19) { lua_pushnil(L); return 1; } std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); if (uidStr != "player") { lua_pushnil(L); return 1; } const auto& inv = gh->getInventory(); @@ -2722,7 +2726,7 @@ static int lua_UnitXP(lua_State* L) { auto* gh = getGameHandler(L); if (!gh) { lua_pushnumber(L, 0); return 1; } std::string u(uid); - for (char& c : u) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(u); if (u == "player") lua_pushnumber(L, gh->getPlayerXp()); else lua_pushnumber(L, 0); return 1; @@ -2733,7 +2737,7 @@ static int lua_UnitXPMax(lua_State* L) { auto* gh = getGameHandler(L); if (!gh) { lua_pushnumber(L, 1); return 1; } std::string u(uid); - for (char& c : u) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(u); if (u == "player") { uint32_t nlxp = gh->getPlayerNextLevelXp(); lua_pushnumber(L, nlxp > 0 ? nlxp : 1); @@ -3438,7 +3442,7 @@ static int lua_UnitAffectingCombat(lua_State* L) { auto* gh = getGameHandler(L); if (!gh) { lua_pushboolean(L, 0); return 1; } std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); if (uidStr == "player") { lua_pushboolean(L, gh->isInCombat()); } else { @@ -3483,7 +3487,7 @@ static int lua_UnitInParty(lua_State* L) { auto* gh = getGameHandler(L); if (!gh) { lua_pushboolean(L, 0); return 1; } std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); if (uidStr == "player") { lua_pushboolean(L, gh->isInGroup()); } else { @@ -3504,7 +3508,7 @@ static int lua_UnitInRaid(lua_State* L) { auto* gh = getGameHandler(L); if (!gh) { lua_pushboolean(L, 0); return 1; } std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); const auto& pd = gh->getPartyData(); if (pd.groupType != 1) { lua_pushboolean(L, 0); return 1; } if (uidStr == "player") { @@ -3582,8 +3586,8 @@ static int lua_UnitIsUnit(lua_State* L) { const char* uid1 = luaL_checkstring(L, 1); const char* uid2 = luaL_checkstring(L, 2); std::string u1(uid1), u2(uid2); - for (char& c : u1) c = static_cast(std::tolower(static_cast(c))); - for (char& c : u2) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(u1); + toLowerInPlace(u2); uint64_t g1 = resolveUnitGuid(gh, u1); uint64_t g2 = resolveUnitGuid(gh, u2); lua_pushboolean(L, g1 != 0 && g1 == g2); @@ -3609,7 +3613,7 @@ static int lua_UnitCreatureType(lua_State* L) { if (!gh) { lua_pushstring(L, "Unknown"); return 1; } const char* uid = luaL_optstring(L, 1, "target"); std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = resolveUnitGuid(gh, uidStr); if (guid == 0) { lua_pushstring(L, "Unknown"); return 1; } auto entity = gh->getEntityManager().getEntity(guid); @@ -3709,10 +3713,10 @@ static int lua_GetSpellLink(lua_State* L) { const char* name = lua_tostring(L, 1); if (!name || !*name) { lua_pushnil(L); return 1; } std::string nameLow(name); - for (char& c : nameLow) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(nameLow); for (uint32_t sid : gh->getKnownSpells()) { std::string sn = gh->getSpellName(sid); - for (char& c : sn) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(sn); if (sn == nameLow) { spellId = sid; break; } } } @@ -3737,10 +3741,10 @@ static int lua_IsUsableSpell(lua_State* L) { const char* name = lua_tostring(L, 1); if (!name || !*name) { lua_pushboolean(L, 0); lua_pushboolean(L, 0); return 2; } std::string nameLow(name); - for (char& c : nameLow) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(nameLow); for (uint32_t sid : gh->getKnownSpells()) { std::string sn = gh->getSpellName(sid); - for (char& c : sn) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(sn); if (sn == nameLow) { spellId = sid; break; } } } @@ -3816,7 +3820,7 @@ static int lua_UnitClassification(lua_State* L) { if (!gh) { lua_pushstring(L, "normal"); return 1; } const char* uid = luaL_optstring(L, 1, "target"); std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = resolveUnitGuid(gh, uidStr); if (guid == 0) { lua_pushstring(L, "normal"); return 1; } auto entity = gh->getEntityManager().getEntity(guid); @@ -3855,9 +3859,9 @@ static int lua_UnitReaction(lua_State* L) { if (!unit2) { lua_pushnil(L); return 1; } // If unit2 is the player, always friendly to self std::string u1(uid1); - for (char& c : u1) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(u1); std::string u2(uid2); - for (char& c : u2) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(u2); uint64_t g1 = resolveUnitGuid(gh, u1); uint64_t g2 = resolveUnitGuid(gh, u2); if (g1 == g2) { lua_pushnumber(L, 5); return 1; } // same unit = friendly @@ -3875,7 +3879,7 @@ static int lua_UnitIsConnected(lua_State* L) { if (!gh) { lua_pushboolean(L, 0); return 1; } const char* uid = luaL_optstring(L, 1, "player"); std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); uint64_t guid = resolveUnitGuid(gh, uidStr); if (guid == 0) { lua_pushboolean(L, 0); return 1; } // Player is always connected @@ -4164,7 +4168,7 @@ static int lua_CancelUnitBuff(lua_State* L) { if (!gh) return 0; const char* uid = luaL_optstring(L, 1, "player"); std::string uidStr(uid); - for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(uidStr); if (uidStr != "player") return 0; // Can only cancel own buffs int index = static_cast(luaL_checknumber(L, 2)); const auto& auras = gh->getPlayerAuras(); @@ -7474,7 +7478,7 @@ bool LuaEngine::dispatchSlashCommand(const std::string& command, const std::stri if (!lua_istable(L_, -1)) { lua_pop(L_, 1); return false; } std::string cmdLower = command; - for (char& c : cmdLower) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(cmdLower); lua_pushnil(L_); while (lua_next(L_, -2) != 0) { @@ -7491,7 +7495,7 @@ bool LuaEngine::dispatchSlashCommand(const std::string& command, const std::stri lua_getglobal(L_, globalName.c_str()); if (lua_isstring(L_, -1)) { std::string slashStr = lua_tostring(L_, -1); - for (char& c : slashStr) c = static_cast(std::tolower(static_cast(c))); + toLowerInPlace(slashStr); if (slashStr == cmdLower) { lua_pop(L_, 1); // pop global // Call the handler with args diff --git a/src/auth/auth_handler.cpp b/src/auth/auth_handler.cpp index bf1a590d..77794365 100644 --- a/src/auth/auth_handler.cpp +++ b/src/auth/auth_handler.cpp @@ -82,7 +82,7 @@ void AuthHandler::requestRealmList() { return; } if (state != AuthState::AUTHENTICATED && state != AuthState::REALM_LIST_RECEIVED) { - LOG_ERROR("Cannot request realm list: not authenticated (state: ", (int)state, ")"); + LOG_ERROR("Cannot request realm list: not authenticated (state: ", static_cast(state), ")"); return; } @@ -182,11 +182,11 @@ void AuthHandler::handleLogonChallengeResponse(network::Packet& packet) { if (response.result == AuthResult::BUILD_INVALID || response.result == AuthResult::BUILD_UPDATE) { std::ostringstream ss; ss << "LOGON_CHALLENGE failed: version mismatch (client v" - << (int)clientInfo.majorVersion << "." - << (int)clientInfo.minorVersion << "." - << (int)clientInfo.patchVersion + << static_cast(clientInfo.majorVersion) << "." + << static_cast(clientInfo.minorVersion) << "." + << static_cast(clientInfo.patchVersion) << " build " << clientInfo.build - << ", auth protocol " << (int)clientInfo.protocolVersion << ")"; + << ", auth protocol " << static_cast(clientInfo.protocolVersion) << ")"; fail(ss.str()); } else { fail(std::string("LOGON_CHALLENGE failed: ") + getAuthResultString(response.result)); @@ -195,14 +195,14 @@ void AuthHandler::handleLogonChallengeResponse(network::Packet& packet) { } if (response.securityFlags != 0) { - LOG_WARNING("Server sent security flags: 0x", std::hex, (int)response.securityFlags, std::dec); + LOG_WARNING("Server sent security flags: 0x", std::hex, static_cast(response.securityFlags), std::dec); if (response.securityFlags & 0x01) LOG_WARNING(" PIN required"); if (response.securityFlags & 0x02) LOG_WARNING(" Matrix card required (not supported)"); if (response.securityFlags & 0x04) LOG_WARNING(" Authenticator required (not supported)"); } LOG_INFO("Challenge: N=", response.N.size(), "B g=", response.g.size(), "B salt=", - response.salt.size(), "B secFlags=0x", std::hex, (int)response.securityFlags, std::dec); + response.salt.size(), "B secFlags=0x", std::hex, static_cast(response.securityFlags), std::dec); // Feed SRP with server challenge data srp->feed(response.B, response.g, response.N, response.salt); @@ -389,7 +389,7 @@ void AuthHandler::handleRealmListResponse(network::Packet& packet) { const auto& realm = realms[i]; LOG_INFO("Realm ", (i + 1), ": ", realm.name); LOG_INFO(" Address: ", realm.address); - LOG_INFO(" ID: ", (int)realm.id); + LOG_INFO(" ID: ", static_cast(realm.id)); LOG_INFO(" Population: ", realm.population); LOG_INFO(" Characters: ", static_cast(realm.characters)); if (realm.hasVersionInfo()) { @@ -421,9 +421,9 @@ void AuthHandler::handlePacket(network::Packet& packet) { const auto& raw = packet.getData(); std::ostringstream hs; for (size_t i = 0; i < std::min(raw.size(), 40); ++i) - hs << std::hex << std::setfill('0') << std::setw(2) << (int)raw[i]; + hs << std::hex << std::setfill('0') << std::setw(2) << static_cast(raw[i]); if (raw.size() > 40) hs << "..."; - LOG_INFO("Auth pkt 0x", std::hex, (int)opcodeValue, std::dec, + LOG_INFO("Auth pkt 0x", std::hex, static_cast(opcodeValue), std::dec, " (", raw.size(), "B): ", hs.str()); } @@ -442,11 +442,11 @@ void AuthHandler::handlePacket(network::Packet& packet) { } if (response.result == AuthResult::BUILD_INVALID || response.result == AuthResult::BUILD_UPDATE) { ss << ": version mismatch (client v" - << (int)clientInfo.majorVersion << "." - << (int)clientInfo.minorVersion << "." - << (int)clientInfo.patchVersion + << static_cast(clientInfo.majorVersion) << "." + << static_cast(clientInfo.minorVersion) << "." + << static_cast(clientInfo.patchVersion) << " build " << clientInfo.build - << ", auth protocol " << (int)clientInfo.protocolVersion << ")"; + << ", auth protocol " << static_cast(clientInfo.protocolVersion) << ")"; } else { ss << ": " << getAuthResultString(response.result) << " (code 0x" << std::hex << std::setw(2) << std::setfill('0') @@ -454,7 +454,7 @@ void AuthHandler::handlePacket(network::Packet& packet) { } fail(ss.str()); } else { - LOG_WARNING("Unexpected LOGON_CHALLENGE response in state: ", (int)state); + LOG_WARNING("Unexpected LOGON_CHALLENGE response in state: ", static_cast(state)); } } break; @@ -463,7 +463,7 @@ void AuthHandler::handlePacket(network::Packet& packet) { if (state == AuthState::PROOF_SENT) { handleLogonProofResponse(packet); } else { - LOG_WARNING("Unexpected LOGON_PROOF response in state: ", (int)state); + LOG_WARNING("Unexpected LOGON_PROOF response in state: ", static_cast(state)); } break; @@ -471,12 +471,12 @@ void AuthHandler::handlePacket(network::Packet& packet) { if (state == AuthState::REALM_LIST_REQUESTED) { handleRealmListResponse(packet); } else { - LOG_WARNING("Unexpected REALM_LIST response in state: ", (int)state); + LOG_WARNING("Unexpected REALM_LIST response in state: ", static_cast(state)); } break; default: - LOG_WARNING("Unhandled auth opcode: 0x", std::hex, (int)opcodeValue, std::dec); + LOG_WARNING("Unhandled auth opcode: 0x", std::hex, static_cast(opcodeValue), std::dec); break; } } @@ -503,7 +503,7 @@ void AuthHandler::update(float /*deltaTime*/) { void AuthHandler::setState(AuthState newState) { if (state != newState) { - LOG_DEBUG("Auth state: ", (int)state, " -> ", (int)newState); + LOG_DEBUG("Auth state: ", static_cast(state), " -> ", static_cast(newState)); state = newState; } } diff --git a/src/auth/auth_packets.cpp b/src/auth/auth_packets.cpp index 946f9f97..258490ac 100644 --- a/src/auth/auth_packets.cpp +++ b/src/auth/auth_packets.cpp @@ -207,7 +207,7 @@ bool LogonChallengeResponseParser::parse(network::Packet& packet, LogonChallenge LOG_DEBUG(" g size: ", response.g.size(), " bytes"); LOG_DEBUG(" N size: ", response.N.size(), " bytes"); LOG_DEBUG(" salt size: ", response.salt.size(), " bytes"); - LOG_DEBUG(" Security flags: ", (int)response.securityFlags); + LOG_DEBUG(" Security flags: ", static_cast(response.securityFlags)); if (response.securityFlags & 0x01) { LOG_DEBUG(" PIN grid seed: ", response.pinGridSeed); } @@ -317,10 +317,10 @@ bool LogonProofResponseParser::parse(network::Packet& packet, LogonProofResponse // Status response.status = packet.readUInt8(); - LOG_INFO("LOGON_PROOF response status: ", (int)response.status); + LOG_INFO("LOGON_PROOF response status: ", static_cast(response.status)); if (response.status != 0) { - LOG_ERROR("LOGON_PROOF failed with status: ", (int)response.status); + LOG_ERROR("LOGON_PROOF failed with status: ", static_cast(response.status)); return true; // Valid packet, but proof failed } @@ -428,13 +428,13 @@ bool RealmListResponseParser::parse(network::Packet& packet, RealmListResponse& LOG_DEBUG(" Realm ", static_cast(i), " details:"); LOG_DEBUG(" Name: ", realm.name); LOG_DEBUG(" Address: ", realm.address); - LOG_DEBUG(" ID: ", (int)realm.id); - LOG_DEBUG(" Icon: ", (int)realm.icon); - LOG_DEBUG(" Lock: ", (int)realm.lock); - LOG_DEBUG(" Flags: ", (int)realm.flags); + LOG_DEBUG(" ID: ", static_cast(realm.id)); + LOG_DEBUG(" Icon: ", static_cast(realm.icon)); + LOG_DEBUG(" Lock: ", static_cast(realm.lock)); + LOG_DEBUG(" Flags: ", static_cast(realm.flags)); LOG_DEBUG(" Population: ", realm.population); - LOG_DEBUG(" Characters: ", (int)realm.characters); - LOG_DEBUG(" Timezone: ", (int)realm.timezone); + LOG_DEBUG(" Characters: ", static_cast(realm.characters)); + LOG_DEBUG(" Timezone: ", static_cast(realm.timezone)); response.realms.push_back(realm); } diff --git a/src/core/application.cpp b/src/core/application.cpp index 614c5883..e429df57 100644 --- a/src/core/application.cpp +++ b/src/core/application.cpp @@ -3668,8 +3668,8 @@ void Application::spawnPlayerCharacter() { charFaceId = (activeChar->appearanceBytes >> 8) & 0xFF; charHairStyleId = (activeChar->appearanceBytes >> 16) & 0xFF; charHairColorId = (activeChar->appearanceBytes >> 24) & 0xFF; - LOG_INFO("Appearance: skin=", (int)charSkinId, " face=", (int)charFaceId, - " hairStyle=", (int)charHairStyleId, " hairColor=", (int)charHairColorId); + LOG_INFO("Appearance: skin=", static_cast(charSkinId), " face=", static_cast(charFaceId), + " hairStyle=", static_cast(charHairStyleId), " hairColor=", static_cast(charHairColorId)); } } @@ -3699,7 +3699,7 @@ void Application::spawnPlayerCharacter() { if (!tex1.empty()) { bodySkinPath = tex1; foundSkin = true; - LOG_INFO(" DBC body skin: ", bodySkinPath, " (skin=", (int)charSkinId, ")"); + LOG_INFO(" DBC body skin: ", bodySkinPath, " (skin=", static_cast(charSkinId), ")"); } } // Section 3 = hair: match variation=hairStyle, color=hairColor @@ -3709,7 +3709,7 @@ void Application::spawnPlayerCharacter() { if (!hairTexturePath.empty()) { foundHair = true; LOG_INFO(" DBC hair texture: ", hairTexturePath, - " (style=", (int)charHairStyleId, " color=", (int)charHairColorId, ")"); + " (style=", static_cast(charHairStyleId), " color=", static_cast(charHairColorId), ")"); } } // Section 1 = face: match variation=faceId, colorIndex=skinId @@ -3744,8 +3744,8 @@ void Application::spawnPlayerCharacter() { } if (!foundHair) { - LOG_WARNING("No DBC hair match for style=", (int)charHairStyleId, - " color=", (int)charHairColorId, + LOG_WARNING("No DBC hair match for style=", static_cast(charHairStyleId), + " color=", static_cast(charHairColorId), " race=", targetRaceId, " sex=", targetSexId); } } else { @@ -4363,7 +4363,7 @@ void Application::buildFactionHostilityMap(uint8_t playerRace) { } } } - LOG_INFO("Faction.dbc: ", hostileParentFactions.size(), " factions hostile to race ", (int)playerRace); + LOG_INFO("Faction.dbc: ", hostileParentFactions.size(), " factions hostile to race ", static_cast(playerRace)); } // Get player faction template data @@ -4431,7 +4431,7 @@ void Application::buildFactionHostilityMap(uint8_t playerRace) { uint32_t hostileCount = 0; for (const auto& [fid, h] : factionMap) { if (h) hostileCount++; } gameHandler->setFactionHostileMap(std::move(factionMap)); - LOG_INFO("Faction hostility for race ", (int)playerRace, " (FT ", playerFtId, "): ", + LOG_INFO("Faction hostility for race ", static_cast(playerRace), " (FT ", playerFtId, "): ", hostileCount, "/", ftDbc->getRecordCount(), " hostile (friendGroup=0x", std::hex, playerFriendGroup, ", enemyGroup=0x", playerEnemyGroup, std::dec, ")"); } @@ -5679,7 +5679,7 @@ audio::VoiceType Application::detectVoiceTypeFromDisplayId(uint32_t displayId) c default: result = audio::VoiceType::GENERIC; break; } - LOG_INFO("Voice detection: displayId ", displayId, " -> ", raceName, " ", sexName, " (race=", (int)raceId, ", sex=", (int)sexId, ")"); + LOG_INFO("Voice detection: displayId ", displayId, " -> ", raceName, " ", sexName, " (race=", static_cast(raceId), ", sex=", static_cast(sexId), ")"); return result; } @@ -5926,8 +5926,8 @@ void Application::spawnOnlineCreature(uint64_t guid, uint32_t displayId, float x auto itExtra = humanoidExtraMap_.find(dispData.extraDisplayId); if (itExtra != humanoidExtraMap_.end()) { const auto& extra = itExtra->second; - LOG_DEBUG(" Found humanoid extra: raceId=", (int)extra.raceId, " sexId=", (int)extra.sexId, - " hairStyle=", (int)extra.hairStyleId, " hairColor=", (int)extra.hairColorId, + LOG_DEBUG(" Found humanoid extra: raceId=", static_cast(extra.raceId), " sexId=", static_cast(extra.sexId), + " hairStyle=", static_cast(extra.hairStyleId), " hairColor=", static_cast(extra.hairColorId), " bakeName='", extra.bakeName, "'"); // Collect model texture slot info (type 1 = skin, type 6 = hair) @@ -6459,9 +6459,9 @@ void Application::spawnOnlineCreature(uint64_t guid, uint32_t displayId, float x if (itFacial != facialHairGeosetMap_.end()) { const auto& fhg = itFacial->second; // DBC values are variation indices within each group; add group base - activeGeosets.insert(static_cast(100 + std::max(fhg.geoset100, (uint16_t)1))); - activeGeosets.insert(static_cast(300 + std::max(fhg.geoset300, (uint16_t)1))); - activeGeosets.insert(static_cast(200 + std::max(fhg.geoset200, (uint16_t)1))); + activeGeosets.insert(static_cast(100 + std::max(fhg.geoset100, static_cast(1)))); + activeGeosets.insert(static_cast(300 + std::max(fhg.geoset300, static_cast(1)))); + activeGeosets.insert(static_cast(200 + std::max(fhg.geoset200, static_cast(1)))); } else { activeGeosets.insert(101); // Default group 1: no extra activeGeosets.insert(201); // Default group 2: no facial hair @@ -6658,7 +6658,7 @@ void Application::spawnOnlineCreature(uint64_t guid, uint32_t displayId, float x } } } - LOG_DEBUG("Set humanoid geosets: hair=", (int)hairGeoset, + LOG_DEBUG("Set humanoid geosets: hair=", static_cast(hairGeoset), " sleeves=", geosetSleeves, " pants=", geosetPants, " boots=", geosetBoots, " gloves=", geosetGloves); @@ -7095,7 +7095,7 @@ void Application::spawnOnlinePlayer(uint64_t guid, std::string m2Path = game::getPlayerModelPath(race, gender); if (m2Path.empty()) { LOG_WARNING("spawnOnlinePlayer: unknown race/gender for guid 0x", std::hex, guid, std::dec, - " race=", (int)raceId, " gender=", (int)genderId); + " race=", static_cast(raceId), " gender=", static_cast(genderId)); return; } @@ -7173,9 +7173,9 @@ void Application::spawnOnlinePlayer(uint64_t guid, if (const auto* md = charRenderer->getModelData(modelId)) { for (size_t ti = 0; ti < md->textures.size(); ti++) { uint32_t t = md->textures[ti].type; - if (t == 1 && slots.skin < 0) slots.skin = (int)ti; - else if (t == 6 && slots.hair < 0) slots.hair = (int)ti; - else if (t == 8 && slots.underwear < 0) slots.underwear = (int)ti; + if (t == 1 && slots.skin < 0) slots.skin = static_cast(ti); + else if (t == 6 && slots.hair < 0) slots.hair = static_cast(ti); + else if (t == 8 && slots.underwear < 0) slots.underwear = static_cast(ti); } } playerTextureSlotsByModelId_[modelId] = slots; diff --git a/src/game/game_handler.cpp b/src/game/game_handler.cpp index 45838a9b..a82c9be4 100644 --- a/src/game/game_handler.cpp +++ b/src/game/game_handler.cpp @@ -1569,7 +1569,7 @@ void GameHandler::registerOpcodeHandlers() { uint8_t result = packet.readUInt8(); lastCharDeleteResult_ = result; bool success = (result == 0x00 || result == 0x47); - LOG_INFO("SMSG_CHAR_DELETE result: ", (int)result, success ? " (success)" : " (failed)"); + LOG_INFO("SMSG_CHAR_DELETE result: ", static_cast(result), success ? " (success)" : " (failed)"); requestCharacterList(); if (charDeleteCallback_) charDeleteCallback_(success); }; @@ -1680,7 +1680,7 @@ void GameHandler::registerOpcodeHandlers() { std::string ignName = packet.readString(); if (!ignName.empty() && ignGuid != 0) ignoreCache[ignName] = ignGuid; } - LOG_DEBUG("SMSG_IGNORE_LIST: loaded ", (int)ignCount, " ignored players"); + LOG_DEBUG("SMSG_IGNORE_LIST: loaded ", static_cast(ignCount), " ignored players"); }; dispatchTable_[Opcode::MSG_RANDOM_ROLL] = [this](network::Packet& packet) { if (state == WorldState::IN_WORLD) handleRandomRoll(packet); }; @@ -2038,7 +2038,7 @@ void GameHandler::registerOpcodeHandlers() { pendingLootRoll_.voteMask = voteMask; pendingLootRoll_.rollStartedAt = std::chrono::steady_clock::now(); LOG_INFO("SMSG_LOOT_START_ROLL: item=", itemId, " (", pendingLootRoll_.itemName, - ") slot=", slot, " voteMask=0x", std::hex, (int)voteMask, std::dec); + ") slot=", slot, " voteMask=0x", std::hex, static_cast(voteMask), std::dec); fireAddonEvent("START_LOOT_ROLL", {std::to_string(slot), std::to_string(countdown)}); }; @@ -3986,7 +3986,7 @@ void GameHandler::registerOpcodeHandlers() { if (packet.getSize() - packet.getReadPos() < 8) return; uint32_t duration = packet.readUInt32(); uint32_t spellId = packet.readUInt32(); - LOG_DEBUG("SMSG_TOTEM_CREATED: slot=", (int)slot, + LOG_DEBUG("SMSG_TOTEM_CREATED: slot=", static_cast(slot), " spellId=", spellId, " duration=", duration, "ms"); if (slot < NUM_TOTEM_SLOTS) { activeTotemSlots_[slot].spellId = spellId; @@ -4410,7 +4410,7 @@ void GameHandler::registerOpcodeHandlers() { if (auto* sfx = renderer->getUiSoundManager()) sfx->playError(); } - LOG_WARNING("SMSG_SELL_ITEM error: ", (int)result, " (", msg, ")"); + LOG_WARNING("SMSG_SELL_ITEM error: ", static_cast(result), " (", msg, ")"); } } }; @@ -4420,7 +4420,7 @@ void GameHandler::registerOpcodeHandlers() { if ((packet.getSize() - packet.getReadPos()) >= 1) { uint8_t error = packet.readUInt8(); if (error != 0) { - LOG_WARNING("SMSG_INVENTORY_CHANGE_FAILURE: error=", (int)error); + LOG_WARNING("SMSG_INVENTORY_CHANGE_FAILURE: error=", static_cast(error)); // After error byte: item_guid1(8) + item_guid2(8) + bag_slot(1) = 17 bytes uint32_t requiredLevel = 0; if (packet.getSize() - packet.getReadPos() >= 17) { @@ -5470,7 +5470,7 @@ void GameHandler::registerOpcodeHandlers() { } } LOG_DEBUG("MSG_INSPECT_ARENA_TEAMS: guid=0x", std::hex, inspGuid, std::dec, - " teams=", (int)teamCount); + " teams=", static_cast(teamCount)); }; // auctionId(u32) + action(u32) + error(u32) + itemEntry(u32) + randomPropertyId(u32) + ... // action: 0=sold/won, 1=expired, 2=bid placed on your auction @@ -5816,7 +5816,7 @@ void GameHandler::registerOpcodeHandlers() { zoneId, levelMin, levelMax); addSystemChatMessage(buf); LOG_INFO("SMSG_MEETINGSTONE_SETQUEUE: zone=", zoneId, - " levels=", (int)levelMin, "-", (int)levelMax); + " levels=", static_cast(levelMin), "-", static_cast(levelMax)); } packet.setReadPos(packet.getSize()); }; @@ -5865,7 +5865,7 @@ void GameHandler::registerOpcodeHandlers() { const char* msg = (reason < 4) ? kMeetingstoneErrors[reason] : "Meeting Stone: Could not join group."; addSystemChatMessage(msg); - LOG_INFO("SMSG_MEETINGSTONE_JOINFAILED: reason=", (int)reason); + LOG_INFO("SMSG_MEETINGSTONE_JOINFAILED: reason=", static_cast(reason)); } }; // Player was removed from the meeting stone queue (left, or group disbanded) @@ -5949,7 +5949,7 @@ void GameHandler::registerOpcodeHandlers() { // Status 1 = no open ticket (default/no ticket) gmTicketActive_ = false; gmTicketText_.clear(); - LOG_DEBUG("SMSG_GMTICKET_GETTICKET: no open ticket (status=", (int)gmStatus, ")"); + LOG_DEBUG("SMSG_GMTICKET_GETTICKET: no open ticket (status=", static_cast(gmStatus), ")"); } packet.setReadPos(packet.getSize()); }; @@ -7002,8 +7002,8 @@ void GameHandler::registerOpcodeHandlers() { if (modeGuid == petGuid_) { petCommand_ = static_cast(mode & 0xFF); petReact_ = static_cast((mode >> 8) & 0xFF); - LOG_DEBUG("SMSG_PET_MODE: command=", (int)petCommand_, - " react=", (int)petReact_); + LOG_DEBUG("SMSG_PET_MODE: command=", static_cast(petCommand_), + " react=", static_cast(petReact_)); } } packet.setReadPos(packet.getSize()); @@ -7054,7 +7054,7 @@ void GameHandler::registerOpcodeHandlers() { uint8_t reason = (packet.getSize() - packet.getReadPos() >= 1) ? packet.readUInt8() : 0; LOG_DEBUG("SMSG_PET_CAST_FAILED: spell=", spellId, - " reason=", (int)reason); + " reason=", static_cast(reason)); if (reason != 0) { const char* reasonStr = getSpellCastResultString(reason); const std::string& sName = getSpellName(spellId); @@ -7354,7 +7354,7 @@ void GameHandler::registerOpcodeHandlers() { addSystemChatMessage(isSafe ? "You are in the battlefield zone (safe area)." : "You have entered the battlefield!"); if (onQueue) addSystemChatMessage("You are in the battlefield queue."); - LOG_INFO("SMSG_BATTLEFIELD_MGR_ENTERED: isSafe=", (int)isSafe, " onQueue=", (int)onQueue); + LOG_INFO("SMSG_BATTLEFIELD_MGR_ENTERED: isSafe=", static_cast(isSafe), " onQueue=", static_cast(onQueue)); } packet.setReadPos(packet.getSize()); }; @@ -7404,8 +7404,8 @@ void GameHandler::registerOpcodeHandlers() { : "Battlefield queue request failed."; addSystemChatMessage(std::string("Battlefield: ") + msg); } - LOG_INFO("SMSG_BATTLEFIELD_MGR_QUEUE_REQUEST_RESPONSE: accepted=", (int)accepted, - " result=", (int)result); + LOG_INFO("SMSG_BATTLEFIELD_MGR_QUEUE_REQUEST_RESPONSE: accepted=", static_cast(accepted), + " result=", static_cast(result)); packet.setReadPos(packet.getSize()); }; // uint64 battlefieldGuid + uint8 remove @@ -7418,7 +7418,7 @@ void GameHandler::registerOpcodeHandlers() { if (remove) { addSystemChatMessage("You will be removed from the battlefield shortly."); } - LOG_INFO("SMSG_BATTLEFIELD_MGR_EJECT_PENDING: remove=", (int)remove); + LOG_INFO("SMSG_BATTLEFIELD_MGR_EJECT_PENDING: remove=", static_cast(remove)); } packet.setReadPos(packet.getSize()); }; @@ -7439,7 +7439,7 @@ void GameHandler::registerOpcodeHandlers() { : "You have been ejected from the battlefield."; addSystemChatMessage(msg); if (relocated) addSystemChatMessage("You have been relocated outside the battlefield."); - LOG_INFO("SMSG_BATTLEFIELD_MGR_EJECTED: reason=", reason, " relocated=", (int)relocated); + LOG_INFO("SMSG_BATTLEFIELD_MGR_EJECTED: reason=", reason, " relocated=", static_cast(relocated)); } bfMgrActive_ = false; bfMgrInvitePending_ = false; @@ -8370,7 +8370,7 @@ void GameHandler::handleCharEnum(network::Packet& packet) { LOG_INFO(" GUID: 0x", std::hex, character.guid, std::dec); LOG_INFO(" ", getRaceName(character.race), " ", getClassName(character.characterClass)); - LOG_INFO(" Level ", (int)character.level); + LOG_INFO(" Level ", static_cast(character.level)); } } @@ -8528,7 +8528,7 @@ void GameHandler::handleCharLoginFailed(network::Packet& packet) { }; const char* msg = (reason < 9) ? reasonNames[reason] : "Unknown reason"; - LOG_ERROR("SMSG_CHARACTER_LOGIN_FAILED: reason=", (int)reason, " (", msg, ")"); + LOG_ERROR("SMSG_CHARACTER_LOGIN_FAILED: reason=", static_cast(reason), " (", msg, ")"); // Allow the player to re-select a character setState(WorldState::CHAR_LIST_RECEIVED); @@ -8540,7 +8540,7 @@ void GameHandler::handleCharLoginFailed(network::Packet& packet) { void GameHandler::selectCharacter(uint64_t characterGuid) { if (state != WorldState::CHAR_LIST_RECEIVED) { - LOG_WARNING("Cannot select character in state: ", (int)state); + LOG_WARNING("Cannot select character in state: ", static_cast(state)); return; } @@ -8557,7 +8557,7 @@ void GameHandler::selectCharacter(uint64_t characterGuid) { for (const auto& character : characters) { if (character.guid == characterGuid) { LOG_INFO("Character: ", character.name); - LOG_INFO("Level ", (int)character.level, " ", + LOG_INFO("Level ", static_cast(character.level), " ", getRaceName(character.race), " ", getClassName(character.characterClass)); playerRace_ = character.race; @@ -9382,7 +9382,7 @@ void GameHandler::handleWardenData(network::Packet& packet) { pos += 4; uint8_t readLen = decrypted[pos++]; LOG_WARNING("Warden: MEM offset=0x", [&]{char s[12];snprintf(s,12,"%08x",offset);return std::string(s);}(), - " len=", (int)readLen, + " len=", static_cast(readLen), (strIdx ? " module=\"" + moduleName + "\"" : "")); if (offset == 0x00CF0BC8 && readLen == 4 && wardenMemory_ && wardenMemory_->isLoaded()) { uint32_t now = static_cast( @@ -9401,9 +9401,9 @@ void GameHandler::handleWardenData(network::Packet& packet) { else if (offset >= 0x827000 && offset < 0x883000) region = ".data(raw)"; else if (offset >= 0x883000 && offset < 0xD06000) region = ".data(BSS)"; bool allZero = true; - for (int i = 0; i < (int)readLen; i++) { if (memBuf[i] != 0) { allZero = false; break; } } + for (int i = 0; i < static_cast(readLen); i++) { if (memBuf[i] != 0) { allZero = false; break; } } std::string hexDump; - for (int i = 0; i < (int)readLen; i++) { char hx[4]; snprintf(hx,4,"%02x ",memBuf[i]); hexDump += hx; } + for (int i = 0; i < static_cast(readLen); i++) { char hx[4]; snprintf(hx,4,"%02x ",memBuf[i]); hexDump += hx; } LOG_WARNING("Warden: MEM_CHECK served: [", hexDump, "] region=", region, (allZero && offset >= 0x883000 ? " \xe2\x98\x85""BSS_ZERO\xe2\x98\x85" : "")); if (offset == 0x7FFE026C && readLen == 12) @@ -9463,7 +9463,7 @@ void GameHandler::handleWardenData(network::Packet& packet) { uint8_t pageResult = found ? 0x4A : 0x00; LOG_WARNING("Warden: ", pageName, " offset=0x", [&]{char s[12];snprintf(s,12,"%08x",off);return std::string(s);}(), - " patLen=", (int)patLen, " found=", found ? "yes" : "no", + " patLen=", static_cast(patLen), " found=", found ? "yes" : "no", turtleFallback ? " (turtle-fallback)" : ""); pos += kPageSize; resultData.push_back(pageResult); @@ -9737,7 +9737,7 @@ void GameHandler::handleWardenData(network::Packet& packet) { pos += 4; uint8_t readLen = decrypted[pos++]; LOG_WARNING("Warden: (sync) MEM offset=0x", [&]{char s[12];snprintf(s,12,"%08x",offset);return std::string(s);}(), - " len=", (int)readLen, + " len=", static_cast(readLen), moduleName.empty() ? "" : (" module=\"" + moduleName + "\"")); // Lazy-load WoW.exe PE image on first MEM_CHECK @@ -9831,7 +9831,7 @@ void GameHandler::handleWardenData(network::Packet& packet) { uint8_t len2 = (decrypted.data()+pos)[28]; LOG_WARNING("Warden: (sync) PAGE_A offset=0x", [&]{char s[12];snprintf(s,12,"%08x",off2);return std::string(s);}(), - " patLen=", (int)len2, + " patLen=", static_cast(len2), " result=0x", [&]{char s[4];snprintf(s,4,"%02x",pageResult);return std::string(s);}()); } else { LOG_WARNING("Warden: (sync) PAGE_A (short ", consume, "b) result=0x", @@ -10073,8 +10073,8 @@ void GameHandler::handleWardenData(network::Packet& packet) { break; default: - LOG_DEBUG("Warden: Unknown opcode 0x", std::hex, (int)wardenOpcode, std::dec, - " (state=", (int)wardenState_, ", size=", decrypted.size(), ")"); + LOG_DEBUG("Warden: Unknown opcode 0x", std::hex, static_cast(wardenOpcode), std::dec, + " (state=", static_cast(wardenState_), ", size=", decrypted.size(), ")"); break; } } @@ -10338,7 +10338,7 @@ uint32_t GameHandler::nextMovementTimestampMs() { void GameHandler::sendMovement(Opcode opcode) { if (state != WorldState::IN_WORLD) { - LOG_WARNING("Cannot send movement in state: ", (int)state); + LOG_WARNING("Cannot send movement in state: ", static_cast(state)); return; } @@ -11661,7 +11661,7 @@ void GameHandler::applyUpdateObjectBlock(const UpdateBlock& block, bool& newItem uint8_t newForm = static_cast((val >> 24) & 0xFF); if (newForm != shapeshiftFormId_) { shapeshiftFormId_ = newForm; - LOG_INFO("Shapeshift form changed: ", (int)newForm); + LOG_INFO("Shapeshift form changed: ", static_cast(newForm)); if (addonEventCallback_) { fireAddonEvent("UPDATE_SHAPESHIFT_FORM", {}); fireAddonEvent("UPDATE_SHAPESHIFT_FORMS", {}); @@ -12474,7 +12474,7 @@ void GameHandler::handleDestroyObject(network::Packet& packet) { void GameHandler::sendChatMessage(ChatType type, const std::string& message, const std::string& target) { if (state != WorldState::IN_WORLD) { - LOG_WARNING("Cannot send chat in state: ", (int)state); + LOG_WARNING("Cannot send chat in state: ", static_cast(state)); return; } @@ -13324,7 +13324,7 @@ void GameHandler::setStandState(uint8_t standState) { auto packet = StandStateChangePacket::build(standState); socket->send(packet); - LOG_INFO("Changed stand state to: ", (int)standState); + LOG_INFO("Changed stand state to: ", static_cast(standState)); } void GameHandler::toggleHelm() { @@ -14226,8 +14226,8 @@ void GameHandler::handleNameQueryResponse(network::Packet& packet) { pendingNameQueries.erase(data.guid); LOG_INFO("Name query response: guid=0x", std::hex, data.guid, std::dec, - " found=", (int)data.found, " name='", data.name, "'", - " race=", (int)data.race, " class=", (int)data.classId); + " found=", static_cast(data.found), " name='", data.name, "'", + " race=", static_cast(data.race), " class=", static_cast(data.classId)); if (data.isValid()) { playerNameCache[data.guid] = data.name; @@ -14549,7 +14549,7 @@ void GameHandler::handleInspectResults(network::Packet& packet) { } LOG_INFO("SMSG_TALENTS_INFO type=0: unspent=", unspentTalents, - " groups=", (int)talentGroupCount, " active=", (int)activeTalentGroup, + " groups=", static_cast(talentGroupCount), " active=", static_cast(activeTalentGroup), " learned=", learnedTalents_[activeTalentGroup].size()); return; } @@ -14645,7 +14645,7 @@ void GameHandler::handleInspectResults(network::Packet& packet) { } LOG_INFO("Inspect results for ", playerName, ": ", totalTalents, " talents, ", - unspentTalents, " unspent, ", (int)talentGroupCount, " specs"); + unspentTalents, " unspent, ", static_cast(talentGroupCount), " specs"); if (addonEventCallback_) { char guidBuf[32]; snprintf(guidBuf, sizeof(guidBuf), "0x%016llX", (unsigned long long)guid); @@ -17079,7 +17079,7 @@ void GameHandler::handleArenaTeamEvent(network::Packet& packet) { break; } addSystemChatMessage(msg); - LOG_INFO("Arena team event: ", (int)event, " ", param1, " ", param2); + LOG_INFO("Arena team event: ", static_cast(event), " ", param1, " ", param2); } void GameHandler::handleArenaTeamStats(network::Packet& packet) { @@ -17217,14 +17217,14 @@ void GameHandler::handlePvpLogData(network::Packet& packet) { if (bgScoreboard_.isArena) { LOG_INFO("Arena log: ", bgScoreboard_.players.size(), " players, hasWinner=", - bgScoreboard_.hasWinner, " winner=", (int)bgScoreboard_.winner, + bgScoreboard_.hasWinner, " winner=", static_cast(bgScoreboard_.winner), " team0='", bgScoreboard_.arenaTeams[0].teamName, "' ratingChange=", (int32_t)bgScoreboard_.arenaTeams[0].ratingChange, " team1='", bgScoreboard_.arenaTeams[1].teamName, "' ratingChange=", (int32_t)bgScoreboard_.arenaTeams[1].ratingChange); } else { LOG_INFO("PvP log: ", bgScoreboard_.players.size(), " players, hasWinner=", - bgScoreboard_.hasWinner, " winner=", (int)bgScoreboard_.winner); + bgScoreboard_.hasWinner, " winner=", static_cast(bgScoreboard_.winner)); } } @@ -18339,7 +18339,7 @@ void GameHandler::handlePetSpells(network::Packet& packet) { done: LOG_INFO("SMSG_PET_SPELLS: petGuid=0x", std::hex, petGuid_, std::dec, - " react=", (int)petReact_, " command=", (int)petCommand_, + " react=", static_cast(petReact_), " command=", static_cast(petCommand_), " spells=", petSpellList_.size()); if (addonEventCallback_) { fireAddonEvent("UNIT_PET", {"player"}); @@ -18376,7 +18376,7 @@ void GameHandler::togglePetSpellAutocast(uint32_t spellId) { petAutocastSpells_.insert(spellId); else petAutocastSpells_.erase(spellId); - LOG_DEBUG("togglePetSpellAutocast: spellId=", spellId, " autocast=", (int)newState); + LOG_DEBUG("togglePetSpellAutocast: spellId=", spellId, " autocast=", static_cast(newState)); } void GameHandler::renamePet(const std::string& newName) { @@ -18451,7 +18451,7 @@ void GameHandler::handleListStabledPets(network::Packet& packet) { stableWindowOpen_ = true; LOG_INFO("MSG_LIST_STABLED_PETS: stableMasterGuid=0x", std::hex, stableMasterGuid_, std::dec, - " petCount=", (int)petCount, " numSlots=", (int)stableNumSlots_); + " petCount=", static_cast(petCount), " numSlots=", static_cast(stableNumSlots_)); for (const auto& p : stabledPets_) { LOG_DEBUG(" Pet: number=", p.petNumber, " entry=", p.entry, " level=", p.level, " name='", p.name, "' displayId=", p.displayId, @@ -19008,8 +19008,8 @@ void GameHandler::handleLearnedSpell(network::Packet& packet) { // Found the talent! Update the rank for the active spec uint8_t newRank = rank + 1; // rank is 0-indexed in array, but stored as 1-indexed learnedTalents_[activeTalentSpec_][talentId] = newRank; - LOG_INFO("Talent learned: id=", talentId, " rank=", (int)newRank, - " (spell ", spellId, ") in spec ", (int)activeTalentSpec_); + LOG_INFO("Talent learned: id=", talentId, " rank=", static_cast(newRank), + " (spell ", spellId, ") in spec ", static_cast(activeTalentSpec_)); isTalentSpell = true; if (addonEventCallback_) { fireAddonEvent("CHARACTER_POINTS_CHANGED", {}); @@ -19203,7 +19203,7 @@ void GameHandler::handleTalentsInfo(network::Packet& packet) { static_cast(unspentTalents > 255 ? 255 : unspentTalents); LOG_INFO("handleTalentsInfo: unspent=", unspentTalents, - " groups=", (int)talentGroupCount, " active=", (int)activeTalentGroup, + " groups=", static_cast(talentGroupCount), " active=", static_cast(activeTalentGroup), " learned=", learnedTalents_[activeTalentGroup].size()); // Fire talent-related events for addons @@ -19236,12 +19236,12 @@ void GameHandler::learnTalent(uint32_t talentId, uint32_t requestedRank) { void GameHandler::switchTalentSpec(uint8_t newSpec) { if (newSpec > 1) { - LOG_WARNING("Invalid talent spec: ", (int)newSpec); + LOG_WARNING("Invalid talent spec: ", static_cast(newSpec)); return; } if (newSpec == activeTalentSpec_) { - LOG_INFO("Already on spec ", (int)newSpec); + LOG_INFO("Already on spec ", static_cast(newSpec)); return; } @@ -19253,12 +19253,12 @@ void GameHandler::switchTalentSpec(uint8_t newSpec) { if (state == WorldState::IN_WORLD && socket) { auto pkt = ActivateTalentGroupPacket::build(static_cast(newSpec)); socket->send(pkt); - LOG_INFO("Sent CMSG_SET_ACTIVE_TALENT_GROUP_OBSOLETE: group=", (int)newSpec); + LOG_INFO("Sent CMSG_SET_ACTIVE_TALENT_GROUP_OBSOLETE: group=", static_cast(newSpec)); } activeTalentSpec_ = newSpec; - LOG_INFO("Switched to talent spec ", (int)newSpec, - " (unspent=", (int)unspentTalentPoints_[newSpec], + LOG_INFO("Switched to talent spec ", static_cast(newSpec), + " (unspent=", static_cast(unspentTalentPoints_[newSpec]), ", learned=", learnedTalents_[newSpec].size(), ")"); std::string msg = "Switched to spec " + std::to_string(newSpec + 1); @@ -20433,7 +20433,7 @@ void GameHandler::selectGossipOption(uint32_t optionId) { for (const auto& opt : currentGossip.options) { if (opt.id != optionId) continue; - LOG_INFO(" matched option: id=", opt.id, " icon=", (int)opt.icon, " text='", opt.text, "'"); + LOG_INFO(" matched option: id=", opt.id, " icon=", static_cast(opt.icon), " text='", opt.text, "'"); // Icon-based NPC interaction fallbacks // Some servers need the specific activate packet in addition to gossip select @@ -20474,7 +20474,7 @@ void GameHandler::selectGossipOption(uint32_t optionId) { auto pkt = ListInventoryPacket::build(currentGossip.npcGuid); socket->send(pkt); LOG_INFO("Sent CMSG_LIST_INVENTORY (gossip) to npc=0x", std::hex, currentGossip.npcGuid, std::dec, - " vendor=", (int)isVendor, " repair=", (int)isArmorer); + " vendor=", static_cast(isVendor), " repair=", static_cast(isArmorer)); } if (textLower.find("make this inn your home") != std::string::npos || @@ -20895,7 +20895,7 @@ void GameHandler::applyPackedKillCountsFromFields(QuestLogEntry& quest) { if (counts[i] == 0 && quest.killCounts.count(entryKey)) continue; quest.killCounts[entryKey] = {counts[i], obj.required}; LOG_DEBUG("Quest ", quest.questId, " objective[", i, "]: npcOrGo=", - obj.npcOrGoId, " count=", (int)counts[i], "/", obj.required); + obj.npcOrGoId, " count=", static_cast(counts[i]), "/", obj.required); } // Apply item objective counts (only available in WotLK stride+3 positions 4-5). @@ -21450,8 +21450,8 @@ void GameHandler::unequipToBackpack(EquipSlot equipSlot) { uint8_t dstBag = 0xFF; uint8_t dstSlot = static_cast(23 + freeSlot); - LOG_INFO("UnequipToBackpack: equipSlot=", (int)srcSlot, - " -> backpackIndex=", freeSlot, " (dstSlot=", (int)dstSlot, ")"); + LOG_INFO("UnequipToBackpack: equipSlot=", static_cast(srcSlot), + " -> backpackIndex=", freeSlot, " (dstSlot=", static_cast(dstSlot), ")"); auto packet = SwapItemPacket::build(dstBag, dstSlot, srcBag, srcSlot); socket->send(packet); @@ -21459,8 +21459,8 @@ void GameHandler::unequipToBackpack(EquipSlot equipSlot) { void GameHandler::swapContainerItems(uint8_t srcBag, uint8_t srcSlot, uint8_t dstBag, uint8_t dstSlot) { if (!socket || !socket->isConnected()) return; - LOG_INFO("swapContainerItems: src(bag=", (int)srcBag, " slot=", (int)srcSlot, - ") -> dst(bag=", (int)dstBag, " slot=", (int)dstSlot, ")"); + LOG_INFO("swapContainerItems: src(bag=", static_cast(srcBag), " slot=", static_cast(srcSlot), + ") -> dst(bag=", static_cast(dstBag), " slot=", static_cast(dstSlot), ")"); auto packet = SwapItemPacket::build(dstBag, dstSlot, srcBag, srcSlot); socket->send(packet); } @@ -21485,8 +21485,8 @@ void GameHandler::swapBagSlots(int srcBagIndex, int dstBagIndex) { if (socket && socket->isConnected()) { uint8_t srcSlot = static_cast(19 + srcBagIndex); uint8_t dstSlot = static_cast(19 + dstBagIndex); - LOG_INFO("swapBagSlots: bag ", srcBagIndex, " (slot ", (int)srcSlot, - ") <-> bag ", dstBagIndex, " (slot ", (int)dstSlot, ")"); + LOG_INFO("swapBagSlots: bag ", srcBagIndex, " (slot ", static_cast(srcSlot), + ") <-> bag ", dstBagIndex, " (slot ", static_cast(dstSlot), ")"); auto packet = SwapItemPacket::build(255, dstSlot, 255, srcSlot); socket->send(packet); } @@ -21503,8 +21503,8 @@ void GameHandler::destroyItem(uint8_t bag, uint8_t slot, uint8_t count) { packet.writeUInt8(bag); packet.writeUInt8(slot); packet.writeUInt32(static_cast(count)); - LOG_DEBUG("Destroy item request: bag=", (int)bag, " slot=", (int)slot, - " count=", (int)count, " wire=0x", std::hex, kCmsgDestroyItem, std::dec); + LOG_DEBUG("Destroy item request: bag=", static_cast(bag), " slot=", static_cast(slot), + " count=", static_cast(count), " wire=0x", std::hex, kCmsgDestroyItem, std::dec); socket->send(packet); } @@ -21517,8 +21517,8 @@ void GameHandler::splitItem(uint8_t srcBag, uint8_t srcSlot, uint8_t count) { if (freeBp >= 0) { uint8_t dstBag = 0xFF; uint8_t dstSlot = static_cast(23 + freeBp); - LOG_INFO("splitItem: src(bag=", (int)srcBag, " slot=", (int)srcSlot, - ") count=", (int)count, " -> dst(bag=0xFF slot=", (int)dstSlot, ")"); + LOG_INFO("splitItem: src(bag=", static_cast(srcBag), " slot=", static_cast(srcSlot), + ") count=", static_cast(count), " -> dst(bag=0xFF slot=", static_cast(dstSlot), ")"); auto packet = SplitItemPacket::build(srcBag, srcSlot, dstBag, dstSlot, count); socket->send(packet); return; @@ -21530,9 +21530,9 @@ void GameHandler::splitItem(uint8_t srcBag, uint8_t srcSlot, uint8_t count) { if (inventory.getBagSlot(b, s).empty()) { uint8_t dstBag = static_cast(19 + b); uint8_t dstSlot = static_cast(s); - LOG_INFO("splitItem: src(bag=", (int)srcBag, " slot=", (int)srcSlot, - ") count=", (int)count, " -> dst(bag=", (int)dstBag, - " slot=", (int)dstSlot, ")"); + LOG_INFO("splitItem: src(bag=", static_cast(srcBag), " slot=", static_cast(srcSlot), + ") count=", static_cast(count), " -> dst(bag=", static_cast(dstBag), + " slot=", static_cast(dstSlot), ")"); auto packet = SplitItemPacket::build(srcBag, srcSlot, dstBag, dstSlot, count); socket->send(packet); return; @@ -21615,7 +21615,7 @@ void GameHandler::useItemInBag(int bagIndex, int slotIndex) { auto packet = packetParsers_ ? packetParsers_->buildUseItem(wowBag, static_cast(slotIndex), itemGuid, useSpellId) : UseItemPacket::build(wowBag, static_cast(slotIndex), itemGuid, useSpellId); - LOG_INFO("useItemInBag: sending CMSG_USE_ITEM, bag=", (int)wowBag, " slot=", slotIndex, + LOG_INFO("useItemInBag: sending CMSG_USE_ITEM, bag=", static_cast(wowBag), " slot=", slotIndex, " packetSize=", packet.getSize()); socket->send(packet); } else if (itemGuid == 0) { @@ -21640,7 +21640,7 @@ void GameHandler::openItemInBag(int bagIndex, int slotIndex) { if (state != WorldState::IN_WORLD || !socket) return; uint8_t wowBag = static_cast(19 + bagIndex); auto packet = OpenItemPacket::build(wowBag, static_cast(slotIndex)); - LOG_INFO("openItemInBag: CMSG_OPEN_ITEM bag=", (int)wowBag, " slot=", slotIndex); + LOG_INFO("openItemInBag: CMSG_OPEN_ITEM bag=", static_cast(wowBag), " slot=", slotIndex); socket->send(packet); } @@ -22101,8 +22101,8 @@ void GameHandler::handleTrainerList(network::Packet& packet) { " 25312=", knownSpells.count(25312u)); for (size_t i = 0; i < std::min(size_t(5), currentTrainerList_.spells.size()); ++i) { const auto& s = currentTrainerList_.spells[i]; - LOG_DEBUG(" Spell[", i, "]: id=", s.spellId, " state=", (int)s.state, - " cost=", s.spellCost, " reqLvl=", (int)s.reqLevel, + LOG_DEBUG(" Spell[", i, "]: id=", s.spellId, " state=", static_cast(s.state), + " cost=", s.spellCost, " reqLvl=", static_cast(s.reqLevel), " chain=(", s.chainNode1, ",", s.chainNode2, ",", s.chainNode3, ")"); } @@ -22115,7 +22115,7 @@ void GameHandler::handleTrainerList(network::Packet& packet) { } void GameHandler::trainSpell(uint32_t spellId) { - LOG_INFO("trainSpell called: spellId=", spellId, " state=", (int)state, " socket=", (socket ? "yes" : "no")); + LOG_INFO("trainSpell called: spellId=", spellId, " state=", static_cast(state), " socket=", (socket ? "yes" : "no")); if (state != WorldState::IN_WORLD || !socket) { LOG_WARNING("trainSpell: Not in world or no socket connection"); return; @@ -23780,7 +23780,7 @@ void GameHandler::handleFriendList(network::Packet& packet) { auto rem = [&]() { return packet.getSize() - packet.getReadPos(); }; if (rem() < 1) return; uint8_t count = packet.readUInt8(); - LOG_INFO("SMSG_FRIEND_LIST: ", (int)count, " entries"); + LOG_INFO("SMSG_FRIEND_LIST: ", static_cast(count), " entries"); // Rebuild friend contacts (keep ignores from previous contact_ entries) contacts_.erase(std::remove_if(contacts_.begin(), contacts_.end(), @@ -23802,10 +23802,10 @@ void GameHandler::handleFriendList(network::Packet& packet) { if (nit != playerNameCache.end()) { name = nit->second; friendsCache[name] = guid; - LOG_INFO(" Friend: ", name, " status=", (int)status); + LOG_INFO(" Friend: ", name, " status=", static_cast(status)); } else { LOG_INFO(" Friend guid=0x", std::hex, guid, std::dec, - " status=", (int)status, " (name pending)"); + " status=", static_cast(status), " (name pending)"); queryPlayerName(guid); } ContactEntry entry; @@ -23965,11 +23965,11 @@ void GameHandler::handleFriendStatus(network::Packet& packet) { addSystemChatMessage(playerName + " is ignoring you."); break; default: - LOG_INFO("Friend status: ", (int)data.status, " for ", playerName); + LOG_INFO("Friend status: ", static_cast(data.status), " for ", playerName); break; } - LOG_INFO("Friend status update: ", playerName, " status=", (int)data.status); + LOG_INFO("Friend status update: ", playerName, " status=", static_cast(data.status)); fireAddonEvent("FRIENDLIST_UPDATE", {}); } @@ -24023,7 +24023,7 @@ void GameHandler::handleLogoutResponse(network::Packet& packet) { addSystemChatMessage("Logging out in 20 seconds..."); logoutCountdown_ = 20.0f; } - LOG_INFO("Logout response: success, instant=", (int)data.instant); + LOG_INFO("Logout response: success, instant=", static_cast(data.instant)); fireAddonEvent("PLAYER_LOGOUT", {}); } else { // Failure @@ -24052,7 +24052,7 @@ uint32_t GameHandler::generateClientSeed() { void GameHandler::setState(WorldState newState) { if (state != newState) { - LOG_DEBUG("World state: ", (int)state, " -> ", (int)newState); + LOG_DEBUG("World state: ", static_cast(state), " -> ", static_cast(newState)); state = newState; } } @@ -25007,7 +25007,7 @@ void GameHandler::handleGuildBankList(network::Packet& packet) { if (item.itemEntry != 0) ensureItemInfo(item.itemEntry); } - LOG_INFO("SMSG_GUILD_BANK_LIST: tab=", (int)data.tabId, + LOG_INFO("SMSG_GUILD_BANK_LIST: tab=", static_cast(data.tabId), " items=", data.tabItems.size(), " tabs=", data.tabs.size(), " money=", data.money); @@ -25114,7 +25114,7 @@ void GameHandler::handleAuctionHello(network::Packet& packet) { auctionOwnerResults_ = AuctionListResult{}; auctionBidderResults_ = AuctionListResult{}; LOG_INFO("MSG_AUCTION_HELLO: auctioneer=0x", std::hex, data.auctioneerGuid, std::dec, - " house=", data.auctionHouseId, " enabled=", (int)data.enabled); + " house=", data.auctionHouseId, " enabled=", static_cast(data.enabled)); } void GameHandler::handleAuctionListResult(network::Packet& packet) { @@ -25216,7 +25216,7 @@ void GameHandler::handleItemTextQueryResponse(network::Packet& packet) { itemText_ = packet.readString(); itemTextOpen_= !itemText_.empty(); } - LOG_DEBUG("SMSG_ITEM_TEXT_QUERY_RESPONSE: isEmpty=", (int)isEmpty, + LOG_DEBUG("SMSG_ITEM_TEXT_QUERY_RESPONSE: isEmpty=", static_cast(isEmpty), " len=", itemText_.size()); } @@ -25547,7 +25547,7 @@ void GameHandler::handleTradeStatusExtended(network::Packet& packet) { if (s.occupied && s.itemId != 0) queryItemInfo(s.itemId, 0); } - LOG_DEBUG("SMSG_TRADE_STATUS_EXTENDED: isSelf=", (int)isSelf, + LOG_DEBUG("SMSG_TRADE_STATUS_EXTENDED: isSelf=", static_cast(isSelf), " myGold=", myTradeGold_, " peerGold=", peerTradeGold_); } diff --git a/src/game/packet_parsers_classic.cpp b/src/game/packet_parsers_classic.cpp index 0d4d09e2..eb0b4c5c 100644 --- a/src/game/packet_parsers_classic.cpp +++ b/src/game/packet_parsers_classic.cpp @@ -196,7 +196,7 @@ bool ClassicPacketParsers::parseMovementBlock(network::Packet& packet, UpdateBlo uint8_t updateFlags = packet.readUInt8(); block.updateFlags = static_cast(updateFlags); - LOG_DEBUG(" [Classic] UpdateFlags: 0x", std::hex, (int)updateFlags, std::dec); + LOG_DEBUG(" [Classic] UpdateFlags: 0x", std::hex, static_cast(updateFlags), std::dec); const uint8_t UPDATEFLAG_TRANSPORT = 0x02; const uint8_t UPDATEFLAG_MELEE_ATTACKING = 0x04; @@ -613,13 +613,13 @@ bool ClassicPacketParsers::parseSpellGo(network::Packet& packet, SpellGoData& da } const uint8_t rawHitCount = packet.readUInt8(); if (rawHitCount > 128) { - LOG_WARNING("[Classic] Spell go: hitCount capped (requested=", (int)rawHitCount, ")"); + LOG_WARNING("[Classic] Spell go: hitCount capped (requested=", static_cast(rawHitCount), ")"); } if (rem() < static_cast(rawHitCount) + 1u) { static uint32_t badHitCountTrunc = 0; ++badHitCountTrunc; if (badHitCountTrunc <= 10 || (badHitCountTrunc % 100) == 0) { - LOG_WARNING("[Classic] Spell go: invalid hitCount/remaining (hits=", (int)rawHitCount, + LOG_WARNING("[Classic] Spell go: invalid hitCount/remaining (hits=", static_cast(rawHitCount), " remaining=", rem(), " occurrence=", badHitCountTrunc, ")"); } traceFailure("invalid_hit_count", packet.getReadPos(), rawHitCount); @@ -654,7 +654,7 @@ bool ClassicPacketParsers::parseSpellGo(network::Packet& packet, SpellGoData& da }; if (!parseHitList(false) && !parseHitList(true)) { - LOG_WARNING("[Classic] Spell go: truncated hit targets at index 0/", (int)rawHitCount); + LOG_WARNING("[Classic] Spell go: truncated hit targets at index 0/", static_cast(rawHitCount)); traceFailure("truncated_hit_target", packet.getReadPos(), rawHitCount); packet.setReadPos(startPos); return false; @@ -673,7 +673,7 @@ bool ClassicPacketParsers::parseSpellGo(network::Packet& packet, SpellGoData& da } const uint8_t rawMissCount = packet.readUInt8(); if (rawMissCount > 128) { - LOG_WARNING("[Classic] Spell go: missCount capped (requested=", (int)rawMissCount, ")"); + LOG_WARNING("[Classic] Spell go: missCount capped (requested=", static_cast(rawMissCount), ")"); traceFailure("miss_count_capped", packet.getReadPos() - 1, rawMissCount); } if (rem() < static_cast(rawMissCount) * 2u) { @@ -695,7 +695,7 @@ bool ClassicPacketParsers::parseSpellGo(network::Packet& packet, SpellGoData& da static uint32_t badMissCountTrunc = 0; ++badMissCountTrunc; if (badMissCountTrunc <= 10 || (badMissCountTrunc % 100) == 0) { - LOG_WARNING("[Classic] Spell go: invalid missCount/remaining (misses=", (int)rawMissCount, + LOG_WARNING("[Classic] Spell go: invalid missCount/remaining (misses=", static_cast(rawMissCount), " remaining=", rem(), " occurrence=", badMissCountTrunc, ")"); } traceFailure("invalid_miss_count", packet.getReadPos(), rawMissCount); @@ -727,7 +727,7 @@ bool ClassicPacketParsers::parseSpellGo(network::Packet& packet, SpellGoData& da packet.setReadPos(missEntryPos); if (!parseMissEntry(m, true)) { LOG_WARNING("[Classic] Spell go: truncated miss targets at index ", i, - "/", (int)rawMissCount); + "/", static_cast(rawMissCount)); traceFailure("truncated_miss_target", packet.getReadPos(), i); truncatedMissTargets = true; break; @@ -735,7 +735,7 @@ bool ClassicPacketParsers::parseSpellGo(network::Packet& packet, SpellGoData& da } if (rem() < 1) { LOG_WARNING("[Classic] Spell go: missing missType at miss index ", i, - "/", (int)rawMissCount); + "/", static_cast(rawMissCount)); traceFailure("missing_miss_type", packet.getReadPos(), i); truncatedMissTargets = true; break; @@ -744,7 +744,7 @@ bool ClassicPacketParsers::parseSpellGo(network::Packet& packet, SpellGoData& da if (m.missType == 11) { if (rem() < 1) { LOG_WARNING("[Classic] Spell go: truncated reflect payload at miss index ", i, - "/", (int)rawMissCount); + "/", static_cast(rawMissCount)); traceFailure("truncated_reflect", packet.getReadPos(), i); truncatedMissTargets = true; break; @@ -774,8 +774,8 @@ bool ClassicPacketParsers::parseSpellGo(network::Packet& packet, SpellGoData& da // any subsequent fields (e.g. castFlags extras) are not misaligned. skipClassicSpellCastTargets(packet, &data.targetGuid); - LOG_DEBUG("[Classic] Spell go: spell=", data.spellId, " hits=", (int)data.hitCount, - " misses=", (int)data.missCount); + LOG_DEBUG("[Classic] Spell go: spell=", data.spellId, " hits=", static_cast(data.hitCount), + " misses=", static_cast(data.missCount)); return true; } @@ -1011,8 +1011,8 @@ bool ClassicPacketParsers::parseNameQueryResponse(network::Packet& packet, NameQ data.found = 0; LOG_DEBUG("[Classic] Name query response: ", data.name, - " (race=", (int)data.race, " gender=", (int)data.gender, - " class=", (int)data.classId, ")"); + " (race=", static_cast(data.race), " gender=", static_cast(data.gender), + " class=", static_cast(data.classId), ")"); return !data.name.empty(); } @@ -1028,7 +1028,7 @@ bool ClassicPacketParsers::parseCastFailed(network::Packet& packet, CastFailedDa // WotLK enum starts at 0=SUCCESS, 1=AFFECTING_COMBAT. // Shift +1 to align with WotLK result strings. data.result = vanillaResult + 1; - LOG_DEBUG("[Classic] Cast failed: spell=", data.spellId, " vanillaResult=", (int)vanillaResult); + LOG_DEBUG("[Classic] Cast failed: spell=", data.spellId, " vanillaResult=", static_cast(vanillaResult)); return true; } @@ -1044,7 +1044,7 @@ bool ClassicPacketParsers::parseCastResult(network::Packet& packet, uint32_t& sp uint8_t vanillaResult = packet.readUInt8(); // Shift +1: Vanilla result 0=AFFECTING_COMBAT maps to WotLK result 1=AFFECTING_COMBAT result = vanillaResult + 1; - LOG_DEBUG("[Classic] Cast result: spell=", spellId, " vanillaResult=", (int)vanillaResult); + LOG_DEBUG("[Classic] Cast result: spell=", spellId, " vanillaResult=", static_cast(vanillaResult)); return true; } @@ -1068,12 +1068,12 @@ bool ClassicPacketParsers::parseCharEnum(network::Packet& packet, CharEnumRespon // Cap count to prevent excessive memory allocation constexpr uint8_t kMaxCharacters = 32; if (count > kMaxCharacters) { - LOG_WARNING("[Classic] Character count ", (int)count, " exceeds max ", (int)kMaxCharacters, + LOG_WARNING("[Classic] Character count ", static_cast(count), " exceeds max ", static_cast(kMaxCharacters), ", capping"); count = kMaxCharacters; } - LOG_INFO("[Classic] Parsing SMSG_CHAR_ENUM: ", (int)count, " characters"); + LOG_INFO("[Classic] Parsing SMSG_CHAR_ENUM: ", static_cast(count), " characters"); response.characters.clear(); response.characters.reserve(count); @@ -1085,7 +1085,7 @@ bool ClassicPacketParsers::parseCharEnum(network::Packet& packet, CharEnumRespon // + flags(4) + firstLogin(1) + pet(12) + equipment(20*5) constexpr size_t kMinCharacterSize = 8 + 1 + 1 + 1 + 1 + 4 + 1 + 1 + 4 + 4 + 12 + 4 + 4 + 1 + 12 + 100; if (packet.getReadPos() + kMinCharacterSize > packet.getSize()) { - LOG_WARNING("[Classic] Character enum packet truncated at character ", (int)(i + 1), + LOG_WARNING("[Classic] Character enum packet truncated at character ", static_cast(i + 1), ", pos=", packet.getReadPos(), " needed=", kMinCharacterSize, " size=", packet.getSize()); break; @@ -1142,9 +1142,9 @@ bool ClassicPacketParsers::parseCharEnum(network::Packet& packet, CharEnumRespon character.equipment.push_back(item); } - LOG_DEBUG(" Character ", (int)(i + 1), ": ", character.name, + LOG_DEBUG(" Character ", static_cast(i + 1), ": ", character.name, " (", getRaceName(character.race), " ", getClassName(character.characterClass), - " level ", (int)character.level, " zone ", character.zoneId, ")"); + " level ", static_cast(character.level), " zone ", character.zoneId, ")"); response.characters.push_back(character); } @@ -1563,7 +1563,7 @@ bool ClassicPacketParsers::parseMailList(network::Packet& packet, if (remaining < 1) return false; uint8_t count = packet.readUInt8(); - LOG_INFO("SMSG_MAIL_LIST_RESULT (Classic): count=", (int)count); + LOG_INFO("SMSG_MAIL_LIST_RESULT (Classic): count=", static_cast(count)); inbox.clear(); inbox.reserve(count); @@ -1932,7 +1932,7 @@ bool TurtlePacketParsers::parseMovementBlock(network::Packet& packet, UpdateBloc uint8_t updateFlags = packet.readUInt8(); block.updateFlags = static_cast(updateFlags); - LOG_DEBUG(" [Turtle] UpdateFlags: 0x", std::hex, (int)updateFlags, std::dec); + LOG_DEBUG(" [Turtle] UpdateFlags: 0x", std::hex, static_cast(updateFlags), std::dec); const uint8_t UPDATEFLAG_TRANSPORT = 0x02; const uint8_t UPDATEFLAG_MELEE_ATTACKING = 0x04; diff --git a/src/game/packet_parsers_tbc.cpp b/src/game/packet_parsers_tbc.cpp index 76b77827..46b2d1bd 100644 --- a/src/game/packet_parsers_tbc.cpp +++ b/src/game/packet_parsers_tbc.cpp @@ -37,7 +37,7 @@ bool TbcPacketParsers::parseMovementBlock(network::Packet& packet, UpdateBlock& uint8_t updateFlags = packet.readUInt8(); block.updateFlags = static_cast(updateFlags); - LOG_DEBUG(" [TBC] UpdateFlags: 0x", std::hex, (int)updateFlags, std::dec); + LOG_DEBUG(" [TBC] UpdateFlags: 0x", std::hex, static_cast(updateFlags), std::dec); // TBC UpdateFlag bit values (same as lower byte of WotLK): // 0x01 = SELF @@ -317,12 +317,12 @@ bool TbcPacketParsers::parseCharEnum(network::Packet& packet, CharEnumResponse& // Cap count to prevent excessive memory allocation constexpr uint8_t kMaxCharacters = 32; if (count > kMaxCharacters) { - LOG_WARNING("[TBC] Character count ", (int)count, " exceeds max ", (int)kMaxCharacters, + LOG_WARNING("[TBC] Character count ", static_cast(count), " exceeds max ", static_cast(kMaxCharacters), ", capping"); count = kMaxCharacters; } - LOG_INFO("[TBC] Parsing SMSG_CHAR_ENUM: ", (int)count, " characters"); + LOG_INFO("[TBC] Parsing SMSG_CHAR_ENUM: ", static_cast(count), " characters"); response.characters.clear(); response.characters.reserve(count); @@ -334,7 +334,7 @@ bool TbcPacketParsers::parseCharEnum(network::Packet& packet, CharEnumResponse& // + flags(4) + firstLogin(1) + pet(12) + equipment(20*9) constexpr size_t kMinCharacterSize = 8 + 1 + 1 + 1 + 1 + 4 + 1 + 1 + 4 + 4 + 12 + 4 + 4 + 1 + 12 + 180; if (packet.getReadPos() + kMinCharacterSize > packet.getSize()) { - LOG_WARNING("[TBC] Character enum packet truncated at character ", (int)(i + 1), + LOG_WARNING("[TBC] Character enum packet truncated at character ", static_cast(i + 1), ", pos=", packet.getReadPos(), " needed=", kMinCharacterSize, " size=", packet.getSize()); break; @@ -391,9 +391,9 @@ bool TbcPacketParsers::parseCharEnum(network::Packet& packet, CharEnumResponse& character.equipment.push_back(item); } - LOG_DEBUG(" Character ", (int)(i + 1), ": ", character.name, + LOG_DEBUG(" Character ", static_cast(i + 1), ": ", character.name, " (", getRaceName(character.race), " ", getClassName(character.characterClass), - " level ", (int)character.level, " zone ", character.zoneId, ")"); + " level ", static_cast(character.level), " zone ", character.zoneId, ")"); response.characters.push_back(character); } @@ -710,7 +710,7 @@ bool TbcPacketParsers::parseMonsterMove(network::Packet& packet, MonsterMoveData } LOG_DEBUG("[TBC] MonsterMove: guid=0x", std::hex, data.guid, std::dec, - " type=", (int)data.moveType, " dur=", data.duration, "ms", + " type=", static_cast(data.moveType), " dur=", data.duration, "ms", " dest=(", data.destX, ",", data.destY, ",", data.destZ, ")"); return true; } @@ -1162,7 +1162,7 @@ bool TbcPacketParsers::parseMailList(network::Packet& packet, std::vector(rawHitCount, 128); data.hitTargets.reserve(storedHitLimit); @@ -1369,7 +1369,7 @@ bool TbcPacketParsers::parseSpellGo(network::Packet& packet, SpellGoData& data) for (uint16_t i = 0; i < rawHitCount; ++i) { if (packet.getReadPos() + 8 > packet.getSize()) { LOG_WARNING("[TBC] Spell go: truncated hit targets at index ", i, - "/", (int)rawHitCount); + "/", static_cast(rawHitCount)); truncatedTargets = true; break; } @@ -1392,14 +1392,14 @@ bool TbcPacketParsers::parseSpellGo(network::Packet& packet, SpellGoData& data) const uint8_t rawMissCount = packet.readUInt8(); if (rawMissCount > 128) { - LOG_WARNING("[TBC] Spell go: missCount capped (requested=", (int)rawMissCount, ")"); + LOG_WARNING("[TBC] Spell go: missCount capped (requested=", static_cast(rawMissCount), ")"); } const uint8_t storedMissLimit = std::min(rawMissCount, 128); data.missTargets.reserve(storedMissLimit); for (uint16_t i = 0; i < rawMissCount; ++i) { if (packet.getReadPos() + 9 > packet.getSize()) { LOG_WARNING("[TBC] Spell go: truncated miss targets at index ", i, - "/", (int)rawMissCount); + "/", static_cast(rawMissCount)); truncatedTargets = true; break; } @@ -1409,7 +1409,7 @@ bool TbcPacketParsers::parseSpellGo(network::Packet& packet, SpellGoData& data) if (m.missType == 11) { // SPELL_MISS_REFLECT if (packet.getReadPos() + 1 > packet.getSize()) { LOG_WARNING("[TBC] Spell go: truncated reflect payload at miss index ", i, - "/", (int)rawMissCount); + "/", static_cast(rawMissCount)); truncatedTargets = true; break; } @@ -1429,8 +1429,8 @@ bool TbcPacketParsers::parseSpellGo(network::Packet& packet, SpellGoData& data) // any subsequent fields are not misaligned for ground-targeted AoE spells. skipTbcSpellCastTargets(packet, &data.targetGuid); - LOG_DEBUG("[TBC] Spell go: spell=", data.spellId, " hits=", (int)data.hitCount, - " misses=", (int)data.missCount); + LOG_DEBUG("[TBC] Spell go: spell=", data.spellId, " hits=", static_cast(data.hitCount), + " misses=", static_cast(data.missCount)); return true; } @@ -1463,7 +1463,7 @@ bool TbcPacketParsers::parseCastFailed(network::Packet& packet, CastFailedData& data.castCount = 0; // not present in TBC data.spellId = packet.readUInt32(); data.result = packet.readUInt8(); // same enum as WotLK - LOG_DEBUG("[TBC] Cast failed: spell=", data.spellId, " result=", (int)data.result); + LOG_DEBUG("[TBC] Cast failed: spell=", data.spellId, " result=", static_cast(data.result)); return true; } diff --git a/src/game/transport_manager.cpp b/src/game/transport_manager.cpp index c73f70dd..3e52c104 100644 --- a/src/game/transport_manager.cpp +++ b/src/game/transport_manager.cpp @@ -403,7 +403,7 @@ glm::vec3 TransportManager::evalTimedCatmullRom(const TransportPath& path, uint3 uint32_t t1Ms = path.points[p1Idx].tMs; uint32_t t2Ms = path.points[p2Idx].tMs; uint32_t segmentDurationMs = (t2Ms > t1Ms) ? (t2Ms - t1Ms) : 1; - float t = (float)(pathTimeMs - t1Ms) / (float)segmentDurationMs; + float t = (float)(pathTimeMs - t1Ms) / static_cast(segmentDurationMs); t = glm::clamp(t, 0.0f, 1.0f); // Catmull-Rom spline formula @@ -480,7 +480,7 @@ glm::quat TransportManager::orientationFromTangent(const TransportPath& path, ui uint32_t t1Ms = path.points[p1Idx].tMs; uint32_t t2Ms = path.points[p2Idx].tMs; uint32_t segmentDurationMs = (t2Ms > t1Ms) ? (t2Ms - t1Ms) : 1; - float t = (float)(pathTimeMs - t1Ms) / (float)segmentDurationMs; + float t = (float)(pathTimeMs - t1Ms) / static_cast(segmentDurationMs); t = glm::clamp(t, 0.0f, 1.0f); // Tangent of Catmull-Rom spline (derivative) diff --git a/src/game/world_packets.cpp b/src/game/world_packets.cpp index 700e81c2..84e1deaf 100644 --- a/src/game/world_packets.cpp +++ b/src/game/world_packets.cpp @@ -460,7 +460,7 @@ bool CharEnumParser::parse(network::Packet& packet, CharEnumResponse& response) // Read character count uint8_t count = packet.readUInt8(); - LOG_INFO("Parsing SMSG_CHAR_ENUM: ", (int)count, " characters"); + LOG_INFO("Parsing SMSG_CHAR_ENUM: ", static_cast(count), " characters"); response.characters.clear(); response.characters.reserve(count); @@ -475,7 +475,7 @@ bool CharEnumParser::parse(network::Packet& packet, CharEnumResponse& response) // petDisplayModel(4) + petLevel(4) + petFamily(4) + 23items*(dispModel(4)+invType(1)+enchant(4)) = 207 bytes const size_t minCharacterSize = 8 + 1 + 1 + 1 + 1 + 4 + 1 + 1 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 1 + 4 + 4 + 4 + (23 * 9); if (packet.getReadPos() + minCharacterSize > packet.getSize()) { - LOG_WARNING("CharEnumParser: truncated character at index ", (int)i); + LOG_WARNING("CharEnumParser: truncated character at index ", static_cast(i)); break; } @@ -484,14 +484,14 @@ bool CharEnumParser::parse(network::Packet& packet, CharEnumResponse& response) // Read name (null-terminated string) - validate before reading if (packet.getReadPos() >= packet.getSize()) { - LOG_WARNING("CharEnumParser: no bytes for name at index ", (int)i); + LOG_WARNING("CharEnumParser: no bytes for name at index ", static_cast(i)); break; } character.name = packet.readString(); // Validate remaining bytes before reading fixed-size fields if (packet.getReadPos() + 1 > packet.getSize()) { - LOG_WARNING("CharEnumParser: truncated before race/class/gender at index ", (int)i); + LOG_WARNING("CharEnumParser: truncated before race/class/gender at index ", static_cast(i)); character.race = Race::HUMAN; character.characterClass = Class::WARRIOR; character.gender = Gender::MALE; @@ -595,9 +595,9 @@ bool CharEnumParser::parse(network::Packet& packet, CharEnumResponse& response) character.equipment.push_back(item); } - LOG_DEBUG(" Character ", (int)(i + 1), ": ", character.name, + LOG_DEBUG(" Character ", static_cast(i + 1), ": ", character.name, " (", getRaceName(character.race), " ", getClassName(character.characterClass), - " level ", (int)character.level, " zone ", character.zoneId, ")"); + " level ", static_cast(character.level), " zone ", character.zoneId, ")"); response.characters.push_back(character); } @@ -672,7 +672,7 @@ bool AccountDataTimesParser::parse(network::Packet& packet, AccountDataTimesData LOG_DEBUG("Parsed SMSG_ACCOUNT_DATA_TIMES:"); LOG_DEBUG(" Server time: ", data.serverTime); - LOG_DEBUG(" Unknown: ", (int)data.unknown); + LOG_DEBUG(" Unknown: ", static_cast(data.unknown)); LOG_DEBUG(" Mask: 0x", std::hex, mask, std::dec, " slotsInPacket=", slotWords); for (size_t i = 0; i < slotWords; ++i) { @@ -1255,8 +1255,8 @@ bool UpdateObjectParser::parseUpdateFields(network::Packet& packet, UpdateBlock& ? ((block.objectType == ObjectType::PLAYER) ? 55 : 10) : 55; // VALUES: allow PLAYER-sized masks if (blockCount > maxExpectedBlocks) { - LOG_WARNING("UpdateObjectParser: suspicious maskBlockCount=", (int)blockCount, - " for objectType=", (int)block.objectType, + LOG_WARNING("UpdateObjectParser: suspicious maskBlockCount=", static_cast(blockCount), + " for objectType=", static_cast(block.objectType), " guid=0x", std::hex, block.guid, std::dec, " updateFlags=0x", std::hex, block.updateFlags, std::dec, " moveFlags=0x", std::hex, block.moveFlags, std::dec, @@ -1265,7 +1265,7 @@ bool UpdateObjectParser::parseUpdateFields(network::Packet& packet, UpdateBlock& uint32_t fieldsCapacity = blockCount * 32; LOG_DEBUG(" UPDATE MASK PARSE:"); - LOG_DEBUG(" maskBlockCount = ", (int)blockCount); + LOG_DEBUG(" maskBlockCount = ", static_cast(blockCount)); LOG_DEBUG(" fieldsCapacity (blocks * 32) = ", fieldsCapacity); // Read update mask into a reused scratch buffer to avoid per-block allocations. @@ -1349,7 +1349,7 @@ bool UpdateObjectParser::parseUpdateBlock(network::Packet& packet, UpdateBlock& uint8_t updateTypeVal = packet.readUInt8(); block.updateType = static_cast(updateTypeVal); - LOG_DEBUG("Update block: type=", (int)updateTypeVal); + LOG_DEBUG("Update block: type=", static_cast(updateTypeVal)); switch (block.updateType) { case UpdateType::VALUES: { @@ -1381,7 +1381,7 @@ bool UpdateObjectParser::parseUpdateBlock(network::Packet& packet, UpdateBlock& if (packet.getReadPos() >= packet.getSize()) return false; uint8_t objectTypeVal = packet.readUInt8(); block.objectType = static_cast(objectTypeVal); - LOG_DEBUG(" Object type: ", (int)objectTypeVal); + LOG_DEBUG(" Object type: ", static_cast(objectTypeVal)); // Parse movement if present bool hasMovement = parseMovementBlock(packet, block); @@ -1406,7 +1406,7 @@ bool UpdateObjectParser::parseUpdateBlock(network::Packet& packet, UpdateBlock& } default: - LOG_WARNING("Unknown update type: ", (int)updateTypeVal); + LOG_WARNING("Unknown update type: ", static_cast(updateTypeVal)); return false; } } @@ -1737,7 +1737,7 @@ bool MessageChatParser::parse(network::Packet& packet, MessageChatData& data) { LOG_DEBUG(" Channel: ", data.channelName); } LOG_DEBUG(" Message: ", data.message); - LOG_DEBUG(" Chat tag: 0x", std::hex, (int)data.chatTag, std::dec); + LOG_DEBUG(" Chat tag: 0x", std::hex, static_cast(data.chatTag), std::dec); return true; } @@ -2004,7 +2004,7 @@ bool FriendStatusParser::parse(network::Packet& packet, FriendStatusData& data) } } } - LOG_DEBUG("Parsed SMSG_FRIEND_STATUS: status=", (int)data.status, " guid=0x", std::hex, data.guid, std::dec); + LOG_DEBUG("Parsed SMSG_FRIEND_STATUS: status=", static_cast(data.status), " guid=0x", std::hex, data.guid, std::dec); return true; } @@ -2047,7 +2047,7 @@ bool LogoutResponseParser::parse(network::Packet& packet, LogoutResponseData& da data.result = packet.readUInt32(); data.instant = packet.readUInt8(); - LOG_DEBUG("Parsed SMSG_LOGOUT_RESPONSE: result=", data.result, " instant=", (int)data.instant); + LOG_DEBUG("Parsed SMSG_LOGOUT_RESPONSE: result=", data.result, " instant=", static_cast(data.instant)); return true; } @@ -2058,7 +2058,7 @@ bool LogoutResponseParser::parse(network::Packet& packet, LogoutResponseData& da network::Packet StandStateChangePacket::build(uint8_t state) { network::Packet packet(wireOpcode(Opcode::CMSG_STANDSTATECHANGE)); packet.writeUInt32(state); - LOG_DEBUG("Built CMSG_STANDSTATECHANGE: state=", (int)state); + LOG_DEBUG("Built CMSG_STANDSTATECHANGE: state=", static_cast(state)); return packet; } @@ -2083,8 +2083,8 @@ network::Packet SetActionButtonPacket::build(uint8_t button, uint8_t type, uint3 packet.writeUInt16(static_cast(id)); packet.writeUInt8(classicType); packet.writeUInt8(0); // misc - LOG_DEBUG("Built CMSG_SET_ACTION_BUTTON (Classic): button=", (int)button, - " id=", id, " type=", (int)classicType); + LOG_DEBUG("Built CMSG_SET_ACTION_BUTTON (Classic): button=", static_cast(button), + " id=", id, " type=", static_cast(classicType)); } else { // TBC/WotLK: type in bits 24–31, id in bits 0–23; packed=0 clears slot uint8_t packedType = 0x00; // spell @@ -2092,7 +2092,7 @@ network::Packet SetActionButtonPacket::build(uint8_t button, uint8_t type, uint3 if (type == 3 /* MACRO */) packedType = 0x40; uint32_t packed = (id == 0) ? 0 : (static_cast(packedType) << 24) | (id & 0x00FFFFFF); packet.writeUInt32(packed); - LOG_DEBUG("Built CMSG_SET_ACTION_BUTTON (TBC/WotLK): button=", (int)button, + LOG_DEBUG("Built CMSG_SET_ACTION_BUTTON (TBC/WotLK): button=", static_cast(button), " packed=0x", std::hex, packed, std::dec); } return packet; @@ -2510,7 +2510,7 @@ bool GuildEventParser::parse(network::Packet& packet, GuildEventData& data) { if ((packet.getSize() - packet.getReadPos()) >= 8) { data.guid = packet.readUInt64(); } - LOG_INFO("Parsed SMSG_GUILD_EVENT: type=", (int)data.eventType, " strings=", (int)data.numStrings); + LOG_INFO("Parsed SMSG_GUILD_EVENT: type=", static_cast(data.eventType), " strings=", static_cast(data.numStrings)); return true; } @@ -2591,7 +2591,7 @@ network::Packet RaidTargetUpdatePacket::build(uint8_t targetIndex, uint64_t targ network::Packet packet(wireOpcode(Opcode::MSG_RAID_TARGET_UPDATE)); packet.writeUInt8(targetIndex); packet.writeUInt64(targetGuid); - LOG_DEBUG("Built MSG_RAID_TARGET_UPDATE, index: ", (uint32_t)targetIndex, ", guid: 0x", std::hex, targetGuid, std::dec); + LOG_DEBUG("Built MSG_RAID_TARGET_UPDATE, index: ", static_cast(targetIndex), ", guid: 0x", std::hex, targetGuid, std::dec); return packet; } @@ -2636,14 +2636,14 @@ network::Packet SetTradeItemPacket::build(uint8_t tradeSlot, uint8_t bag, uint8_ packet.writeUInt8(tradeSlot); packet.writeUInt8(bag); packet.writeUInt8(bagSlot); - LOG_DEBUG("Built CMSG_SET_TRADE_ITEM slot=", (int)tradeSlot, " bag=", (int)bag, " bagSlot=", (int)bagSlot); + LOG_DEBUG("Built CMSG_SET_TRADE_ITEM slot=", static_cast(tradeSlot), " bag=", static_cast(bag), " bagSlot=", static_cast(bagSlot)); return packet; } network::Packet ClearTradeItemPacket::build(uint8_t tradeSlot) { network::Packet packet(wireOpcode(Opcode::CMSG_CLEAR_TRADE_ITEM)); packet.writeUInt8(tradeSlot); - LOG_DEBUG("Built CMSG_CLEAR_TRADE_ITEM slot=", (int)tradeSlot); + LOG_DEBUG("Built CMSG_CLEAR_TRADE_ITEM slot=", static_cast(tradeSlot)); return packet; } @@ -2768,8 +2768,8 @@ bool NameQueryResponseParser::parse(network::Packet& packet, NameQueryResponseDa data.gender = packet.readUInt8(); data.classId = packet.readUInt8(); - LOG_DEBUG("Name query response: ", data.name, " (race=", (int)data.race, - " class=", (int)data.classId, ")"); + LOG_DEBUG("Name query response: ", data.name, " (race=", static_cast(data.race), + " class=", static_cast(data.classId), ")"); return true; } @@ -3284,7 +3284,7 @@ bool MonsterMoveParser::parse(network::Packet& packet, MonsterMoveData& data) { } LOG_DEBUG("MonsterMove: guid=0x", std::hex, data.guid, std::dec, - " type=", (int)data.moveType, " dur=", data.duration, "ms", + " type=", static_cast(data.moveType), " dur=", data.duration, "ms", " dest=(", data.destX, ",", data.destY, ",", data.destZ, ")"); return true; @@ -3387,7 +3387,7 @@ bool MonsterMoveParser::parseVanilla(network::Packet& packet, MonsterMoveData& d } LOG_DEBUG("MonsterMove(turtle): guid=0x", std::hex, data.guid, std::dec, - " type=", (int)data.moveType, " dur=", data.duration, "ms", + " type=", static_cast(data.moveType), " dur=", data.duration, "ms", " dest=(", data.destX, ",", data.destY, ",", data.destZ, ")"); return true; @@ -3785,7 +3785,7 @@ bool CastFailedParser::parse(network::Packet& packet, CastFailedData& data) { data.castCount = packet.readUInt8(); data.spellId = packet.readUInt32(); data.result = packet.readUInt8(); - LOG_INFO("Cast failed: spell=", data.spellId, " result=", (int)data.result); + LOG_INFO("Cast failed: spell=", data.spellId, " result=", static_cast(data.result)); return true; } @@ -3902,7 +3902,7 @@ bool SpellGoParser::parse(network::Packet& packet, SpellGoData& data) { const uint8_t rawHitCount = packet.readUInt8(); if (rawHitCount > 128) { - LOG_WARNING("Spell go: hitCount capped (requested=", (int)rawHitCount, ")"); + LOG_WARNING("Spell go: hitCount capped (requested=", static_cast(rawHitCount), ")"); } const uint8_t storedHitLimit = std::min(rawHitCount, 128); @@ -3912,7 +3912,7 @@ bool SpellGoParser::parse(network::Packet& packet, SpellGoData& data) { for (uint16_t i = 0; i < rawHitCount; ++i) { // WotLK 3.3.5a hit targets are full uint64 GUIDs (not PackedGuid). if (packet.getSize() - packet.getReadPos() < 8) { - LOG_WARNING("Spell go: truncated hit targets at index ", i, "/", (int)rawHitCount); + LOG_WARNING("Spell go: truncated hit targets at index ", i, "/", static_cast(rawHitCount)); truncatedTargets = true; break; } @@ -3949,15 +3949,15 @@ bool SpellGoParser::parse(network::Packet& packet, SpellGoData& data) { if (i == missCountPos - 1) hexCtx += "["; if (i == missCountPos) hexCtx += "] "; } - LOG_WARNING("Spell go: suspect missCount=", (int)rawMissCount, - " spell=", data.spellId, " hits=", (int)data.hitCount, + LOG_WARNING("Spell go: suspect missCount=", static_cast(rawMissCount), + " spell=", data.spellId, " hits=", static_cast(data.hitCount), " castFlags=0x", std::hex, data.castFlags, std::dec, " missCountPos=", missCountPos, " pktSize=", packet.getSize(), " ctx=", hexCtx); } if (rawMissCount > 128) { - LOG_WARNING("Spell go: missCount capped (requested=", (int)rawMissCount, - ") spell=", data.spellId, " hits=", (int)data.hitCount, + LOG_WARNING("Spell go: missCount capped (requested=", static_cast(rawMissCount), + ") spell=", data.spellId, " hits=", static_cast(data.hitCount), " remaining=", packet.getSize() - packet.getReadPos()); } const uint8_t storedMissLimit = std::min(rawMissCount, 128); @@ -3967,8 +3967,8 @@ bool SpellGoParser::parse(network::Packet& packet, SpellGoData& data) { // WotLK 3.3.5a miss targets are full uint64 GUIDs + uint8 missType. // REFLECT additionally appends uint8 reflectResult. if (packet.getSize() - packet.getReadPos() < 9) { // 8 GUID + 1 missType - LOG_WARNING("Spell go: truncated miss targets at index ", i, "/", (int)rawMissCount, - " spell=", data.spellId, " hits=", (int)data.hitCount); + LOG_WARNING("Spell go: truncated miss targets at index ", i, "/", static_cast(rawMissCount), + " spell=", data.spellId, " hits=", static_cast(data.hitCount)); truncatedTargets = true; break; } @@ -3977,7 +3977,7 @@ bool SpellGoParser::parse(network::Packet& packet, SpellGoData& data) { m.missType = packet.readUInt8(); if (m.missType == 11) { // SPELL_MISS_REFLECT if (packet.getSize() - packet.getReadPos() < 1) { - LOG_WARNING("Spell go: truncated reflect payload at miss index ", i, "/", (int)rawMissCount); + LOG_WARNING("Spell go: truncated reflect payload at miss index ", i, "/", static_cast(rawMissCount)); truncatedTargets = true; break; } @@ -3993,7 +3993,7 @@ bool SpellGoParser::parse(network::Packet& packet, SpellGoData& data) { // rather than discarding the entire spell. The server already applied effects; // we just need the hit list for UI feedback (combat text, health bars). if (truncatedTargets) { - LOG_DEBUG("Spell go: salvaging ", (int)data.hitCount, " hits despite miss truncation"); + LOG_DEBUG("Spell go: salvaging ", static_cast(data.hitCount), " hits despite miss truncation"); packet.setReadPos(packet.getSize()); // consume remaining bytes return true; } @@ -4042,8 +4042,8 @@ bool SpellGoParser::parse(network::Packet& packet, SpellGoData& data) { } } - LOG_DEBUG("Spell go: spell=", data.spellId, " hits=", (int)data.hitCount, - " misses=", (int)data.missCount); + LOG_DEBUG("Spell go: spell=", data.spellId, " hits=", static_cast(data.hitCount), + " misses=", static_cast(data.missCount)); return true; } @@ -4182,7 +4182,7 @@ bool GroupInviteResponseParser::parse(network::Packet& packet, GroupInviteRespon data.canAccept = packet.readUInt8(); // Note: inviterName is a string, which is always safe to read even if empty data.inviterName = packet.readString(); - LOG_INFO("Group invite from: ", data.inviterName, " (canAccept=", (int)data.canAccept, ")"); + LOG_INFO("Group invite from: ", data.inviterName, " (canAccept=", static_cast(data.canAccept), ")"); return true; } @@ -4294,7 +4294,7 @@ bool PartyCommandResultParser::parse(network::Packet& packet, PartyCommandResult } data.result = static_cast(packet.readUInt32()); - LOG_DEBUG("Party command result: ", (int)data.result); + LOG_DEBUG("Party command result: ", static_cast(data.result)); return true; } @@ -4409,7 +4409,7 @@ bool LootResponseParser::parse(network::Packet& packet, LootResponseData& data, // Short failure packet — no gold/item data follows. avail = packet.getSize() - packet.getReadPos(); if (avail < 5) { - LOG_DEBUG("LootResponseParser: lootType=", (int)data.lootType, " (empty/failure response)"); + LOG_DEBUG("LootResponseParser: lootType=", static_cast(data.lootType), " (empty/failure response)"); return false; } @@ -4458,7 +4458,7 @@ bool LootResponseParser::parse(network::Packet& packet, LootResponseData& data, } } - LOG_DEBUG("Loot response: ", (int)itemCount, " regular + ", (int)questItemCount, + LOG_DEBUG("Loot response: ", static_cast(itemCount), " regular + ", static_cast(questItemCount), " quest items, ", data.gold, " copper"); return true; } @@ -4990,7 +4990,7 @@ bool ListInventoryParser::parse(network::Packet& packet, ListInventoryData& data const size_t bytesPerItemWithExt = 32; bool hasExtendedCost = false; if (remaining < static_cast(itemCount) * bytesPerItemNoExt) { - LOG_WARNING("ListInventoryParser: truncated packet (items=", (int)itemCount, + LOG_WARNING("ListInventoryParser: truncated packet (items=", static_cast(itemCount), ", remaining=", remaining, ")"); return false; } @@ -5002,7 +5002,7 @@ bool ListInventoryParser::parse(network::Packet& packet, ListInventoryData& data for (uint8_t i = 0; i < itemCount; ++i) { const size_t perItemBytes = hasExtendedCost ? bytesPerItemWithExt : bytesPerItemNoExt; if (packet.getSize() - packet.getReadPos() < perItemBytes) { - LOG_WARNING("ListInventoryParser: item ", (int)i, " truncated"); + LOG_WARNING("ListInventoryParser: item ", static_cast(i), " truncated"); return false; } VendorItem item; @@ -5017,7 +5017,7 @@ bool ListInventoryParser::parse(network::Packet& packet, ListInventoryData& data data.items.push_back(item); } - LOG_DEBUG("Vendor inventory: ", (int)itemCount, " items (extendedCost: ", hasExtendedCost ? "yes" : "no", ")"); + LOG_DEBUG("Vendor inventory: ", static_cast(itemCount), " items (extendedCost: ", hasExtendedCost ? "yes" : "no", ")"); return true; } @@ -5138,8 +5138,8 @@ bool TalentsInfoParser::parse(network::Packet& packet, TalentsInfoData& data) { return false; } - LOG_INFO("SMSG_TALENTS_INFO: spec=", (int)data.talentSpec, - " unspent=", (int)data.unspentPoints, + LOG_INFO("SMSG_TALENTS_INFO: spec=", static_cast(data.talentSpec), + " unspent=", static_cast(data.unspentPoints), " talentCount=", talentCount, " entryCount=", entryCount); @@ -5157,7 +5157,7 @@ bool TalentsInfoParser::parse(network::Packet& packet, TalentsInfoData& data) { uint8_t rank = packet.readUInt8(); data.talents.push_back({id, rank}); - LOG_INFO(" Entry: id=", id, " rank=", (int)rank); + LOG_INFO(" Entry: id=", id, " rank=", static_cast(rank)); } // Parse glyph tail: glyphSlots + glyphIds[] @@ -5170,11 +5170,11 @@ bool TalentsInfoParser::parse(network::Packet& packet, TalentsInfoData& data) { // Sanity check: Wrath has 6 glyph slots, cap at 12 for safety if (glyphSlots > 12) { - LOG_WARNING("SMSG_TALENTS_INFO: glyphSlots too large (", (int)glyphSlots, "), clamping to 12"); + LOG_WARNING("SMSG_TALENTS_INFO: glyphSlots too large (", static_cast(glyphSlots), "), clamping to 12"); glyphSlots = 12; } - LOG_INFO(" GlyphSlots: ", (int)glyphSlots); + LOG_INFO(" GlyphSlots: ", static_cast(glyphSlots)); data.glyphs.clear(); data.glyphs.reserve(glyphSlots); @@ -5389,7 +5389,7 @@ bool PacketParsers::parseMailList(network::Packet& packet, std::vector= packet.getSize()) { - LOG_WARNING("GuildBankListParser: truncated tab at index ", (int)i); + LOG_WARNING("GuildBankListParser: truncated tab at index ", static_cast(i)); break; } data.tabs[i].tabName = packet.readString(); @@ -5624,7 +5624,7 @@ bool GuildBankListParser::parse(network::Packet& packet, GuildBankData& data) { for (uint8_t i = 0; i < numSlots; ++i) { // Validate minimum bytes before reading slot (slotId(1) + itemEntry(4) = 5) if (packet.getReadPos() + 5 > packet.getSize()) { - LOG_WARNING("GuildBankListParser: truncated slot at index ", (int)i); + LOG_WARNING("GuildBankListParser: truncated slot at index ", static_cast(i)); break; } GuildBankItemSlot slot; diff --git a/src/network/world_socket.cpp b/src/network/world_socket.cpp index 7fe18709..127a7abe 100644 --- a/src/network/world_socket.cpp +++ b/src/network/world_socket.cpp @@ -332,24 +332,24 @@ void WorldSocket::send(const Packet& packet) { rd8(skin) && rd8(face) && rd8(hairStyle) && rd8(hairColor) && rd8(facial) && rd8(outfit); if (ok) { LOG_INFO("CMSG_CHAR_CREATE payload: name='", name, - "' race=", (int)race, " class=", (int)cls, " gender=", (int)gender, - " skin=", (int)skin, " face=", (int)face, - " hairStyle=", (int)hairStyle, " hairColor=", (int)hairColor, - " facial=", (int)facial, " outfit=", (int)outfit, + "' race=", static_cast(race), " class=", static_cast(cls), " gender=", static_cast(gender), + " skin=", static_cast(skin), " face=", static_cast(face), + " hairStyle=", static_cast(hairStyle), " hairColor=", static_cast(hairColor), + " facial=", static_cast(facial), " outfit=", static_cast(outfit), " payloadLen=", payloadLen); // Persist to disk so we can compare TX vs DB even if the console scrolls away. std::ofstream f("charcreate_payload.log", std::ios::app); if (f.is_open()) { f << "name='" << name << "'" - << " race=" << (int)race - << " class=" << (int)cls - << " gender=" << (int)gender - << " skin=" << (int)skin - << " face=" << (int)face - << " hairStyle=" << (int)hairStyle - << " hairColor=" << (int)hairColor - << " facial=" << (int)facial - << " outfit=" << (int)outfit + << " race=" << static_cast(race) + << " class=" << static_cast(cls) + << " gender=" << static_cast(gender) + << " skin=" << static_cast(skin) + << " face=" << static_cast(face) + << " hairStyle=" << static_cast(hairStyle) + << " hairColor=" << static_cast(hairColor) + << " facial=" << static_cast(facial) + << " outfit=" << static_cast(outfit) << " payloadLen=" << payloadLen << "\n"; } diff --git a/src/pipeline/asset_manager.cpp b/src/pipeline/asset_manager.cpp index 469df669..97d3067e 100644 --- a/src/pipeline/asset_manager.cpp +++ b/src/pipeline/asset_manager.cpp @@ -117,7 +117,7 @@ void AssetManager::shutdown() { LOG_INFO("Shutting down asset manager"); if (fileCacheHits + fileCacheMisses > 0) { - float hitRate = (float)fileCacheHits / (fileCacheHits + fileCacheMisses) * 100.0f; + float hitRate = static_cast(fileCacheHits) / (fileCacheHits + fileCacheMisses) * 100.0f; LOG_INFO("File cache stats: ", fileCacheHits, " hits, ", fileCacheMisses, " misses (", (int)hitRate, "% hit rate), ", fileCacheTotalBytes / 1024 / 1024, " MB cached"); } diff --git a/src/pipeline/blp_loader.cpp b/src/pipeline/blp_loader.cpp index 8c817890..96912725 100644 --- a/src/pipeline/blp_loader.cpp +++ b/src/pipeline/blp_loader.cpp @@ -253,7 +253,7 @@ void BLPLoader::decompressDXT3(const uint8_t* src, uint8_t* dst, int width, int // First 8 bytes: 4-bit alpha values uint64_t alphaBlock = 0; for (int i = 0; i < 8; i++) { - alphaBlock |= (uint64_t)block[i] << (i * 8); + alphaBlock |= static_cast(block[i]) << (i * 8); } // Color block (same as DXT1) starts at byte 8 @@ -336,7 +336,7 @@ void BLPLoader::decompressDXT5(const uint8_t* src, uint8_t* dst, int width, int // Alpha indices (48 bits for 16 pixels, 3 bits each) uint64_t alphaIndices = 0; for (int i = 2; i < 8; i++) { - alphaIndices |= (uint64_t)block[i] << ((i - 2) * 8); + alphaIndices |= static_cast(block[i]) << ((i - 2) * 8); } // Color block (same as DXT1) starts at byte 8 diff --git a/src/rendering/renderer.cpp b/src/rendering/renderer.cpp index 0454f64f..36e404cb 100644 --- a/src/rendering/renderer.cpp +++ b/src/rendering/renderer.cpp @@ -1583,7 +1583,7 @@ void Renderer::setMounted(uint32_t mountInstId, uint32_t mountDisplayId, float h int bestScore = -999; for (uint32_t id : loops) { int sc = 0; - sc += scoreNear((int)id, 38); // classic hint + sc += scoreNear(static_cast(id), 38); // classic hint const auto* s = findSeqById(id); if (s) sc += (s->duration >= 500 && s->duration <= 800) ? 5 : 0; if (sc > bestScore) { @@ -1607,10 +1607,10 @@ void Renderer::setMounted(uint32_t mountInstId, uint32_t mountDisplayId, float h // Start window if (seq.duration >= 450 && seq.duration <= 1100) { int sc = 0; - if (loop) sc += scoreNear((int)seq.id, (int)loop); + if (loop) sc += scoreNear(static_cast(seq.id), static_cast(loop)); // Chain bonus: if this start points at loop or near it - if (loop && (seq.nextAnimation == (int16_t)loop || seq.aliasNext == loop)) sc += 30; - if (loop && scoreNear(seq.nextAnimation, (int)loop) > 0) sc += 10; + if (loop && (seq.nextAnimation == static_cast(loop) || seq.aliasNext == loop)) sc += 30; + if (loop && scoreNear(seq.nextAnimation, static_cast(loop)) > 0) sc += 10; // Penalize "stop/brake-ish": very long blendTime can be a stop transition if (seq.blendTime > 400) sc -= 5; @@ -1623,9 +1623,9 @@ void Renderer::setMounted(uint32_t mountInstId, uint32_t mountDisplayId, float h // End window if (seq.duration >= 650 && seq.duration <= 1600) { int sc = 0; - if (loop) sc += scoreNear((int)seq.id, (int)loop); + if (loop) sc += scoreNear(static_cast(seq.id), static_cast(loop)); // Chain bonus: end often points to run/stand or has no next - if (seq.nextAnimation == (int16_t)runId || seq.nextAnimation == (int16_t)standId) sc += 10; + if (seq.nextAnimation == static_cast(runId) || seq.nextAnimation == static_cast(standId)) sc += 10; if (seq.nextAnimation < 0) sc += 5; // no chain sometimes = terminal if (sc > bestEnd) { bestEnd = sc; @@ -1698,7 +1698,7 @@ void Renderer::setMounted(uint32_t mountInstId, uint32_t mountDisplayId, float h if (!isLoop && (hasFrequency || hasReplay) && isStationary && reasonableDuration && !isDeathOrWound && !isAttackOrCombat && !isSpecial) { // Bonus: chains back to stand (indicates idle behavior) - bool chainsToStand = (seq.nextAnimation == (int16_t)mountAnims_.stand) || + bool chainsToStand = (seq.nextAnimation == static_cast(mountAnims_.stand)) || (seq.aliasNext == mountAnims_.stand) || (seq.nextAnimation == -1); diff --git a/src/ui/game_screen.cpp b/src/ui/game_screen.cpp index 26f0b8f2..fd904b7c 100644 --- a/src/ui/game_screen.cpp +++ b/src/ui/game_screen.cpp @@ -9415,7 +9415,7 @@ void GameScreen::renderActionBar(game::GameHandler& gameHandler) { float cd = slot.cooldownRemaining; if (cd >= 60.0f) ImGui::TextColored(ImVec4(1.0f, 0.3f, 0.3f, 1.0f), - "Cooldown: %d min %d sec", (int)cd/60, (int)cd%60); + "Cooldown: %d min %d sec", static_cast(cd)/60, static_cast(cd)%60); else ImGui::TextColored(ImVec4(1.0f, 0.3f, 0.3f, 1.0f), "Cooldown: %.1f sec", cd); } @@ -9431,7 +9431,7 @@ void GameScreen::renderActionBar(game::GameHandler& gameHandler) { float cd = macroCooldownRemaining; if (cd >= 60.0f) ImGui::TextColored(ImVec4(1.0f, 0.3f, 0.3f, 1.0f), - "Cooldown: %d min %d sec", (int)cd/60, (int)cd%60); + "Cooldown: %d min %d sec", static_cast(cd)/60, static_cast(cd)%60); else ImGui::TextColored(ImVec4(1.0f, 0.3f, 0.3f, 1.0f), "Cooldown: %.1f sec", cd); } @@ -9494,7 +9494,7 @@ void GameScreen::renderActionBar(game::GameHandler& gameHandler) { float cd = slot.cooldownRemaining; if (cd >= 60.0f) ImGui::TextColored(ImVec4(1.0f, 0.3f, 0.3f, 1.0f), - "Cooldown: %d min %d sec", (int)cd/60, (int)cd%60); + "Cooldown: %d min %d sec", static_cast(cd)/60, static_cast(cd)%60); else ImGui::TextColored(ImVec4(1.0f, 0.3f, 0.3f, 1.0f), "Cooldown: %.1f sec", cd); } @@ -9533,9 +9533,9 @@ void GameScreen::renderActionBar(game::GameHandler& gameHandler) { char cdText[16]; float cd = effCdRemaining; - if (cd >= 3600.0f) snprintf(cdText, sizeof(cdText), "%dh", (int)cd / 3600); - else if (cd >= 60.0f) snprintf(cdText, sizeof(cdText), "%dm%ds", (int)cd / 60, (int)cd % 60); - else if (cd >= 5.0f) snprintf(cdText, sizeof(cdText), "%ds", (int)cd); + if (cd >= 3600.0f) snprintf(cdText, sizeof(cdText), "%dh", static_cast(cd) / 3600); + else if (cd >= 60.0f) snprintf(cdText, sizeof(cdText), "%dm%ds", static_cast(cd) / 60, static_cast(cd) % 60); + else if (cd >= 5.0f) snprintf(cdText, sizeof(cdText), "%ds", static_cast(cd)); else snprintf(cdText, sizeof(cdText), "%.1f", cd); ImVec2 textSize = ImGui::CalcTextSize(cdText); float tx = cx - textSize.x * 0.5f; @@ -10766,7 +10766,7 @@ void GameScreen::renderCooldownTracker(game::GameHandler& gameHandler) { // Name (truncated) + remaining time char timeStr[16]; if (cd.remaining >= 60.0f) - snprintf(timeStr, sizeof(timeStr), "%dm%ds", (int)cd.remaining / 60, (int)cd.remaining % 60); + snprintf(timeStr, sizeof(timeStr), "%dm%ds", static_cast(cd.remaining) / 60, static_cast(cd.remaining) % 60); else snprintf(timeStr, sizeof(timeStr), "%.0fs", cd.remaining); @@ -12692,7 +12692,7 @@ void GameScreen::renderPartyFrames(game::GameHandler& gameHandler) { snprintf(hpText, sizeof(hpText), "OOR"); } else if (maxHp >= 10000) { snprintf(hpText, sizeof(hpText), "%dk/%dk", - (int)hp / 1000, (int)maxHp / 1000); + static_cast(hp) / 1000, static_cast(maxHp) / 1000); } else { snprintf(hpText, sizeof(hpText), "%u/%u", hp, maxHp); } @@ -13107,18 +13107,18 @@ void GameScreen::renderRepToasts(float deltaTime) { ImVec2 br(toastX + toastW, toastY + toastH); // Background - draw->AddRectFilled(tl, br, IM_COL32(15, 15, 20, (int)(alpha * 200)), 4.0f); + draw->AddRectFilled(tl, br, IM_COL32(15, 15, 20, static_cast(alpha * 200)), 4.0f); // Border: green for gain, red for loss ImU32 borderCol = (e.delta > 0) - ? IM_COL32(80, 200, 80, (int)(alpha * 220)) - : IM_COL32(200, 60, 60, (int)(alpha * 220)); + ? IM_COL32(80, 200, 80, static_cast(alpha * 220)) + : IM_COL32(200, 60, 60, static_cast(alpha * 220)); draw->AddRect(tl, br, borderCol, 4.0f, 0, 1.5f); // Delta text: "+250" or "-250" char deltaBuf[16]; snprintf(deltaBuf, sizeof(deltaBuf), "%+d", e.delta); - ImU32 deltaCol = (e.delta > 0) ? IM_COL32(80, 220, 80, (int)(alpha * 255)) - : IM_COL32(220, 70, 70, (int)(alpha * 255)); + ImU32 deltaCol = (e.delta > 0) ? IM_COL32(80, 220, 80, static_cast(alpha * 255)) + : IM_COL32(220, 70, 70, static_cast(alpha * 255)); draw->AddText(font, fontSize, ImVec2(tl.x + 6.0f, tl.y + (toastH - fontSize) * 0.5f), deltaCol, deltaBuf); @@ -13126,7 +13126,7 @@ void GameScreen::renderRepToasts(float deltaTime) { char nameBuf[64]; snprintf(nameBuf, sizeof(nameBuf), "%s (%s)", e.factionName.c_str(), standingLabel(e.standing)); draw->AddText(font, fontSize * 0.85f, ImVec2(tl.x + 44.0f, tl.y + (toastH - fontSize * 0.85f) * 0.5f), - IM_COL32(210, 210, 210, (int)(alpha * 220)), nameBuf); + IM_COL32(210, 210, 210, static_cast(alpha * 220)), nameBuf); } } @@ -13169,26 +13169,26 @@ void GameScreen::renderQuestCompleteToasts(float deltaTime) { ImVec2 br(toastX + toastW, toastY + toastH); // Background + gold border (quest completion) - draw->AddRectFilled(tl, br, IM_COL32(20, 18, 8, (int)(alpha * 210)), 5.0f); - draw->AddRect(tl, br, IM_COL32(220, 180, 30, (int)(alpha * 230)), 5.0f, 0, 1.5f); + draw->AddRectFilled(tl, br, IM_COL32(20, 18, 8, static_cast(alpha * 210)), 5.0f); + draw->AddRect(tl, br, IM_COL32(220, 180, 30, static_cast(alpha * 230)), 5.0f, 0, 1.5f); // Scroll icon placeholder (gold diamond) float iconCx = tl.x + 18.0f; float iconCy = tl.y + toastH * 0.5f; - draw->AddCircleFilled(ImVec2(iconCx, iconCy), 7.0f, IM_COL32(210, 170, 20, (int)(alpha * 230))); - draw->AddCircle (ImVec2(iconCx, iconCy), 7.0f, IM_COL32(255, 220, 50, (int)(alpha * 200))); + draw->AddCircleFilled(ImVec2(iconCx, iconCy), 7.0f, IM_COL32(210, 170, 20, static_cast(alpha * 230))); + draw->AddCircle (ImVec2(iconCx, iconCy), 7.0f, IM_COL32(255, 220, 50, static_cast(alpha * 200))); // "Quest Complete" header in gold const char* header = "Quest Complete"; draw->AddText(font, fontSize * 0.78f, ImVec2(tl.x + 34.0f, tl.y + 4.0f), - IM_COL32(240, 200, 40, (int)(alpha * 240)), header); + IM_COL32(240, 200, 40, static_cast(alpha * 240)), header); // Quest title in off-white const char* titleStr = e.title.empty() ? "Unknown Quest" : e.title.c_str(); draw->AddText(font, fontSize * 0.82f, ImVec2(tl.x + 34.0f, tl.y + toastH * 0.5f + 1.0f), - IM_COL32(220, 215, 195, (int)(alpha * 220)), titleStr); + IM_COL32(220, 215, 195, static_cast(alpha * 220)), titleStr); } } @@ -13237,16 +13237,16 @@ void GameScreen::renderZoneToasts(float deltaTime) { ImVec2 tl(toastX, toastY); ImVec2 br(toastX + toastW, toastY + toastH); - draw->AddRectFilled(tl, br, IM_COL32(10, 10, 16, (int)(alpha * 200)), 6.0f); - draw->AddRect(tl, br, IM_COL32(160, 140, 80, (int)(alpha * 220)), 6.0f, 0, 1.2f); + draw->AddRectFilled(tl, br, IM_COL32(10, 10, 16, static_cast(alpha * 200)), 6.0f); + draw->AddRect(tl, br, IM_COL32(160, 140, 80, static_cast(alpha * 220)), 6.0f, 0, 1.2f); float cx = tl.x + toastW * 0.5f; draw->AddText(font, 11.0f, ImVec2(cx - hdrSz.x * 0.5f, tl.y + 5.0f), - IM_COL32(180, 170, 120, (int)(alpha * 200)), header); + IM_COL32(180, 170, 120, static_cast(alpha * 200)), header); draw->AddText(font, 14.0f, ImVec2(cx - nameSz.x * 0.5f, tl.y + toastH * 0.5f + 1.0f), - IM_COL32(255, 230, 140, (int)(alpha * 240)), e.zoneName.c_str()); + IM_COL32(255, 230, 140, static_cast(alpha * 240)), e.zoneName.c_str()); } } @@ -13301,18 +13301,18 @@ void GameScreen::renderAreaTriggerToasts(float deltaTime, game::GameHandler& gam ImVec2 tl(toastX, toastY); ImVec2 br(toastX + toastW, toastY + toastH); - draw->AddRectFilled(tl, br, IM_COL32(8, 12, 22, (int)(alpha * 190)), 5.0f); - draw->AddRect(tl, br, IM_COL32(100, 160, 220, (int)(alpha * 200)), 5.0f, 0, 1.0f); + draw->AddRectFilled(tl, br, IM_COL32(8, 12, 22, static_cast(alpha * 190)), 5.0f); + draw->AddRect(tl, br, IM_COL32(100, 160, 220, static_cast(alpha * 200)), 5.0f, 0, 1.0f); float cx = tl.x + toastW * 0.5f; // Shadow draw->AddText(font, 13.0f, ImVec2(cx - txtSz.x * 0.5f + 1, tl.y + (toastH - txtSz.y) * 0.5f + 1), - IM_COL32(0, 0, 0, (int)(alpha * 180)), t.text.c_str()); + IM_COL32(0, 0, 0, static_cast(alpha * 180)), t.text.c_str()); // Text in light blue draw->AddText(font, 13.0f, ImVec2(cx - txtSz.x * 0.5f, tl.y + (toastH - txtSz.y) * 0.5f), - IM_COL32(180, 220, 255, (int)(alpha * 240)), t.text.c_str()); + IM_COL32(180, 220, 255, static_cast(alpha * 240)), t.text.c_str()); } } @@ -14616,7 +14616,7 @@ void GameScreen::renderGuildRoster(game::GameHandler& gameHandler) { for (const auto& m : roster.members) { if (m.online) ++onlineCount; } - ImGui::Text("%d members (%d online)", (int)roster.members.size(), onlineCount); + ImGui::Text("%d members (%d online)", static_cast(roster.members.size()), onlineCount); ImGui::Separator(); const auto& rankNames = gameHandler.getGuildRankNames(); @@ -17239,7 +17239,7 @@ void GameScreen::renderTrainerWindow(game::GameHandler& gameHandler) { } if (logCount < 3) { LOG_INFO("Trainer button debug: spellId=", spell->spellId, - " alreadyKnown=", alreadyKnown, " state=", (int)spell->state, + " alreadyKnown=", alreadyKnown, " state=", static_cast(spell->state), " prereqsMet=", prereqsMet, " (", prereq1Met, ",", prereq2Met, ",", prereq3Met, ")", " levelMet=", levelMet, " reqLevel=", spell->reqLevel, " playerLevel=", playerLevel, @@ -22855,10 +22855,10 @@ void GameScreen::renderDingEffect() { // Slight black outline for readability draw->AddText(font, fontSize, ImVec2(tx + 2, ty + 2), - IM_COL32(0, 0, 0, (int)(alpha * 180)), buf); + IM_COL32(0, 0, 0, static_cast(alpha * 180)), buf); // Gold text draw->AddText(font, fontSize, ImVec2(tx, ty), - IM_COL32(255, 210, 0, (int)(alpha * 255)), buf); + IM_COL32(255, 210, 0, static_cast(alpha * 255)), buf); // Stat gains below the main text (shown only if server sent deltas) bool hasStatGains = (dingHpDelta_ > 0 || dingManaDelta_ > 0 || @@ -22878,7 +22878,7 @@ void GameScreen::renderDingEffect() { if (dingManaDelta_ > 0) written += snprintf(statBuf + written, sizeof(statBuf) - written, "+%u Mana ", dingManaDelta_); - for (int i = 0; i < 5 && written < (int)sizeof(statBuf) - 1; ++i) { + for (int i = 0; i < 5 && written < static_cast(sizeof(statBuf)) - 1; ++i) { if (dingStats_[i] > 0) written += snprintf(statBuf + written, sizeof(statBuf) - written, "+%u %s ", dingStats_[i], kStatLabels[i]); @@ -22891,9 +22891,9 @@ void GameScreen::renderDingEffect() { ImVec2 ssz = font->CalcTextSizeA(smallSize, FLT_MAX, 0.0f, statBuf); float stx = cx - ssz.x * 0.5f; draw->AddText(font, smallSize, ImVec2(stx + 1, yOff + 1), - IM_COL32(0, 0, 0, (int)(alpha * 160)), statBuf); + IM_COL32(0, 0, 0, static_cast(alpha * 160)), statBuf); draw->AddText(font, smallSize, ImVec2(stx, yOff), - IM_COL32(100, 220, 100, (int)(alpha * 230)), statBuf); + IM_COL32(100, 220, 100, static_cast(alpha * 230)), statBuf); } } } @@ -22944,8 +22944,8 @@ void GameScreen::renderAchievementToast() { // Background panel (gold border, dark fill) ImVec2 tl(toastX, toastY); ImVec2 br(toastX + TOAST_W, toastY + TOAST_H); - draw->AddRectFilled(tl, br, IM_COL32(30, 20, 10, (int)(alpha * 230)), 6.0f); - draw->AddRect(tl, br, IM_COL32(200, 170, 50, (int)(alpha * 255)), 6.0f, 0, 2.0f); + draw->AddRectFilled(tl, br, IM_COL32(30, 20, 10, static_cast(alpha * 230)), 6.0f); + draw->AddRect(tl, br, IM_COL32(200, 170, 50, static_cast(alpha * 255)), 6.0f, 0, 2.0f); // Title ImFont* font = ImGui::GetFont(); @@ -22955,9 +22955,9 @@ void GameScreen::renderAchievementToast() { float titleW = font->CalcTextSizeA(titleSize, FLT_MAX, 0.0f, title).x; float titleX = toastX + (TOAST_W - titleW) * 0.5f; draw->AddText(font, titleSize, ImVec2(titleX + 1, toastY + 8 + 1), - IM_COL32(0, 0, 0, (int)(alpha * 180)), title); + IM_COL32(0, 0, 0, static_cast(alpha * 180)), title); draw->AddText(font, titleSize, ImVec2(titleX, toastY + 8), - IM_COL32(255, 215, 0, (int)(alpha * 255)), title); + IM_COL32(255, 215, 0, static_cast(alpha * 255)), title); // Achievement name (falls back to ID if name not available) char idBuf[256]; @@ -22971,7 +22971,7 @@ void GameScreen::renderAchievementToast() { float idW = font->CalcTextSizeA(bodySize, FLT_MAX, 0.0f, idBuf).x; float idX = toastX + (TOAST_W - idW) * 0.5f; draw->AddText(font, bodySize, ImVec2(idX, toastY + 28), - IM_COL32(220, 200, 150, (int)(alpha * 255)), idBuf); + IM_COL32(220, 200, 150, static_cast(alpha * 255)), idBuf); } // --------------------------------------------------------------------------- @@ -23028,22 +23028,22 @@ void GameScreen::renderDiscoveryToast() { // "Discovered!" in gold draw->AddText(font, headerSize, ImVec2(headerX + 1, headerY + 1), - IM_COL32(0, 0, 0, (int)(alpha * 160)), header); + IM_COL32(0, 0, 0, static_cast(alpha * 160)), header); draw->AddText(font, headerSize, ImVec2(headerX, headerY), - IM_COL32(255, 215, 0, (int)(alpha * 255)), header); + IM_COL32(255, 215, 0, static_cast(alpha * 255)), header); // Area name in white draw->AddText(font, nameSize, ImVec2(nameX + 1, nameY + 1), - IM_COL32(0, 0, 0, (int)(alpha * 160)), discoveryToastName_.c_str()); + IM_COL32(0, 0, 0, static_cast(alpha * 160)), discoveryToastName_.c_str()); draw->AddText(font, nameSize, ImVec2(nameX, nameY), - IM_COL32(255, 255, 255, (int)(alpha * 255)), discoveryToastName_.c_str()); + IM_COL32(255, 255, 255, static_cast(alpha * 255)), discoveryToastName_.c_str()); // XP gain in light green (if any) if (xpBuf[0] != '\0') { draw->AddText(font, xpSize, ImVec2(xpX + 1, xpY + 1), - IM_COL32(0, 0, 0, (int)(alpha * 140)), xpBuf); + IM_COL32(0, 0, 0, static_cast(alpha * 140)), xpBuf); draw->AddText(font, xpSize, ImVec2(xpX, xpY), - IM_COL32(100, 220, 100, (int)(alpha * 230)), xpBuf); + IM_COL32(100, 220, 100, static_cast(alpha * 230)), xpBuf); } } @@ -23590,15 +23590,15 @@ void GameScreen::renderZoneText(game::GameHandler& gameHandler) { // "Entering:" in gold draw->AddText(font, headerSize, ImVec2(headerX + 1, headerY + 1), - IM_COL32(0, 0, 0, (int)(alpha * 160)), header); + IM_COL32(0, 0, 0, static_cast(alpha * 160)), header); draw->AddText(font, headerSize, ImVec2(headerX, headerY), - IM_COL32(255, 215, 0, (int)(alpha * 255)), header); + IM_COL32(255, 215, 0, static_cast(alpha * 255)), header); // Zone name in white draw->AddText(font, nameSize, ImVec2(nameX + 1, nameY + 1), - IM_COL32(0, 0, 0, (int)(alpha * 160)), zoneTextName_.c_str()); + IM_COL32(0, 0, 0, static_cast(alpha * 160)), zoneTextName_.c_str()); draw->AddText(font, nameSize, ImVec2(nameX, nameY), - IM_COL32(255, 255, 255, (int)(alpha * 255)), zoneTextName_.c_str()); + IM_COL32(255, 255, 255, static_cast(alpha * 255)), zoneTextName_.c_str()); } // --------------------------------------------------------------------------- @@ -23937,14 +23937,14 @@ void GameScreen::renderDungeonFinderWindow(game::GameHandler& gameHandler) { // Find current index int curIdx = 0; - for (int i = 0; i < (int)(sizeof(kDungeons)/sizeof(kDungeons[0])); ++i) { + for (int i = 0; i < static_cast(sizeof(kDungeons)/sizeof(kDungeons[0])); ++i) { if (kDungeons[i].id == lfgSelectedDungeon_) { curIdx = i; break; } } ImGui::SetNextItemWidth(-1); if (ImGui::BeginCombo("##dungeon", kDungeons[curIdx].name)) { uint8_t lastCat = 255; - for (int i = 0; i < (int)(sizeof(kDungeons)/sizeof(kDungeons[0])); ++i) { + for (int i = 0; i < static_cast(sizeof(kDungeons)/sizeof(kDungeons[0])); ++i) { if (kDungeons[i].cat != lastCat && kCatHeaders[kDungeons[i].cat]) { if (lastCat != 255) ImGui::Separator(); ImGui::TextDisabled("%s", kCatHeaders[kDungeons[i].cat]); @@ -24642,7 +24642,7 @@ void GameScreen::renderCombatLog(game::GameHandler& gameHandler) { : ImVec4(1.0f, 0.15f, 0.15f, 1.0f); break; default: - snprintf(desc, sizeof(desc), "Combat event (type %d, amount %d)", (int)e.type, e.amount); + snprintf(desc, sizeof(desc), "Combat event (type %d, amount %d)", static_cast(e.type), e.amount); color = ImVec4(0.7f, 0.7f, 0.7f, 1.0f); break; } @@ -24701,7 +24701,7 @@ void GameScreen::renderAchievementWindow(game::GameHandler& gameHandler) { if (ImGui::BeginTabBar("##achtabs")) { // --- Earned tab --- char earnedLabel[32]; - snprintf(earnedLabel, sizeof(earnedLabel), "Earned (%u)###earned", (unsigned)earned.size()); + snprintf(earnedLabel, sizeof(earnedLabel), "Earned (%u)###earned", static_cast(earned.size())); if (ImGui::BeginTabItem(earnedLabel)) { if (earned.empty()) { ImGui::TextDisabled("No achievements earned yet."); @@ -24765,7 +24765,7 @@ void GameScreen::renderAchievementWindow(game::GameHandler& gameHandler) { // --- Criteria progress tab --- char critLabel[32]; - snprintf(critLabel, sizeof(critLabel), "Criteria (%u)###crit", (unsigned)criteria.size()); + snprintf(critLabel, sizeof(critLabel), "Criteria (%u)###crit", static_cast(criteria.size())); if (ImGui::BeginTabItem(critLabel)) { // Lazy-load AchievementCriteria.dbc for descriptions struct CriteriaEntry { uint32_t achievementId; uint64_t quantity; std::string description; }; @@ -25027,7 +25027,7 @@ void GameScreen::renderThreatWindow(game::GameHandler& gameHandler) { if (isPlayer && rank == 1) col = ImVec4(1.0f, 0.3f, 0.3f, 1.0f); // red — you have aggro // Threat bar - float pct = (maxThreat > 0) ? (float)entry.threat / (float)maxThreat : 0.0f; + float pct = (maxThreat > 0) ? static_cast(entry.threat) / static_cast(maxThreat) : 0.0f; ImGui::PushStyleColor(ImGuiCol_PlotHistogram, isPlayer ? ImVec4(0.8f, 0.2f, 0.2f, 0.7f) : ImVec4(0.2f, 0.5f, 0.8f, 0.5f)); char barLabel[48]; @@ -25359,7 +25359,7 @@ void GameScreen::renderInspectWindow(game::GameHandler& gameHandler) { } if (result->talentGroups > 1) { ImGui::SameLine(); - ImGui::TextDisabled(" Dual spec (active %u)", (unsigned)result->activeTalentGroup + 1); + ImGui::TextDisabled(" Dual spec (active %u)", static_cast(result->activeTalentGroup) + 1); } ImGui::Separator(); diff --git a/src/ui/talent_screen.cpp b/src/ui/talent_screen.cpp index 5f87712f..7ff4ee31 100644 --- a/src/ui/talent_screen.cpp +++ b/src/ui/talent_screen.cpp @@ -748,7 +748,7 @@ void TalentScreen::renderGlyphs(game::GameHandler& gameHandler) { if (!name.empty()) { ImGui::TextColored(ImVec4(0.9f, 0.9f, 0.9f, 1.0f), "%s", name.c_str()); } else { - ImGui::TextColored(ImVec4(0.7f, 0.7f, 0.7f, 1.0f), "Glyph #%u", (uint32_t)glyphId); + ImGui::TextColored(ImVec4(0.7f, 0.7f, 0.7f, 1.0f), "Glyph #%u", static_cast(glyphId)); } };