From 50fe3961e3e27740ddece868f1a1750ba7426db2 Mon Sep 17 00:00:00 2001 From: Wickedness Date: Sat, 20 Jun 2026 10:54:41 +0900 Subject: [PATCH] Compact battle unit list status --- scripts/scenes/battle_scene.gd | 22 +++++++++++++++++++--- tools/smoke_visual_assets.gd | 10 ++++++++-- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/scripts/scenes/battle_scene.gd b/scripts/scenes/battle_scene.gd index 0304e95..f61210f 100644 --- a/scripts/scenes/battle_scene.gd +++ b/scripts/scenes/battle_scene.gd @@ -13033,6 +13033,7 @@ func _rebuild_battle_unit_list_rows() -> void: battle_unit_list_enemy_button.disabled = battle_unit_list_mode == "enemy" if battle_unit_list_status_label != null: battle_unit_list_status_label.text = _format_battle_unit_list_status(units) + battle_unit_list_status_label.tooltip_text = _format_battle_unit_list_status_tooltip(units) if units.is_empty(): var empty_label := Label.new() empty_label.text = "남은 부대 없음" @@ -13062,18 +13063,33 @@ func _battle_unit_list_mode_label() -> String: func _format_battle_unit_list_status(units: Array[Dictionary]) -> String: + return "%d부대" % units.size() + + +func _format_battle_unit_list_status_tooltip(units: Array[Dictionary]) -> String: if battle_unit_list_mode == "enemy": - return "잔적 %d" % units.size() + return "남은 적군 %d부대\n행 위에 마우스를 올리면 병종, 병력, 위치, 적 행동 방침을 봅니다." % units.size() var ready_count := 0 var done_count := 0 + var guard_count := 0 for unit in units: - if not bool(unit.get("alive", true)) or not bool(unit.get("controllable", true)): + if not bool(unit.get("alive", true)): + continue + if not bool(unit.get("controllable", true)): + guard_count += 1 continue if bool(unit.get("acted", false)): done_count += 1 else: ready_count += 1 - return "행동 %d · 완료 %d" % [ready_count, done_count] + var lines := [ + "아군 %d부대" % units.size(), + "명령 가능 %d · 행동 완료 %d" % [ready_count, done_count] + ] + if guard_count > 0: + lines.append("호위 대상 %d" % guard_count) + lines.append("행 위에 마우스를 올리면 병종, 병력, 위치, 장비를 봅니다.") + return _join_strings(lines, "\n") func _make_battle_unit_list_row(unit: Dictionary) -> HBoxContainer: diff --git a/tools/smoke_visual_assets.gd b/tools/smoke_visual_assets.gd index 3c47f85..1507034 100644 --- a/tools/smoke_visual_assets.gd +++ b/tools/smoke_visual_assets.gd @@ -4473,6 +4473,10 @@ func _check_battle_unit_list_panel(failures: Array[String]) -> void: failures.append("battle unit list header should use a compact Korean seal mark") if scene.battle_unit_list_title_label == null or not scene.battle_unit_list_title_label.text.contains("아군"): failures.append("battle unit list should open on the ally tab") + if scene.battle_unit_list_status_label == null or scene.battle_unit_list_status_label.text.contains("행동") or scene.battle_unit_list_status_label.text.contains("완료"): + failures.append("ally battle unit list status should keep action counts in the tooltip: %s" % ("" if scene.battle_unit_list_status_label == null else scene.battle_unit_list_status_label.text)) + elif not scene.battle_unit_list_status_label.tooltip_text.contains("명령 가능") or not scene.battle_unit_list_status_label.tooltip_text.contains("행동 완료"): + failures.append("ally battle unit list status tooltip should retain action counts: %s" % scene.battle_unit_list_status_label.tooltip_text) if scene.battle_unit_list_rows == null or scene.battle_unit_list_rows.get_child_count() < 2: failures.append("ally battle unit list should include deployed officers") elif not _row_texts_contain(scene.battle_unit_list_rows, "조조") or not _row_texts_contain(scene.battle_unit_list_rows, "하후돈"): @@ -4515,8 +4519,10 @@ func _check_battle_unit_list_panel(failures: Array[String]) -> void: scene._on_battle_unit_list_tab_pressed("enemy") if scene.battle_unit_list_title_label == null or not scene.battle_unit_list_title_label.text.contains("적군"): failures.append("battle unit list should switch to the enemy tab") - if scene.battle_unit_list_status_label == null or not scene.battle_unit_list_status_label.text.contains("잔적"): - failures.append("enemy battle unit list should summarize remaining enemies") + if scene.battle_unit_list_status_label == null or scene.battle_unit_list_status_label.text.contains("잔적") or not scene.battle_unit_list_status_label.text.contains("부대"): + failures.append("enemy battle unit list should summarize remaining enemies without old dense wording: %s" % ("" if scene.battle_unit_list_status_label == null else scene.battle_unit_list_status_label.text)) + elif not scene.battle_unit_list_status_label.tooltip_text.contains("남은 적군") or not scene.battle_unit_list_status_label.tooltip_text.contains("행동 방침"): + failures.append("enemy battle unit list status tooltip should retain enemy count detail: %s" % scene.battle_unit_list_status_label.tooltip_text) if scene.battle_unit_list_rows == null or scene.battle_unit_list_rows.get_child_count() < 1: failures.append("enemy battle unit list should show living enemies") elif not _row_texts_contain(scene.battle_unit_list_rows, "장만성"):