mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-22 23:30:14 +00:00
fix: use authoritative autocast state for pet action bar and correct tooltip labels
- Use isPetSpellAutocast() instead of parsing the slot value high byte for autocast detection; the authoritative source is the SMSG_PET_SPELLS spell list activeFlags, not the action bar slot value. - Fix tooltip mapping: actionId==2 maps to "Follow", actionId==5 to "Attack", others to "Stay" (removed erroneous duplicate Follow case for actionId==4). - Update spellbook comment: TBC Spell.dbc has ~220+ fields (not ~167).
This commit is contained in:
parent
2e38a9af65
commit
373dbbf95d
2 changed files with 4 additions and 3 deletions
|
|
@ -2068,7 +2068,8 @@ void GameScreen::renderPetFrame(game::GameHandler& gameHandler) {
|
||||||
if (slotVal == 0) continue;
|
if (slotVal == 0) continue;
|
||||||
|
|
||||||
uint32_t actionId = slotVal & 0x00FFFFFFu;
|
uint32_t actionId = slotVal & 0x00FFFFFFu;
|
||||||
bool autocastOn = (slotVal & 0xFF000000u) == 0x80000000u;
|
// Use the authoritative autocast set from SMSG_PET_SPELLS spell list flags.
|
||||||
|
bool autocastOn = gameHandler.isPetSpellAutocast(actionId);
|
||||||
|
|
||||||
ImGui::PushID(i);
|
ImGui::PushID(i);
|
||||||
if (rendered > 0) ImGui::SameLine(0.0f, spacing);
|
if (rendered > 0) ImGui::SameLine(0.0f, spacing);
|
||||||
|
|
@ -2117,7 +2118,7 @@ void GameScreen::renderPetFrame(game::GameHandler& gameHandler) {
|
||||||
// Tooltip: show spell name or built-in command name.
|
// Tooltip: show spell name or built-in command name.
|
||||||
if (ImGui::IsItemHovered()) {
|
if (ImGui::IsItemHovered()) {
|
||||||
const char* tip = builtinLabel
|
const char* tip = builtinLabel
|
||||||
? (actionId == 5 ? "Attack" : actionId == 4 ? "Follow" : actionId == 2 ? "Follow" : "Stay")
|
? (actionId == 5 ? "Attack" : actionId == 2 ? "Follow" : "Stay")
|
||||||
: nullptr;
|
: nullptr;
|
||||||
std::string spellNm;
|
std::string spellNm;
|
||||||
if (!tip && actionId > 5) {
|
if (!tip && actionId > 5) {
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ void SpellbookScreen::loadSpellDBC(pipeline::AssetManager* assetManager) {
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t fieldCount = dbc->getFieldCount();
|
uint32_t fieldCount = dbc->getFieldCount();
|
||||||
// Classic 1.12 Spell.dbc has 148 fields (Tooltip at index 147), TBC has ~167, WotLK has 234.
|
// Classic 1.12 Spell.dbc has 148 fields (Tooltip at index 147), TBC has ~220+ (SchoolMask at 215), WotLK has 234.
|
||||||
// Require at least 148 fields so all expansions can load spell names/icons via the DBC layout.
|
// Require at least 148 fields so all expansions can load spell names/icons via the DBC layout.
|
||||||
if (fieldCount < 148) {
|
if (fieldCount < 148) {
|
||||||
LOG_WARNING("Spellbook: Spell.dbc has ", fieldCount, " fields, too few to load");
|
LOG_WARNING("Spellbook: Spell.dbc has ", fieldCount, " fields, too few to load");
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue