diff --git a/include/ui/ui_colors.hpp b/include/ui/ui_colors.hpp index 716c138a..abbda64f 100644 --- a/include/ui/ui_colors.hpp +++ b/include/ui/ui_colors.hpp @@ -42,6 +42,10 @@ namespace colors { constexpr ImVec4 kLowHealthRed = {0.8f, 0.2f, 0.2f, 1.0f}; constexpr ImVec4 kDangerRed = {0.7f, 0.2f, 0.2f, 1.0f}; + // Cast bar / status colors + constexpr ImVec4 kCastGreen = {0.2f, 0.75f, 0.2f, 1.0f}; + constexpr ImVec4 kQueueGreen = {0.3f, 0.9f, 0.3f, 1.0f}; + // Button styling colors (accept/decline patterns) constexpr ImVec4 kBtnGreen = {0.15f, 0.5f, 0.15f, 1.0f}; constexpr ImVec4 kBtnGreenHover = {0.2f, 0.7f, 0.2f, 1.0f}; // == kFriendlyGreen diff --git a/src/ui/game_screen.cpp b/src/ui/game_screen.cpp index dd660aae..d24818d2 100644 --- a/src/ui/game_screen.cpp +++ b/src/ui/game_screen.cpp @@ -723,7 +723,6 @@ void GameScreen::render(game::GameHandler& gameHandler) { renderBookWindow(gameHandler); renderThreatWindow(gameHandler); renderBgScoreboard(gameHandler); - // renderQuestMarkers(gameHandler); // Disabled - using 3D billboard markers now if (showMinimap_) { renderMinimapMarkers(gameHandler); } @@ -4533,7 +4532,7 @@ void GameScreen::renderTargetFrame(game::GameHandler& gameHandler) { else castBarColor = ImVec4(1.0f * pulse, 0.1f * pulse, 0.1f * pulse, 1.0f); // red pulse } else { - castBarColor = interruptible ? ImVec4(0.2f, 0.75f, 0.2f, 1.0f) // green = can interrupt + castBarColor = interruptible ? colors::kCastGreen // green = can interrupt : ImVec4(0.85f, 0.15f, 0.15f, 1.0f); // red = uninterruptible } ImGui::PushStyleColor(ImGuiCol_PlotHistogram, castBarColor); @@ -4600,7 +4599,7 @@ void GameScreen::renderTargetFrame(game::GameHandler& gameHandler) { uint32_t totMaxHp = totUnit->getMaxHealth(); float totPct = static_cast(totHp) / static_cast(totMaxHp); ImVec4 totBarColor = - totPct > 0.5f ? ImVec4(0.2f, 0.75f, 0.2f, 1.0f) : + totPct > 0.5f ? colors::kCastGreen : totPct > 0.2f ? ImVec4(0.75f, 0.75f, 0.2f, 1.0f) : ImVec4(0.75f, 0.2f, 0.2f, 1.0f); ImGui::PushStyleColor(ImGuiCol_PlotHistogram, totBarColor); @@ -4906,7 +4905,7 @@ void GameScreen::renderTargetFrame(game::GameHandler& gameHandler) { : ImVec4(1.0f * pulse, 0.1f * pulse, 0.1f * pulse, 1.0f); } else { tcColor = totCs->interruptible - ? ImVec4(0.2f, 0.75f, 0.2f, 1.0f) + ? colors::kCastGreen : ImVec4(0.85f, 0.15f, 0.15f, 1.0f); } ImGui::PushStyleColor(ImGuiCol_PlotHistogram, tcColor); @@ -5538,7 +5537,7 @@ void GameScreen::renderFocusFrame(game::GameHandler& gameHandler) { float fofPct = static_cast(fofUnit->getHealth()) / static_cast(fofUnit->getMaxHealth()); ImVec4 fofBarColor = - fofPct > 0.5f ? ImVec4(0.2f, 0.75f, 0.2f, 1.0f) : + fofPct > 0.5f ? colors::kCastGreen : fofPct > 0.2f ? ImVec4(0.75f, 0.75f, 0.2f, 1.0f) : ImVec4(0.75f, 0.2f, 0.2f, 1.0f); ImGui::PushStyleColor(ImGuiCol_PlotHistogram, fofBarColor); @@ -13289,7 +13288,7 @@ void GameScreen::renderBossFrames(game::GameHandler& gameHandler) { : ImVec4(1.0f * pulse, 0.1f * pulse, 0.1f * pulse, 1.0f); } else { bcastColor = cs->interruptible - ? ImVec4(0.2f, 0.75f, 0.2f, 1.0f) + ? colors::kCastGreen : ImVec4(0.9f, 0.15f, 0.15f, 1.0f); } ImGui::PushStyleColor(ImGuiCol_PlotHistogram, bcastColor); @@ -16956,7 +16955,7 @@ void GameScreen::renderTrainerWindow(game::GameHandler& gameHandler) { const char* statusLabel; // WotLK trainer states: 0=available, 1=unavailable, 2=known if (effectiveState == 2 || alreadyKnown) { - color = ImVec4(0.3f, 0.9f, 0.3f, 1.0f); + color = colors::kQueueGreen; statusLabel = "Known"; } else if (effectiveState == 0) { color = ui::colors::kWhite; @@ -17018,7 +17017,7 @@ void GameScreen::renderTrainerWindow(game::GameHandler& gameHandler) { if (node == 0) return; bool met = isKnown(node); const std::string& pname = gameHandler.getSpellName(node); - ImVec4 pcolor = met ? ImVec4(0.3f, 0.9f, 0.3f, 1.0f) : kColorRed; + ImVec4 pcolor = met ? colors::kQueueGreen : kColorRed; if (!pname.empty()) ImGui::TextColored(pcolor, "Requires: %s%s", pname.c_str(), met ? " (known)" : ""); else @@ -23607,10 +23606,10 @@ void GameScreen::renderDungeonFinderWindow(game::GameHandler& gameHandler) { int qSec = static_cast((qMs % 60000) / 1000); std::string dName = gameHandler.getCurrentLfgDungeonName(); if (!dName.empty()) - ImGui::TextColored(ImVec4(0.3f, 0.9f, 0.3f, 1.0f), + ImGui::TextColored(colors::kQueueGreen, "Status: In queue for %s (%d:%02d)", dName.c_str(), qMin, qSec); else - ImGui::TextColored(ImVec4(0.3f, 0.9f, 0.3f, 1.0f), "Status: In queue (%d:%02d)", qMin, qSec); + ImGui::TextColored(colors::kQueueGreen, "Status: In queue (%d:%02d)", qMin, qSec); if (avgSec >= 0) { int aMin = avgSec / 60; int aSec = avgSec % 60; diff --git a/src/ui/talent_screen.cpp b/src/ui/talent_screen.cpp index c884c194..752762d7 100644 --- a/src/ui/talent_screen.cpp +++ b/src/ui/talent_screen.cpp @@ -522,8 +522,8 @@ void TalentScreen::renderTalent(game::GameHandler& gameHandler, // Rank display ImVec4 rankColor; switch (state) { - case MAXED: rankColor = ImVec4(0.3f, 0.9f, 0.3f, 1); break; - case PARTIAL: rankColor = ImVec4(0.3f, 0.9f, 0.3f, 1); break; + case MAXED: rankColor = ui::colors::kQueueGreen; break; + case PARTIAL: rankColor = ui::colors::kQueueGreen; break; default: rankColor = ImVec4(0.7f, 0.7f, 0.7f, 1); break; } ImGui::TextColored(rankColor, "Rank %u/%u", currentRank, talent.maxRank); @@ -556,7 +556,7 @@ void TalentScreen::renderTalent(game::GameHandler& gameHandler, uint8_t prereqCurrentRank = gameHandler.getTalentRank(talent.prereqTalent[i]); bool met = prereqCurrentRank > talent.prereqRank[i]; // storage 1-indexed, DBC 0-indexed - ImVec4 pColor = met ? ImVec4(0.3f, 0.9f, 0.3f, 1.0f) : ui::colors::kRed; + ImVec4 pColor = met ? ui::colors::kQueueGreen : ui::colors::kRed; const std::string& prereqName = gameHandler.getSpellName(prereq->rankSpells[0]); ImGui::Spacing();