From e81ed3d91b87704eb2a6c447257804dee4fc1998 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Sat, 21 Feb 2026 02:52:05 -0800 Subject: [PATCH] Hide target selection circle for gameobjects - gate selection-circle rendering to UNIT and PLAYER targets only - clear selection circle for non-unit target types (including gameobjects) - keep target position updates unchanged for facing/interaction logic --- src/ui/game_screen.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/ui/game_screen.cpp b/src/ui/game_screen.cpp index b76ae63b..843decdb 100644 --- a/src/ui/game_screen.cpp +++ b/src/ui/game_screen.cpp @@ -415,6 +415,7 @@ void GameScreen::render(game::GameHandler& gameHandler) { renderer->setTargetPosition(&targetGLPos); // Selection circle color: WoW-canonical level-based colors + bool showSelectionCircle = false; glm::vec3 circleColor(1.0f, 1.0f, 0.3f); // default yellow float circleRadius = 1.5f; { @@ -426,6 +427,7 @@ void GameScreen::render(game::GameHandler& gameHandler) { } } if (target->getType() == game::ObjectType::UNIT) { + showSelectionCircle = true; auto unit = std::static_pointer_cast(target); if (unit->getHealth() == 0 && unit->getMaxHealth() > 0) { circleColor = glm::vec3(0.5f, 0.5f, 0.5f); // gray (dead) @@ -448,9 +450,14 @@ void GameScreen::render(game::GameHandler& gameHandler) { circleColor = glm::vec3(0.3f, 1.0f, 0.3f); // green (friendly) } } else if (target->getType() == game::ObjectType::PLAYER) { + showSelectionCircle = true; circleColor = glm::vec3(0.3f, 1.0f, 0.3f); // green (player) } - renderer->setSelectionCircle(targetGLPos, circleRadius, circleColor); + if (showSelectionCircle) { + renderer->setSelectionCircle(targetGLPos, circleRadius, circleColor); + } else { + renderer->clearSelectionCircle(); + } } else { renderer->setTargetPosition(nullptr); renderer->clearSelectionCircle();