From 323d399f0ad6f4ac110bdfb396cff8b4e04124e6 Mon Sep 17 00:00:00 2001 From: Wickedness Date: Sat, 20 Jun 2026 13:31:07 +0900 Subject: [PATCH] Prioritize tactical preview detail text --- scripts/scenes/battle_scene.gd | 34 ++++++++++++++++++++++++++++--- tools/smoke_directional_combat.gd | 9 ++++++++ 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/scripts/scenes/battle_scene.gd b/scripts/scenes/battle_scene.gd index cea91fb..a0d7785 100644 --- a/scripts/scenes/battle_scene.gd +++ b/scripts/scenes/battle_scene.gd @@ -8136,10 +8136,38 @@ func _draw_target_preview_detail_badge(cell: Vector2i, tooltip: String, color: C func _target_preview_detail_badge_text(tooltip: String) -> String: - var normalized := tooltip.strip_edges().replace("\n", " · ") - if normalized.is_empty(): + var lines := _target_preview_detail_badge_lines(tooltip) + if lines.is_empty(): return "" - return _truncate_hud_text(normalized, 34) + return _truncate_hud_text(lines[0], 34) + + +func _target_preview_detail_badge_lines(tooltip: String) -> Array[String]: + var lines: Array[String] = [] + for raw_line in tooltip.split("\n"): + var line := str(raw_line).strip_edges() + if line.is_empty(): + continue + lines.append(line) + if lines.is_empty(): + return [] + var priority_line := _target_preview_priority_detail_line(lines) + if not priority_line.is_empty(): + return [priority_line] + return [_join_strings(lines, " · ")] + + +func _target_preview_priority_detail_line(lines: Array[String]) -> String: + for line in lines: + if line.contains("후방 공격") or line.contains("측면 공격"): + return line + for line in lines: + if line.contains("현재 적 공격권") or line.contains("초병 반응권") or line.contains("거점 경계권"): + return line + for line in lines: + if line.contains("반격"): + return line + return "" func _target_preview_detail_badge_size(text: String) -> Vector2: diff --git a/tools/smoke_directional_combat.gd b/tools/smoke_directional_combat.gd index 717dea6..481d90a 100644 --- a/tools/smoke_directional_combat.gd +++ b/tools/smoke_directional_combat.gd @@ -197,6 +197,9 @@ func _check_scene_directional_attack_badges(failures: Array[String]) -> void: failures.append("rear attack hover badge should expose compact rear bonus: %s" % str(badge)) if not str(badge.get("tooltip", "")).contains("후방 공격 +%d 피해" % BattleStateScript.DIRECTIONAL_BACK_DAMAGE_BONUS): failures.append("rear attack hover badge should explain rear damage in tooltip: %s" % str(badge)) + var rear_detail_text := scene._target_preview_detail_badge_text(str(badge.get("tooltip", ""))) + if not rear_detail_text.contains("후방 공격 +%d 피해" % BattleStateScript.DIRECTIONAL_BACK_DAMAGE_BONUS): + failures.append("rear attack detail strip should prioritize rear damage: %s" % rear_detail_text) var marker_text := "" var marker_tooltip := "" for marker in scene._attack_target_marker_entries(): @@ -216,6 +219,9 @@ func _check_scene_directional_attack_badges(failures: Array[String]) -> void: failures.append("side attack hover badge should expose compact side bonus: %s" % str(side_badge)) if not str(side_badge.get("tooltip", "")).contains("측면 공격 +%d 피해" % BattleStateScript.DIRECTIONAL_SIDE_DAMAGE_BONUS): failures.append("side attack hover badge should explain side damage in tooltip: %s" % str(side_badge)) + var side_detail_text := scene._target_preview_detail_badge_text(str(side_badge.get("tooltip", ""))) + if not side_detail_text.contains("측면 공격 +%d 피해" % BattleStateScript.DIRECTIONAL_SIDE_DAMAGE_BONUS): + failures.append("side attack detail strip should prioritize side damage: %s" % side_detail_text) attacker["pos"] = Vector2i(2, 9) attacker["facing_x"] = -1 @@ -230,6 +236,9 @@ func _check_scene_directional_attack_badges(failures: Array[String]) -> void: failures.append("auto-move attack hover badge should expose compact rear bonus: %s" % str(auto_badge)) if not str(auto_badge.get("tooltip", "")).contains("후방 공격 +%d 피해" % BattleStateScript.DIRECTIONAL_BACK_DAMAGE_BONUS): failures.append("auto-move attack hover badge should explain rear damage in tooltip: %s" % str(auto_badge)) + var auto_detail_text := scene._target_preview_detail_badge_text(str(auto_badge.get("tooltip", ""))) + if not auto_detail_text.contains("후방 공격 +%d 피해" % BattleStateScript.DIRECTIONAL_BACK_DAMAGE_BONUS): + failures.append("auto-move attack detail strip should prioritize rear damage: %s" % auto_detail_text) if scene._compact_directional_badge_label(BattleStateScript.DIRECTIONAL_SIDE_ATTACK) != "측": failures.append("directional badge helper should compact side attacks")