From d55fd7edbcf8d6fb5491e54b9446daa5f4f55fad Mon Sep 17 00:00:00 2001 From: Wickedness Date: Sat, 20 Jun 2026 21:03:24 +0900 Subject: [PATCH] Clarify post move command text --- scripts/scenes/battle_scene.gd | 96 ++++++++++++++-------------- tools/smoke_post_move_action_flow.gd | 38 +++++------ tools/smoke_visual_assets.gd | 26 ++++---- 3 files changed, 82 insertions(+), 78 deletions(-) diff --git a/scripts/scenes/battle_scene.gd b/scripts/scenes/battle_scene.gd index ba13d98..23646b4 100644 --- a/scripts/scenes/battle_scene.gd +++ b/scripts/scenes/battle_scene.gd @@ -3950,7 +3950,7 @@ func _create_hud() -> void: side_column.add_child(tactic_menu) var tactic_title := Label.new() - tactic_title.text = "책략첩" + tactic_title.text = "책략 목록" _apply_label_style(tactic_title, UI_OLD_BRONZE, 14) tactic_menu.add_child(tactic_title) @@ -3964,7 +3964,7 @@ func _create_hud() -> void: side_column.add_child(item_menu) var item_title := Label.new() - item_title.text = "보급첩" + item_title.text = "도구 목록" _apply_label_style(item_title, UI_OLD_BRONZE, 14) item_menu.add_child(item_title) @@ -3999,7 +3999,7 @@ func _create_hud() -> void: post_move_menu.add_child(post_move_column) post_move_column.add_child(_make_seal_ribbon(196, 10)) - post_move_column.add_child(_make_local_command_header("move", "군령 선택", "이동 후 수행할 군령을 고릅니다.")) + post_move_column.add_child(_make_local_command_header("move", "행동 선택", "이동 후 수행할 행동을 고릅니다.")) var post_move_grid := GridContainer.new() post_move_grid.columns = 2 @@ -4011,10 +4011,10 @@ func _create_hud() -> void: _configure_local_command_button( post_move_attack_button, "attack", - "타격령", - "적 표식 지목", + "공격", + "적 선택", LOCAL_COMMAND_BUTTON_SIZE, - "공격 가능한 적에게 붉은 표식이 뜹니다. 표식을 눌러 이동과 타격을 한 군령으로 끝냅니다." + "공격 가능한 적에게 붉은 표식이 뜹니다. 표식을 누르면 이동과 공격을 한 번에 끝냅니다." ) post_move_attack_button.pressed.connect(_on_post_move_attack_pressed) post_move_grid.add_child(post_move_attack_button) @@ -4023,10 +4023,10 @@ func _create_hud() -> void: _configure_local_command_button( post_move_tactic_button, "tactic", - "책략첩", - "죽간 펼침", + "책략", + "책략 선택", LOCAL_COMMAND_BUTTON_SIZE, - "책략 죽간을 펼친 뒤 빛나는 표식 칸을 지목합니다." + "쓸 책략을 고른 뒤 빛나는 표식 칸을 지목합니다." ) post_move_tactic_button.pressed.connect(_on_post_move_tactic_pressed) post_move_grid.add_child(post_move_tactic_button) @@ -4035,10 +4035,10 @@ func _create_hud() -> void: _configure_local_command_button( post_move_item_button, "item", - "보급첩", - "보급 지목", + "도구", + "도구 선택", LOCAL_COMMAND_BUTTON_SIZE, - "보급첩을 펼친 뒤 회복이나 도구를 받을 부대를 지목합니다." + "쓸 도구를 고른 뒤 회복이나 효과를 받을 부대를 지목합니다." ) post_move_item_button.pressed.connect(_on_post_move_item_pressed) post_move_grid.add_child(post_move_item_button) @@ -4047,10 +4047,10 @@ func _create_hud() -> void: _configure_local_command_button( post_move_wait_button, "wait", - "대기령", - "그 자리 대기", + "대기", + "행동 종료", LOCAL_COMMAND_BUTTON_SIZE, - "이동한 자리에서 군령을 마치고 다음 부대를 기다립니다." + "이동한 자리에서 이 부대의 행동을 마칩니다." ) post_move_wait_button.pressed.connect(_on_post_move_wait_pressed) post_move_grid.add_child(post_move_wait_button) @@ -4059,10 +4059,10 @@ func _create_hud() -> void: _configure_local_command_button( post_move_cancel_button, "cancel", - "발걸음 거두기", "이동 취소", + "원위치", LOCAL_COMMAND_CANCEL_BUTTON_SIZE, - "방금 이동을 거두고 원래 자리에서 다시 군령을 고릅니다." + "방금 이동을 취소하고 원래 자리에서 다시 행동을 고릅니다." ) post_move_cancel_button.pressed.connect(_on_post_move_cancel_pressed) post_move_column.add_child(post_move_cancel_button) @@ -4081,7 +4081,7 @@ func _create_hud() -> void: picker_column.add_child(_make_seal_ribbon(296, 10)) post_move_picker_title_label = Label.new() - post_move_picker_title_label.text = "군령 선택" + post_move_picker_title_label.text = "행동 선택" post_move_picker_title_label.custom_minimum_size = POST_MOVE_PICKER_TITLE_SIZE post_move_picker_title_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER _apply_label_style(post_move_picker_title_label, UI_OLD_BRONZE, LOCAL_COMMAND_TITLE_FONT_SIZE) @@ -4108,13 +4108,13 @@ func _create_hud() -> void: picker_column.add_child(picker_button_row) post_move_picker_back_button = Button.new() - post_move_picker_back_button.text = "죽간 거두기" + post_move_picker_back_button.text = "목록 닫기" _suppress_local_command_tooltip(post_move_picker_back_button) post_move_picker_back_button.pressed.connect(_on_post_move_picker_back_pressed) picker_button_row.add_child(post_move_picker_back_button) post_move_picker_cancel_move_button = Button.new() - post_move_picker_cancel_move_button.text = "발걸음 거두기" + post_move_picker_cancel_move_button.text = "이동 취소" _suppress_local_command_tooltip(post_move_picker_cancel_move_button) post_move_picker_cancel_move_button.pressed.connect(_on_post_move_picker_cancel_move_pressed) picker_button_row.add_child(post_move_picker_cancel_move_button) @@ -4150,13 +4150,13 @@ func _create_hud() -> void: targeting_column.add_child(targeting_button_row) targeting_hint_back_button = Button.new() - targeting_hint_back_button.text = "죽간 거두기" + targeting_hint_back_button.text = "선택 취소" _suppress_local_command_tooltip(targeting_hint_back_button) targeting_hint_back_button.pressed.connect(_on_targeting_back_pressed) targeting_button_row.add_child(targeting_hint_back_button) targeting_hint_cancel_move_button = Button.new() - targeting_hint_cancel_move_button.text = "발걸음 거두기" + targeting_hint_cancel_move_button.text = "이동 취소" _suppress_local_command_tooltip(targeting_hint_cancel_move_button) targeting_hint_cancel_move_button.pressed.connect(_on_targeting_cancel_move_pressed) targeting_button_row.add_child(targeting_hint_cancel_move_button) @@ -17744,49 +17744,49 @@ func _update_post_move_menu() -> void: var attack_blocked := not _has_basic_attack_target(pending_move_unit_id) _set_local_command_button_state( post_move_attack_button, - "타격령", - "적 표식 지목", + "공격", + "적 선택", attack_blocked, - "타격 없음", - "공격 가능한 적에게 붉은 표식이 뜹니다. 표식을 눌러 이동과 타격을 한 군령으로 끝냅니다." + "공격 없음", + "공격 가능한 적에게 붉은 표식이 뜹니다. 표식을 누르면 이동과 공격을 한 번에 끝냅니다." ) if post_move_tactic_button != null: var skill_blocked := not _unit_has_usable_skill_target(pending_move_unit_id) _set_local_command_button_state( post_move_tactic_button, - "책략첩", - "죽간 펼침", + "책략", + "책략 선택", skill_blocked, "책략 없음", - "책략 죽간을 펼친 뒤 빛나는 표식 칸을 지목합니다." + "쓸 책략을 고른 뒤 빛나는 표식 칸을 지목합니다." ) if post_move_item_button != null: var item_blocked := not _unit_has_usable_item_target(pending_move_unit_id) _set_local_command_button_state( post_move_item_button, - "보급첩", - "보급 지목", + "도구", + "도구 선택", item_blocked, - "보급 없음", - "보급첩을 펼친 뒤 회복이나 도구를 받을 부대를 지목합니다." + "도구 없음", + "쓸 도구를 고른 뒤 회복이나 효과를 받을 부대를 지목합니다." ) if post_move_wait_button != null: _set_local_command_button_state( post_move_wait_button, - "대기령", - "그 자리 대기", + "대기", + "행동 종료", false, "", - "이동한 자리에서 군령을 마치고 다음 부대를 기다립니다." + "이동한 자리에서 이 부대의 행동을 마칩니다." ) if post_move_cancel_button != null: _set_local_command_button_state( post_move_cancel_button, - "발걸음 거두기", "이동 취소", + "원위치", false, "", - "방금 이동을 거두고 원래 자리에서 다시 군령을 고릅니다." + "방금 이동을 취소하고 원래 자리에서 다시 행동을 고릅니다." ) @@ -17825,7 +17825,7 @@ func _refresh_post_move_title(selected: Dictionary = {}) -> void: var unit_name := str(focus.get("name", "부대")) if not focus.is_empty() else "부대" _set_fitted_label_text( post_move_title_label, - "%s: 군령 선택" % unit_name, + "%s: 행동 선택" % unit_name, LOCAL_COMMAND_TITLE_FONT_SIZE, LOCAL_COMMAND_TITLE_MIN_FONT_SIZE, POST_MOVE_TITLE_SIZE @@ -17999,18 +17999,18 @@ func _position_post_move_picker() -> void: func _post_move_picker_title_text(selected: Dictionary) -> String: var unit_name := str(selected.get("name", "부대")) if post_move_picker_mode == "tactic": - return "%s: 책략 죽간" % unit_name + return "%s: 책략 선택" % unit_name if post_move_picker_mode == "item": - return "%s: 보급 물자" % unit_name - return "%s: 군령 죽간" % unit_name + return "%s: 도구 선택" % unit_name + return "%s: 행동 선택" % unit_name func _post_move_picker_detail_text() -> String: if post_move_picker_mode == "tactic": return "책략을 고른 뒤 빛나는 표식 칸을 지목합니다." if post_move_picker_mode == "item": - return "보급을 고른 뒤 표식이 뜬 아군을 지목합니다." - return "군령에 올릴 죽간을 고릅니다." + return "도구를 고른 뒤 표식이 뜬 아군을 지목합니다." + return "이동 후 이어갈 행동을 고릅니다." func _rebuild_post_move_tactic_picker(selected: Dictionary) -> void: @@ -18034,7 +18034,7 @@ func _rebuild_post_move_item_picker(selected: Dictionary) -> void: var item_ids := state.get_usable_item_ids() if item_ids.is_empty(): var empty_label := Label.new() - empty_label.text = "쓸 보급이 없습니다" + empty_label.text = "쓸 도구가 없습니다" _apply_label_style(empty_label, UI_PARCHMENT_TEXT) post_move_picker_list.add_child(empty_label) return @@ -18566,7 +18566,7 @@ func _rebuild_tactic_menu(selected: Dictionary) -> void: tactic_list.add_child(skill_button) var cancel_button := Button.new() - cancel_button.text = "죽간 거두기" + cancel_button.text = "목록 닫기" _apply_button_style(cancel_button) cancel_button.pressed.connect(_on_tactic_cancel_pressed) tactic_list.add_child(cancel_button) @@ -18797,7 +18797,7 @@ func _rebuild_item_menu(selected: Dictionary) -> void: item_list.add_child(use_button) var cancel_button := Button.new() - cancel_button.text = "죽간 거두기" + cancel_button.text = "목록 닫기" _apply_button_style(cancel_button) cancel_button.pressed.connect(_on_item_cancel_pressed) item_list.add_child(cancel_button) @@ -18951,7 +18951,7 @@ func _rebuild_equip_menu(selected: Dictionary) -> void: equip_list.add_child(equip_item_button) var cancel_button := Button.new() - cancel_button.text = "죽간 거두기" + cancel_button.text = "목록 닫기" _apply_button_style(cancel_button) cancel_button.pressed.connect(_on_equip_cancel_pressed) equip_list.add_child(cancel_button) diff --git a/tools/smoke_post_move_action_flow.gd b/tools/smoke_post_move_action_flow.gd index f29fde2..c0d51f6 100644 --- a/tools/smoke_post_move_action_flow.gd +++ b/tools/smoke_post_move_action_flow.gd @@ -506,11 +506,11 @@ func _check_scene_post_move_blocked_command_labels(failures: Array[String]) -> v if scene.post_move_menu == null or not scene.post_move_menu.visible: failures.append("blocked command label setup should show the post-move menu") else: - if scene.post_move_attack_button == null or not scene.post_move_attack_button.disabled or scene.post_move_attack_button.text != "" or str(scene.post_move_attack_button.get_meta("disabled_hint", "")) != "타격 없음": + if scene.post_move_attack_button == null or not scene.post_move_attack_button.disabled or scene.post_move_attack_button.text != "" or str(scene.post_move_attack_button.get_meta("disabled_hint", "")) != "공격 없음": failures.append("blocked attack command should explain itself through local hover metadata") if scene.post_move_tactic_button == null or not scene.post_move_tactic_button.disabled or scene.post_move_tactic_button.text != "" or str(scene.post_move_tactic_button.get_meta("disabled_hint", "")) != "책략 없음": failures.append("blocked tactic command should explain itself through local hover metadata") - if scene.post_move_item_button == null or not scene.post_move_item_button.disabled or scene.post_move_item_button.text != "" or str(scene.post_move_item_button.get_meta("disabled_hint", "")) != "보급 없음": + if scene.post_move_item_button == null or not scene.post_move_item_button.disabled or scene.post_move_item_button.text != "" or str(scene.post_move_item_button.get_meta("disabled_hint", "")) != "도구 없음": failures.append("blocked item command should explain itself through local hover metadata") _check_local_command_button_tooltips_present(failures, [ scene.post_move_attack_button, @@ -518,7 +518,7 @@ func _check_scene_post_move_blocked_command_labels(failures: Array[String]) -> v scene.post_move_item_button ], "blocked post-move commands") scene._on_local_command_button_mouse_entered(scene.post_move_attack_button) - if scene.post_move_title_label == null or not scene.post_move_title_label.text.contains("타격 없음"): + if scene.post_move_title_label == null or not scene.post_move_title_label.text.contains("공격 없음"): failures.append("blocked attack hover should surface disabled reason in the local title plate: %s" % scene.post_move_title_label.text) scene._on_local_command_button_mouse_exited() @@ -567,10 +567,10 @@ func _check_scene_post_move_attack_targeting(failures: Array[String]) -> void: scene._handle_board_click(_screen_for_cell(Vector2i(2, 3))) if not scene._has_pending_move() or scene.post_move_menu == null or not scene.post_move_menu.visible: failures.append("attack targeting setup should leave the post-move menu visible") - if scene.post_move_attack_button == null or scene.post_move_attack_button.disabled or scene.post_move_attack_button.text != "" or str(scene.post_move_attack_button.get_meta("command_label", "")) != "타격령": + if scene.post_move_attack_button == null or scene.post_move_attack_button.disabled or scene.post_move_attack_button.text != "" or str(scene.post_move_attack_button.get_meta("command_label", "")) != "공격": failures.append("available attack command should stay icon-first and enabled") scene._on_local_command_button_mouse_entered(scene.post_move_attack_button) - if scene.post_move_title_label == null or not scene.post_move_title_label.text.contains("타격령"): + if scene.post_move_title_label == null or not scene.post_move_title_label.text.contains("공격"): failures.append("available attack hover should explain the icon in the local title plate") scene._on_local_command_button_mouse_exited() if scene.basic_attack_targeting: @@ -1145,33 +1145,33 @@ func _check_post_move_command_guidance(failures: Array[String], scene) -> void: var expectations := [ { "button": scene.post_move_attack_button, - "label": "타격령", - "hint": "적 표식 지목", - "detail": "이동과 타격을 한 군령" + "label": "공격", + "hint": "적 선택", + "detail": "이동과 공격을 한 번" }, { "button": scene.post_move_tactic_button, - "label": "책략첩", - "hint": "죽간 펼침", + "label": "책략", + "hint": "책략 선택", "detail": "빛나는 표식 칸" }, { "button": scene.post_move_item_button, - "label": "보급첩", - "hint": "보급 지목", - "detail": "회복이나 도구를 받을 부대" + "label": "도구", + "hint": "도구 선택", + "detail": "회복이나 효과를 받을 부대" }, { "button": scene.post_move_wait_button, - "label": "대기령", - "hint": "그 자리 대기", - "detail": "군령을 마치고" + "label": "대기", + "hint": "행동 종료", + "detail": "행동을 마칩니다" }, { "button": scene.post_move_cancel_button, - "label": "발걸음 거두기", - "hint": "이동 취소", - "detail": "원래 자리에서 다시 군령" + "label": "이동 취소", + "hint": "원위치", + "detail": "원래 자리에서 다시 행동" } ] for expectation in expectations: diff --git a/tools/smoke_visual_assets.gd b/tools/smoke_visual_assets.gd index 2abebb2..f591fe8 100644 --- a/tools/smoke_visual_assets.gd +++ b/tools/smoke_visual_assets.gd @@ -4042,8 +4042,8 @@ func _check_ancient_ui_theme(failures: Array[String]) -> void: failures.append("briefing shop buy button should avoid modern purchase wording") if scene.shop_sell_button == null or scene.shop_sell_button.text != "내다팔기": failures.append("briefing shop sell button should avoid modern sale wording") - if scene.post_move_title_label == null or scene.post_move_title_label.text != "군령 선택": - failures.append("post-move command title should use order wording") + if scene.post_move_title_label == null or scene.post_move_title_label.text != "행동 선택": + failures.append("post-move command title should use immediately readable action wording") _check_panel_uses_generated_texture(failures, scene.post_move_menu, "post-move command generated frame") var post_move_header: PanelContainer = null var post_move_header_seal: PanelContainer = null @@ -4058,17 +4058,21 @@ func _check_ancient_ui_theme(failures: Array[String]) -> void: failures.append("post-move command header should show a generated move icon") elif post_move_header_icon.texture.get_width() < 128 or post_move_header_icon.texture.get_height() < 128: failures.append("post-move command header should use high-resolution generated move icon art") - _check_local_command_icon_button(failures, scene.post_move_attack_button, "타격령", "attack") - _check_local_command_icon_button(failures, scene.post_move_tactic_button, "책략첩", "tactic") - _check_local_command_icon_button(failures, scene.post_move_item_button, "보급첩", "item") - _check_local_command_icon_button(failures, scene.post_move_wait_button, "대기령", "wait") - _check_local_command_icon_button(failures, scene.post_move_cancel_button, "발걸음 거두기", "cancel") - if scene.post_move_picker_back_button == null or scene.post_move_picker_back_button.text != "죽간 거두기": - failures.append("post-move picker back button should use bamboo-slip wording") + _check_local_command_icon_button(failures, scene.post_move_attack_button, "공격", "attack") + _check_local_command_icon_button(failures, scene.post_move_tactic_button, "책략", "tactic") + _check_local_command_icon_button(failures, scene.post_move_item_button, "도구", "item") + _check_local_command_icon_button(failures, scene.post_move_wait_button, "대기", "wait") + _check_local_command_icon_button(failures, scene.post_move_cancel_button, "이동 취소", "cancel") + if scene.post_move_picker_back_button == null or scene.post_move_picker_back_button.text != "목록 닫기": + failures.append("post-move picker back button should use immediately readable wording") + if scene.post_move_picker_cancel_move_button == null or scene.post_move_picker_cancel_move_button.text != "이동 취소": + failures.append("post-move picker cancel-move button should use immediately readable wording") if scene.targeting_hint_title_label == null or scene.targeting_hint_title_label.text != "적장 지목": failures.append("targeting hint title should use mark foe wording") - if scene.targeting_hint_back_button == null or scene.targeting_hint_back_button.text != "죽간 거두기": - failures.append("targeting hint back button should use bamboo-slip wording") + if scene.targeting_hint_back_button == null or scene.targeting_hint_back_button.text != "선택 취소": + failures.append("targeting hint back button should use immediately readable wording") + if scene.targeting_hint_cancel_move_button == null or scene.targeting_hint_cancel_move_button.text != "이동 취소": + failures.append("targeting hint cancel-move button should use immediately readable wording") scene._on_objective_updated("동문에 깃발을 세워라.", "조조가 퇴각하면 패전이다.") if scene.objective_notice_label == null or not scene.objective_notice_label.text.contains("목표:") or not scene.objective_notice_label.text.contains("주의:"): failures.append("objective update notice should use Korean annotation wording")