From 0ad84887472ae061b1daa892ed106c8a84c5f3ff Mon Sep 17 00:00:00 2001 From: Wickedness Date: Sun, 21 Jun 2026 06:35:59 +0900 Subject: [PATCH] Add return control for unit inspection --- scripts/scenes/battle_scene.gd | 36 ++++++++++++++++++++++++++++++++++ tools/smoke_visual_assets.gd | 16 +++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/scripts/scenes/battle_scene.gd b/scripts/scenes/battle_scene.gd index d68ff9f..a15e2bf 100644 --- a/scripts/scenes/battle_scene.gd +++ b/scripts/scenes/battle_scene.gd @@ -606,6 +606,7 @@ var auto_end_turn_no_button: Button var auto_end_turn_prompt_declined_turn := -1 var end_turn_button: Button var hud_command_grid: GridContainer +var side_inspection_back_button: Button var wait_button: Button var tactic_button: Button var tactic_menu: VBoxContainer @@ -3956,6 +3957,18 @@ func _create_hud() -> void: hud_unit_badge_row.add_theme_constant_override("separation", 3) hud_unit_info_column.add_child(hud_unit_badge_row) + side_inspection_back_button = Button.new() + side_inspection_back_button.name = "SideInspectionBackButton" + side_inspection_back_button.text = "목록으로" + side_inspection_back_button.custom_minimum_size = Vector2(HUD_UNIT_SUMMARY_SIZE.x, 28) + side_inspection_back_button.size_flags_horizontal = Control.SIZE_EXPAND_FILL + side_inspection_back_button.tooltip_text = "정찰 상세를 닫고 아군/적군 일람으로 돌아갑니다." + side_inspection_back_button.visible = false + side_inspection_back_button.set_meta("flat_readable_button", true) + _apply_button_style(side_inspection_back_button) + side_inspection_back_button.pressed.connect(_on_side_inspection_back_pressed) + hud_unit_info_column.add_child(side_inspection_back_button) + var hp_row := _make_hud_unit_resource_row("병력", Color(0.66, 0.12, 0.075, 1.0), "status") hud_unit_hp_bar = hp_row["bar"] as ProgressBar hud_unit_info_column.add_child(hp_row["row"] as Control) @@ -5571,6 +5584,7 @@ func _create_hud() -> void: post_move_picker_cancel_move_button, targeting_hint_back_button, targeting_hint_cancel_move_button, + side_inspection_back_button, chapter_button, shop_button, talk_button, @@ -10585,6 +10599,7 @@ func _update_hud() -> void: _update_hud_command_grid_visibility(selected) if selected.is_empty(): if show_unit_overview: + _update_side_inspection_back_button({}) _rebuild_side_unit_overview_rows() _update_hud_unit_portrait({}) selected_label.text = "군세 일람" @@ -10593,6 +10608,7 @@ func _update_hud() -> void: _update_hud_unit_resource_bars({}, selected_label.tooltip_text) else: var inspected_unit := _side_inspected_unit() + _update_side_inspection_back_button(inspected_unit) var focus_unit := inspected_unit if not inspected_unit.is_empty() else _hovered_unit_for_hud_portrait() _update_hud_unit_portrait(focus_unit) if focus_unit.is_empty(): @@ -10615,6 +10631,7 @@ func _update_hud() -> void: _update_equip_button({}) _hide_equip_menu() else: + _update_side_inspection_back_button({}) _clear_side_unit_overview_rows() _update_hud_unit_portrait(selected) var selected_detail := _format_unit_focus_text(selected, "Selected") @@ -10778,6 +10795,25 @@ func _clear_side_inspected_unit(play_sound := true) -> void: queue_redraw() +func _update_side_inspection_back_button(inspected_unit: Dictionary) -> void: + if side_inspection_back_button == null: + return + var visible := not inspected_unit.is_empty() + side_inspection_back_button.visible = visible + side_inspection_back_button.disabled = not visible + if visible: + side_inspection_back_button.tooltip_text = "%s 정찰 상세를 닫고 %s 일람으로 돌아갑니다." % [ + str(inspected_unit.get("name", "부대")), + "적군" if str(inspected_unit.get("team", "")) == BattleState.TEAM_ENEMY else "아군" + ] + else: + side_inspection_back_button.tooltip_text = "정찰 상세를 닫고 아군/적군 일람으로 돌아갑니다." + + +func _on_side_inspection_back_pressed() -> void: + _clear_side_inspected_unit() + + func _make_side_unit_overview_row(unit: Dictionary) -> HBoxContainer: var unit_id := str(unit.get("id", "")) var tooltip_text := _format_battle_unit_list_row_tooltip(unit) diff --git a/tools/smoke_visual_assets.gd b/tools/smoke_visual_assets.gd index ca5b853..f7910c3 100644 --- a/tools/smoke_visual_assets.gd +++ b/tools/smoke_visual_assets.gd @@ -3637,6 +3637,22 @@ func _check_hud_focus_text(failures: Array[String]) -> void: failures.append("enemy inspection should not expose player command buttons") if not scene._hover_info_badge().is_empty(): failures.append("enemy inspection should keep duplicate map hover badges hidden") + if scene.side_inspection_back_button == null: + failures.append("enemy inspection should expose a readable return-to-list button") + elif not scene.side_inspection_back_button.visible or scene.side_inspection_back_button.text != "목록으로": + failures.append("enemy inspection return button should be visible and clearly labeled: %s" % ("" if scene.side_inspection_back_button == null else scene.side_inspection_back_button.text)) + elif not scene.side_inspection_back_button.tooltip_text.contains("일람") or not scene.side_inspection_back_button.tooltip_text.contains("장만성"): + failures.append("enemy inspection return button should explain the inspected unit and list return: %s" % scene.side_inspection_back_button.tooltip_text) + scene._on_side_inspection_back_pressed() + if scene.side_inspected_unit_id != "": + failures.append("return button should close enemy inspection: %s" % scene.side_inspected_unit_id) + if scene.side_unit_overview_panel == null or not scene.side_unit_overview_panel.visible: + failures.append("return button should restore the overview list") + if scene.side_unit_overview_enemy_button == null or not scene.side_unit_overview_enemy_button.button_pressed: + failures.append("return button should preserve the enemy overview tab") + if scene.side_inspection_back_button != null and scene.side_inspection_back_button.visible: + failures.append("return button should hide again after returning to the overview") + scene._on_side_unit_overview_row_pressed("yellow_turban_1") scene._handle_cancel_input() if scene.side_inspected_unit_id != "": failures.append("cancel should close enemy inspection: %s" % scene.side_inspected_unit_id)