Skip to content

[UI/UX] Improve Combat Clarity — Buffs, Enemy Intents & Ability Readability#608

Merged
niyazmft merged 1 commit into
mainfrom
feat/buffs-enemy-intents-readability
Jul 13, 2026
Merged

[UI/UX] Improve Combat Clarity — Buffs, Enemy Intents & Ability Readability#608
niyazmft merged 1 commit into
mainfrom
feat/buffs-enemy-intents-readability

Conversation

@niyazmft

Copy link
Copy Markdown
Owner

Summary

Adds three UI clarity improvements to reduce visual noise and make critical combat information immediately parseable.

Problem

Players missed buffs, misread enemy behaviors, and couldn't distinguish action buttons quickly. The #4 community complaint was poor UI readability.

Changes

New: EnemyIntentPanel

  • scripts/ui/enemy_intent_panel.gd: Top-of-screen panel showing each enemy's planned action
  • When it shows: At the start of the player turn; hidden during enemy turn
  • Color coding:
    • 🔴 Red: Attack (targeted)
    • 🟠 Orange: AoE attack (mage)
    • 🔵 Blue: Move (shows destination tile)
    • ⚪ Gray: Wait / Stunned
  • Sorting: By threat level using actual damage calculation — lethal attacks shown first
  • Display: Enemy name + action abbreviation on a colored card

EntityStatusBar badges

  • Status badges now appear above the HP bar for all entities
  • Badges shown:
    • STN — Stunned (purple)
    • DYING — Dying state (crimson)
    • Elite prefix — e.g. ELT (gold) for elite enemies
  • update_badges(entity) called every turn start

BottomConsole color coding

  • Move button: Blue accent + tooltip "Move (WASD / Arrows)"
  • Attack button: Red-orange accent + tooltip "Attack (Click target)"
  • End Turn button: Gold accent + tooltip "End Turn (Space)"

CombatRoom integration

  • EnemyIntentPanel added as child of UIOverlay during _setup_hud()
  • _on_turn_started() refreshes panel on player turn, clears on enemy turn
  • _update_status_badges() called every turn to refresh all entity badges

Behavior

Situation UI shows
Player turn starts, 3 enemies present Intent panel shows 3 colored cards with planned actions
Enemy is stunned Gray "STN" card instead of attack/move
Elite enemy present Gold ELT badge above its HP bar
Player hovers move button Blue text + tooltip with keybind

Technical Notes

  • EnemyIntentPanel uses existing EnemyAIController.decide_action() — deterministic and matches actual execution
  • Threat calculation uses CombatFormula.compute_damage_from_entities() with real cover data
  • Panel uses mouse_filter = IGNORE so it never blocks grid clicks
  • Badges are programmatically-built PanelContainers (no new .tscn files)

Testing

  • 403 tests | 0 errors | 0 failures | 75/75 suites
  • Headless editor scan: clean

Related Issues

Closes #601

…tion bar colors

## Summary

Adds three UI clarity improvements to reduce visual noise and make
critical combat information immediately parseable.

## Changes

### New: EnemyIntentPanel
- scripts/ui/enemy_intent_panel.gd: Top-of-screen panel showing each
  enemy's planned action for the upcoming enemy turn
- Refreshes at start of player turn; hidden during enemy turn
- Color-coded cards: red (attack), orange (AoE), blue (move), gray (wait)
- Sorted by threat level (lethal attacks first) using actual damage calc
- Shows enemy name + action label

### EntityStatusBar badges
- Added _badge_container with status effect badges above HP bar
- Shows STN (stunned), DYING, and elite prefix badges
- Color-coded: purple (stunned), crimson (dying), gold (elite)
- update_badges() called on each turn start

### BottomConsole color coding
- Move button: blue accent + tooltip
- Attack button: red-orange accent + tooltip
- End Turn button: gold accent + tooltip

### CombatRoom integration
- EnemyIntentPanel instantiated in UIOverlay during _setup_hud()
- _on_turn_started() refreshes intent panel on player turn, clears on enemy turn
- _update_status_badges() refreshes all entity status badges each turn

### Tests
- test_enemy_intent_panel.gd: 3 cases for instantiate, empty refresh, clear

## Testing

- 403 tests | 0 errors | 0 failures | 75/75 suites
- Headless editor scan: clean

Closes #601
@niyazmft
niyazmft merged commit 53deb8b into main Jul 13, 2026
5 checks passed
@niyazmft
niyazmft deleted the feat/buffs-enemy-intents-readability branch July 13, 2026 15:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[UI/UX] Improve Information Clarity — Buffs, Enemy Intents & Ability Readability (UI-INFO-1)

1 participant