From eceb36e04c5e3ea3989cd03e6466267780b92980 Mon Sep 17 00:00:00 2001 From: Wickedness Date: Sat, 20 Jun 2026 00:36:38 +0900 Subject: [PATCH] Polish auto end turn prompt --- README.md | 1 + scripts/scenes/battle_scene.gd | 13 ++++++++----- tools/smoke_post_move_action_flow.gd | 4 ++++ tools/smoke_visual_assets.gd | 7 +++++++ 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 8aa4835..d0be390 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ Godot 4 tactical RPG prototype inspired by classic turn-based Romance of the Thr - Grid movement. - Unit selection. - Move, attack, wait, end turn. +- Automatic end-turn prompt appears after all controllable allies finish acting, using a styled command-complete confirmation. - Enemy AI with movement, damage-aware physical attacks, multiple MP tactic choices, and scenario target priorities that events can retune mid-battle. - Hover tile and unit info with class, movement type, AGI, movement, range, and equipped gear. - Active battle unit list opens from the top toolbar with ally/enemy tabs, portrait or sprite rows, compact HP/status/position badges, and hover combat details. diff --git a/scripts/scenes/battle_scene.gd b/scripts/scenes/battle_scene.gd index d8b1903..50a4796 100644 --- a/scripts/scenes/battle_scene.gd +++ b/scripts/scenes/battle_scene.gd @@ -2251,10 +2251,11 @@ func _create_hud() -> void: auto_end_column.add_theme_constant_override("separation", 8) auto_end_turn_prompt_panel.add_child(auto_end_column) auto_end_column.add_child(_make_seal_ribbon(420, 10)) + auto_end_column.add_child(_make_section_caption("군령 완료", 420)) auto_end_turn_prompt_label = Label.new() auto_end_turn_prompt_label.text = "모든 아군이 군령을 마쳤습니다.\n차례를 넘기시겠습니까?" - auto_end_turn_prompt_label.custom_minimum_size = Vector2(420, 56) + auto_end_turn_prompt_label.custom_minimum_size = Vector2(420, 48) auto_end_turn_prompt_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER auto_end_turn_prompt_label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER auto_end_turn_prompt_label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART @@ -2267,16 +2268,18 @@ func _create_hud() -> void: auto_end_column.add_child(auto_end_button_row) auto_end_turn_yes_button = Button.new() - auto_end_turn_yes_button.text = "예" + auto_end_turn_yes_button.text = "차례 넘김" auto_end_turn_yes_button.tooltip_text = "아군 차례를 마치고 적군 차례로 넘깁니다." - auto_end_turn_yes_button.custom_minimum_size = Vector2(122, 38) + auto_end_turn_yes_button.custom_minimum_size = Vector2(132, 38) + _apply_button_style(auto_end_turn_yes_button, true) auto_end_turn_yes_button.pressed.connect(_on_auto_end_turn_yes_pressed) auto_end_button_row.add_child(auto_end_turn_yes_button) auto_end_turn_no_button = Button.new() - auto_end_turn_no_button.text = "아니오" + auto_end_turn_no_button.text = "머무름" auto_end_turn_no_button.tooltip_text = "이번 차례에는 자동 확인을 닫습니다." - auto_end_turn_no_button.custom_minimum_size = Vector2(122, 38) + auto_end_turn_no_button.custom_minimum_size = Vector2(132, 38) + _apply_button_style(auto_end_turn_no_button) auto_end_turn_no_button.pressed.connect(_on_auto_end_turn_no_pressed) auto_end_button_row.add_child(auto_end_turn_no_button) diff --git a/tools/smoke_post_move_action_flow.gd b/tools/smoke_post_move_action_flow.gd index 02f3a4e..1544669 100644 --- a/tools/smoke_post_move_action_flow.gd +++ b/tools/smoke_post_move_action_flow.gd @@ -98,6 +98,10 @@ func _check_auto_end_turn_prompt_flow(failures: Array[String]) -> void: failures.append("auto end turn prompt should be created with the HUD") scene.free() return + if scene.auto_end_turn_yes_button == null or scene.auto_end_turn_yes_button.text != "차례 넘김": + failures.append("auto end turn confirm button should use contextual Korean text") + if scene.auto_end_turn_no_button == null or scene.auto_end_turn_no_button.text != "머무름": + failures.append("auto end turn decline button should use contextual Korean text") for unit in scene.state.units: if str(unit.get("team", "")) == BattleStateScript.TEAM_PLAYER and bool(unit.get("controllable", true)): diff --git a/tools/smoke_visual_assets.gd b/tools/smoke_visual_assets.gd index 3ce3d03..6e683f9 100644 --- a/tools/smoke_visual_assets.gd +++ b/tools/smoke_visual_assets.gd @@ -3233,6 +3233,7 @@ func _check_ancient_ui_theme(failures: Array[String]) -> void: _check_panel_style_frame(failures, scene.briefing_camp_overview_panel, "briefing silk map panel", Color(0.12, 0.060, 0.026, 0.98), 7) _check_panel_style_fill(failures, scene.dialogue_panel, "dialogue panel", Color(0.055, 0.028, 0.016, 0.982)) _check_panel_style_frame(failures, scene.dialogue_panel, "dialogue panel", Color(0.30, 0.18, 0.075, 1.0), 12) + _check_panel_style_fill(failures, scene.auto_end_turn_prompt_panel, "auto end turn prompt panel", Color(0.055, 0.025, 0.014, 0.988)) _check_panel_style_fill(failures, scene.dialogue_portrait_panel, "dialogue portrait panel", Color(0.035, 0.014, 0.008, 1.0)) _check_panel_style_fill(failures, scene.dialogue_speaker_panel, "dialogue speaker seal panel", Color(0.36, 0.025, 0.016, 0.995)) _check_panel_style_fill(failures, scene.dialogue_text_panel, "dialogue text scroll panel", Color(0.61, 0.47, 0.26, 0.996)) @@ -3276,6 +3277,12 @@ func _check_ancient_ui_theme(failures: Array[String]) -> void: failures.append("dialogue continue button should use Korean text") if scene.dialogue_previous_button == null or scene.dialogue_previous_button.text != "이전": failures.append("dialogue previous button should use Korean text") + if scene.auto_end_turn_prompt_label == null or not _collect_child_text(scene.auto_end_turn_prompt_panel).contains("군령 완료"): + failures.append("auto end turn prompt should show an old command-complete caption") + if scene.auto_end_turn_yes_button == null or scene.auto_end_turn_yes_button.text != "차례 넘김": + failures.append("auto end turn confirm button should use command wording") + if scene.auto_end_turn_no_button == null or scene.auto_end_turn_no_button.text != "머무름": + failures.append("auto end turn decline button should use command wording") var localized_lines := scene._normalized_dialogue_lines([{"speaker": "Cao Cao", "display_speaker": "조조", "text": "군령을 전하라."}]) if localized_lines.is_empty() or str((localized_lines[0] as Dictionary).get("speaker", "")) != "조조": failures.append("dialogue normalization should preserve display_speaker for localized names")