Antique battle command UI
This commit is contained in:
@@ -3551,7 +3551,7 @@ func _append_target_units_progress_line(result: Array[String], unit_ids, mode: S
|
||||
_append_progress_line(result, "%s %s" % [unit_name, status], pending)
|
||||
return
|
||||
var label := "호위 손실" if mode == "defeat" else "격파 표식"
|
||||
var suffix := " (1 이상이면 패전)" if mode == "defeat" else ""
|
||||
var suffix := " · 하나라도 잃으면 패전" if mode == "defeat" else ""
|
||||
_append_progress_line(result, "%s %d/%d%s" % [label, defeated, total, suffix], pending)
|
||||
|
||||
|
||||
@@ -3573,7 +3573,7 @@ func _append_target_officers_progress_line(
|
||||
_append_progress_line(result, "%s %s" % [officer_name, status], pending)
|
||||
return
|
||||
var label := "장수 손실" if mode == "defeat" else "대상 장수 격파"
|
||||
var suffix := " (1 이상이면 패전)" if mode == "defeat" else ""
|
||||
var suffix := " · 하나라도 잃으면 패전" if mode == "defeat" else ""
|
||||
_append_progress_line(result, "%s %d/%d%s" % [label, defeated, total, suffix], pending)
|
||||
|
||||
|
||||
@@ -3582,7 +3582,7 @@ func _append_destination_progress_line(result: Array[String], condition: Diction
|
||||
if targets.is_empty():
|
||||
return
|
||||
var status := "도달" if _unit_reaches_tile(condition) else "미도달"
|
||||
_append_progress_line(result, "목표 지점 %s: %s" % [_format_cells(targets), status], pending)
|
||||
_append_progress_line(result, "전장 표식 %s · %s" % [_format_cells(targets), status], pending)
|
||||
|
||||
|
||||
func _append_turn_limit_progress_line(result: Array[String]) -> void:
|
||||
@@ -3590,7 +3590,7 @@ func _append_turn_limit_progress_line(result: Array[String]) -> void:
|
||||
if limit <= 0:
|
||||
return
|
||||
var turns_left: int = maxi(0, limit - turn_number + 1)
|
||||
_append_progress_line(result, "남은 턴 %d" % turns_left)
|
||||
_append_progress_line(result, "잔여 군령 %d" % turns_left)
|
||||
|
||||
|
||||
func _append_after_event_progress_line(result: Array[String], event_id: String) -> void:
|
||||
@@ -3606,7 +3606,7 @@ func _append_after_event_progress_line(result: Array[String], event_id: String)
|
||||
elif trigger_type == "turn_start":
|
||||
var target_turn := int(when.get("turn", 0))
|
||||
if target_turn > 0:
|
||||
_append_progress_line(result, "제%d턴에 전공 갱신" % target_turn)
|
||||
_append_progress_line(result, "제%d군령에 전공 갱신" % target_turn)
|
||||
|
||||
|
||||
func _append_event_destination_progress_line(result: Array[String], when: Dictionary) -> void:
|
||||
@@ -3614,7 +3614,7 @@ func _append_event_destination_progress_line(result: Array[String], when: Dictio
|
||||
if targets.is_empty():
|
||||
return
|
||||
var status := "도달" if _unit_reaches_tile(when) else "미도달"
|
||||
_append_progress_line(result, "목표 지점 %s: %s" % [_format_cells(targets), status])
|
||||
_append_progress_line(result, "전장 표식 %s · %s" % [_format_cells(targets), status])
|
||||
|
||||
|
||||
func _append_turn_condition_progress_line(result: Array[String], condition: Dictionary, mode: String, pending := false) -> void:
|
||||
@@ -3623,7 +3623,7 @@ func _append_turn_condition_progress_line(result: Array[String], condition: Dict
|
||||
var limit := int(condition.get("turn", condition.get("limit", 0)))
|
||||
if limit <= 0:
|
||||
return
|
||||
_append_progress_line(result, "남은 턴 %d" % maxi(0, limit - turn_number + 1), pending)
|
||||
_append_progress_line(result, "잔여 군령 %d" % maxi(0, limit - turn_number + 1), pending)
|
||||
elif condition_type == "turn_reached":
|
||||
var target_turn := int(condition.get("turn", 0))
|
||||
if target_turn <= 0:
|
||||
@@ -3631,9 +3631,9 @@ func _append_turn_condition_progress_line(result: Array[String], condition: Dict
|
||||
if mode == "defeat":
|
||||
var target_team := str(condition.get("team", ""))
|
||||
var limit_turn := target_turn - 1 if target_team == TEAM_PLAYER else target_turn
|
||||
_append_progress_line(result, "남은 턴 %d" % maxi(0, limit_turn - turn_number + 1), pending)
|
||||
_append_progress_line(result, "잔여 군령 %d" % maxi(0, limit_turn - turn_number + 1), pending)
|
||||
return
|
||||
_append_progress_line(result, "제%d턴/%d" % [min(turn_number, target_turn), target_turn], pending)
|
||||
_append_progress_line(result, "군령 제%d/%d" % [min(turn_number, target_turn), target_turn], pending)
|
||||
|
||||
|
||||
func _append_progress_line(result: Array[String], text: String, pending := false) -> void:
|
||||
@@ -4139,15 +4139,16 @@ func _event_action_unit_ids(action: Dictionary) -> Array[String]:
|
||||
|
||||
func _emit_ai_target_priority_feedback(unit: Dictionary, previous_priority: int, priority: int, text: String = "") -> void:
|
||||
if text.is_empty():
|
||||
var unit_name := str(unit.get("name", "부대"))
|
||||
if priority > previous_priority:
|
||||
text = "%s is exposed to enemy focus." % str(unit.get("name", "Unit"))
|
||||
text = "%s에게 적 시선이 몰립니다." % unit_name
|
||||
elif priority < previous_priority:
|
||||
text = "%s is less exposed to enemy focus." % str(unit.get("name", "Unit"))
|
||||
text = "%s를 향한 적 시선이 느슨해집니다." % unit_name
|
||||
else:
|
||||
text = "%s remains an enemy priority." % str(unit.get("name", "Unit"))
|
||||
text = "%s는 여전히 적의 표적입니다." % unit_name
|
||||
_emit_log(text)
|
||||
if bool(unit.get("alive", false)) and bool(unit.get("deployed", true)):
|
||||
_emit_combat_feedback(unit, "TARGET", "priority")
|
||||
_emit_combat_feedback(unit, "標的", "priority")
|
||||
|
||||
|
||||
func _apply_objective_event(action: Dictionary) -> void:
|
||||
@@ -4165,9 +4166,9 @@ func _apply_objective_event(action: Dictionary) -> void:
|
||||
if not updated:
|
||||
return
|
||||
if action.has("victory") and not updated_victory.is_empty():
|
||||
_emit_log("Objective updated: %s" % updated_victory)
|
||||
_emit_log("軍令 개정: %s" % updated_victory)
|
||||
if action.has("defeat") and not updated_defeat.is_empty():
|
||||
_emit_log("Defeat condition updated: %s" % updated_defeat)
|
||||
_emit_log("敗兆 개정: %s" % updated_defeat)
|
||||
objective_updated.emit(updated_victory, updated_defeat)
|
||||
_notify_changed()
|
||||
|
||||
|
||||
@@ -71,9 +71,9 @@ const SHOP_MERCHANT_BADGE_SIZE := Vector2(50, 50)
|
||||
const SHOP_ITEM_ICON_SIZE := Vector2(48, 48)
|
||||
const HUD_UNIT_PORTRAIT_SIZE := Vector2(92, 104)
|
||||
const HUD_UNIT_PORTRAIT_STACK_SIZE := Vector2(88, 100)
|
||||
const POST_MOVE_MENU_SIZE := Vector2(228, 120)
|
||||
const POST_MOVE_PICKER_PANEL_SIZE := Vector2(320, 210)
|
||||
const TARGETING_HINT_PANEL_SIZE := Vector2(240, 94)
|
||||
const POST_MOVE_MENU_SIZE := Vector2(240, 146)
|
||||
const POST_MOVE_PICKER_PANEL_SIZE := Vector2(336, 236)
|
||||
const TARGETING_HINT_PANEL_SIZE := Vector2(254, 118)
|
||||
const LOCAL_COMMAND_PANEL_GAP := 8.0
|
||||
const LOCAL_COMMAND_PANEL_BOARD_PADDING := 4.0
|
||||
const UI_RICE_PAPER := Color(0.58, 0.45, 0.25, 0.98)
|
||||
@@ -395,7 +395,7 @@ func _age_panel_style(style: StyleBoxFlat, variant: String, border_width: int) -
|
||||
style.set_border_width(SIDE_RIGHT, border_width + 1)
|
||||
style.content_margin_top += 2
|
||||
style.content_margin_bottom += 2
|
||||
"edict", "notice_edict", "speech_scroll", "bamboo_slips", "silk_map":
|
||||
"edict", "notice_edict", "speech_scroll", "bamboo_slips", "silk_map", "command_seal":
|
||||
style.set_border_width(SIDE_TOP, border_width + 2)
|
||||
style.set_border_width(SIDE_BOTTOM, border_width + 2)
|
||||
"edict_compact":
|
||||
@@ -509,6 +509,12 @@ func _apply_panel_style(panel: PanelContainer, variant: String) -> void:
|
||||
border_width = 8
|
||||
margin = 19
|
||||
shadow_size = 12
|
||||
"command_seal":
|
||||
fill = Color(0.065, 0.020, 0.012, 0.992)
|
||||
border = UI_TARNISHED_BRONZE
|
||||
border_width = 5
|
||||
margin = 10
|
||||
shadow_size = 9
|
||||
_:
|
||||
pass
|
||||
var style := _make_panel_style(fill, border, border_width, radius, margin, shadow_size)
|
||||
@@ -1124,12 +1130,13 @@ func _create_hud() -> void:
|
||||
post_move_menu.mouse_filter = Control.MOUSE_FILTER_STOP
|
||||
post_move_menu.custom_minimum_size = POST_MOVE_MENU_SIZE
|
||||
post_move_menu.size = POST_MOVE_MENU_SIZE
|
||||
_apply_panel_style(post_move_menu, "compact")
|
||||
_apply_panel_style(post_move_menu, "command_seal")
|
||||
root.add_child(post_move_menu)
|
||||
|
||||
var post_move_column := VBoxContainer.new()
|
||||
post_move_column.add_theme_constant_override("separation", 4)
|
||||
post_move_column.add_theme_constant_override("separation", 5)
|
||||
post_move_menu.add_child(post_move_column)
|
||||
post_move_column.add_child(_make_seal_ribbon(196, 10))
|
||||
|
||||
post_move_title_label = Label.new()
|
||||
post_move_title_label.text = "군령 선택"
|
||||
@@ -1145,25 +1152,25 @@ func _create_hud() -> void:
|
||||
|
||||
post_move_attack_button = Button.new()
|
||||
post_move_attack_button.text = "공격"
|
||||
post_move_attack_button.tooltip_text = "현재 자리에서 공격할 적을 지목합니다."
|
||||
post_move_attack_button.tooltip_text = "이 자리에서 칠 적군을 지목합니다."
|
||||
post_move_attack_button.pressed.connect(_on_post_move_attack_pressed)
|
||||
post_move_grid.add_child(post_move_attack_button)
|
||||
|
||||
post_move_tactic_button = Button.new()
|
||||
post_move_tactic_button.text = "책략"
|
||||
post_move_tactic_button.tooltip_text = "이동 후 책략 목록을 펼칩니다."
|
||||
post_move_tactic_button.tooltip_text = "군령에 올릴 책략 죽간을 고릅니다."
|
||||
post_move_tactic_button.pressed.connect(_on_post_move_tactic_pressed)
|
||||
post_move_grid.add_child(post_move_tactic_button)
|
||||
|
||||
post_move_item_button = Button.new()
|
||||
post_move_item_button.text = "도구"
|
||||
post_move_item_button.tooltip_text = "이동 후 도구 목록을 펼칩니다."
|
||||
post_move_item_button.tooltip_text = "군령에 올릴 보급 물자를 고릅니다."
|
||||
post_move_item_button.pressed.connect(_on_post_move_item_pressed)
|
||||
post_move_grid.add_child(post_move_item_button)
|
||||
|
||||
post_move_wait_button = Button.new()
|
||||
post_move_wait_button.text = "대기"
|
||||
post_move_wait_button.tooltip_text = "이동을 확정하고 부대의 군령을 봉인합니다."
|
||||
post_move_wait_button.tooltip_text = "행군을 확정하고 군령을 봉인합니다."
|
||||
post_move_wait_button.pressed.connect(_on_post_move_wait_pressed)
|
||||
post_move_grid.add_child(post_move_wait_button)
|
||||
|
||||
@@ -1178,12 +1185,13 @@ func _create_hud() -> void:
|
||||
post_move_picker_panel.mouse_filter = Control.MOUSE_FILTER_STOP
|
||||
post_move_picker_panel.custom_minimum_size = POST_MOVE_PICKER_PANEL_SIZE
|
||||
post_move_picker_panel.size = POST_MOVE_PICKER_PANEL_SIZE
|
||||
_apply_panel_style(post_move_picker_panel, "compact")
|
||||
_apply_panel_style(post_move_picker_panel, "command_seal")
|
||||
root.add_child(post_move_picker_panel)
|
||||
|
||||
var picker_column := VBoxContainer.new()
|
||||
picker_column.add_theme_constant_override("separation", 5)
|
||||
post_move_picker_panel.add_child(picker_column)
|
||||
picker_column.add_child(_make_seal_ribbon(296, 10))
|
||||
|
||||
post_move_picker_title_label = Label.new()
|
||||
post_move_picker_title_label.text = "군령 선택"
|
||||
@@ -1212,14 +1220,14 @@ 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.tooltip_text = "군령 선택으로 돌아갑니다."
|
||||
post_move_picker_back_button.text = "죽간 거두기"
|
||||
post_move_picker_back_button.tooltip_text = "군령 선택으로 되돌립니다."
|
||||
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.tooltip_text = "우클릭으로도 원래 자리로 되돌릴 수 있습니다."
|
||||
post_move_picker_cancel_move_button.tooltip_text = "발걸음을 거두면 원래 자리로 되돌립니다."
|
||||
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)
|
||||
|
||||
@@ -1228,12 +1236,13 @@ func _create_hud() -> void:
|
||||
targeting_hint_panel.mouse_filter = Control.MOUSE_FILTER_STOP
|
||||
targeting_hint_panel.custom_minimum_size = TARGETING_HINT_PANEL_SIZE
|
||||
targeting_hint_panel.size = TARGETING_HINT_PANEL_SIZE
|
||||
_apply_panel_style(targeting_hint_panel, "compact")
|
||||
_apply_panel_style(targeting_hint_panel, "command_seal")
|
||||
root.add_child(targeting_hint_panel)
|
||||
|
||||
var targeting_column := VBoxContainer.new()
|
||||
targeting_column.add_theme_constant_override("separation", 4)
|
||||
targeting_hint_panel.add_child(targeting_column)
|
||||
targeting_column.add_child(_make_seal_ribbon(218, 9))
|
||||
|
||||
targeting_hint_title_label = Label.new()
|
||||
targeting_hint_title_label.text = "적장 지목"
|
||||
@@ -1252,8 +1261,8 @@ 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.tooltip_text = "군령 선택으로 돌아갑니다."
|
||||
targeting_hint_back_button.text = "죽간 거두기"
|
||||
targeting_hint_back_button.tooltip_text = "군령 선택으로 되돌립니다."
|
||||
targeting_hint_back_button.pressed.connect(_on_targeting_back_pressed)
|
||||
targeting_button_row.add_child(targeting_hint_back_button)
|
||||
|
||||
@@ -1891,7 +1900,7 @@ func _play_ui_cancel() -> void:
|
||||
func _play_log_sfx(message: String) -> void:
|
||||
if message.contains(" but misses.") or message.contains("헛쳤다"):
|
||||
_play_sfx("guard_block")
|
||||
elif message.begins_with("Objective updated:") or message.begins_with("Defeat condition updated:") or message.begins_with("군령 갱신:") or message.begins_with("패전 군령 갱신:"):
|
||||
elif message.begins_with("Objective updated:") or message.begins_with("Defeat condition updated:") or message.begins_with("軍令 개정:") or message.begins_with("敗兆 개정:") or message.begins_with("군령 갱신:") or message.begins_with("패전 군령 갱신:"):
|
||||
_play_ui_confirm()
|
||||
elif message.ends_with(" withdraws from the battlefield.") or message.ends_with("전장을 물러났다."):
|
||||
_play_ui_confirm()
|
||||
@@ -2698,7 +2707,7 @@ func _draw_target_selection_markers() -> void:
|
||||
draw_rect(rect.grow(-6.0), color, false, 2.2)
|
||||
draw_rect(marker_rect, Color(0.025, 0.028, 0.034, 0.88))
|
||||
draw_rect(marker_rect, color, false, 1.4)
|
||||
draw_string(font, marker_rect.position + Vector2(0, 13), str(marker.get("text", "TARGET")), HORIZONTAL_ALIGNMENT_CENTER, marker_rect.size.x, 12, color)
|
||||
draw_string(font, marker_rect.position + Vector2(0, 13), str(marker.get("text", "標")), HORIZONTAL_ALIGNMENT_CENTER, marker_rect.size.x, 12, color)
|
||||
|
||||
|
||||
func _target_selection_marker_entries() -> Array[Dictionary]:
|
||||
@@ -2751,7 +2760,7 @@ func _skill_target_marker_entries() -> Array[Dictionary]:
|
||||
result.append({
|
||||
"cell": cell,
|
||||
"target_id": str(target.get("id", "")) if not target.is_empty() else "",
|
||||
"text": str(badge.get("text", "TARGET")),
|
||||
"text": str(badge.get("text", "標")),
|
||||
"kind": str(badge.get("kind", "support"))
|
||||
})
|
||||
return result
|
||||
@@ -2772,7 +2781,7 @@ func _item_target_marker_entries() -> Array[Dictionary]:
|
||||
result.append({
|
||||
"cell": cell,
|
||||
"target_id": str(target.get("id", "")) if not target.is_empty() else "",
|
||||
"text": str(badge.get("text", "TARGET")),
|
||||
"text": str(badge.get("text", "標")),
|
||||
"kind": str(badge.get("kind", "support"))
|
||||
})
|
||||
return result
|
||||
@@ -3670,7 +3679,7 @@ func _format_unit_focus_text(unit: Dictionary, prefix: String) -> String:
|
||||
var lines := []
|
||||
lines.append("%s: %s%s%s" % [
|
||||
_unit_focus_prefix_text(prefix),
|
||||
str(unit.get("name", "Unit")),
|
||||
str(unit.get("name", "부대")),
|
||||
roster_mark,
|
||||
control_label
|
||||
])
|
||||
@@ -3967,7 +3976,7 @@ func _format_physical_threat_preview_text(previews: Array[Dictionary], limit: in
|
||||
var effective_target_text := "" if effective_type.is_empty() else " 대 %s" % effective_type
|
||||
effective_text = " 특효 +%d%s" % [effective_bonus, effective_target_text]
|
||||
parts.append("%s 피해 %d/명중 %d%%%s%s" % [
|
||||
str(preview.get("source_name", "Unit")),
|
||||
str(preview.get("source_name", "부대")),
|
||||
int(preview.get("damage", 0)),
|
||||
int(preview.get("hit_chance", 0)),
|
||||
effective_text,
|
||||
@@ -3983,8 +3992,8 @@ func _format_skill_threat_preview_text(previews: Array[Dictionary], limit: int)
|
||||
var safe_limit: int = maxi(1, limit)
|
||||
for index in range(mini(previews.size(), safe_limit)):
|
||||
var preview: Dictionary = previews[index]
|
||||
var source_text := str(preview.get("source_name", "Unit"))
|
||||
var skill_text := str(preview.get("skill_name", "Skill"))
|
||||
var source_text := str(preview.get("source_name", "부대"))
|
||||
var skill_text := str(preview.get("skill_name", "책략"))
|
||||
var area_text := _format_skill_threat_area_text(preview)
|
||||
if str(preview.get("kind", "")) == "damage":
|
||||
var defeat_text := " 퇴각" if bool(preview.get("would_defeat", false)) else ""
|
||||
@@ -6027,7 +6036,7 @@ func _rebuild_roster_menu() -> void:
|
||||
var max_units := state.get_deployment_max_units()
|
||||
var deployed_count := state.get_deployed_player_count()
|
||||
if roster_status_label != null:
|
||||
roster_status_label.text = "Sortie %d/%d" % [deployed_count, max_units]
|
||||
roster_status_label.text = "출진 명부 %d/%d" % [deployed_count, max_units]
|
||||
|
||||
if units.is_empty():
|
||||
var empty_label := Label.new()
|
||||
@@ -6987,13 +6996,13 @@ func _format_progression_events(events) -> String:
|
||||
hidden_count += 1
|
||||
continue
|
||||
var event_type := str(event.get("type", ""))
|
||||
var unit_name := str(event.get("name", "Unit"))
|
||||
var unit_name := str(event.get("name", "부대"))
|
||||
if event_type == "promotion":
|
||||
parts.append("%s -> %s" % [unit_name, str(event.get("to_class", "Promoted"))])
|
||||
parts.append("%s -> %s" % [unit_name, str(event.get("to_class", "승급"))])
|
||||
elif event_type == "level_up":
|
||||
parts.append("%s Lv.%d" % [unit_name, int(event.get("to_level", 1))])
|
||||
if hidden_count > 0:
|
||||
parts.append("+%d more" % hidden_count)
|
||||
parts.append("외 %d건" % hidden_count)
|
||||
if parts.is_empty():
|
||||
return ""
|
||||
return _join_strings(parts, "; ")
|
||||
@@ -7219,7 +7228,7 @@ func _on_new_campaign_pressed() -> void:
|
||||
log_box.clear()
|
||||
if not campaign_state.reset_save(campaign_state.get_start_scenario_id()):
|
||||
result_panel.visible = true
|
||||
result_label.text = "Unable to reset campaign save.\nClose the game and check file permissions."
|
||||
result_label.text = "전기 봉인을 새로 열지 못했습니다.\n저장 권한을 살펴본 뒤 다시 명하십시오."
|
||||
if result_restart_button != null:
|
||||
result_restart_button.visible = false
|
||||
if next_battle_button != null:
|
||||
@@ -7274,25 +7283,25 @@ func _update_post_move_menu() -> void:
|
||||
return
|
||||
_position_post_move_menu()
|
||||
if post_move_title_label != null:
|
||||
post_move_title_label.text = "%s: 군령 선택" % str(selected.get("name", "Unit"))
|
||||
post_move_title_label.text = "%s: 군령 선택" % str(selected.get("name", "부대"))
|
||||
if post_move_attack_button != null:
|
||||
var attack_blocked := not _has_basic_attack_target(pending_move_unit_id)
|
||||
post_move_attack_button.disabled = attack_blocked
|
||||
post_move_attack_button.tooltip_text = "사거리 안에 적 부대가 없습니다." if attack_blocked else "현재 자리에서 공격할 적을 지목합니다."
|
||||
post_move_attack_button.tooltip_text = "사거리 안에 적 부대가 없습니다." if attack_blocked else "이 자리에서 칠 적군을 지목합니다."
|
||||
if post_move_tactic_button != null:
|
||||
var skill_blocked := not _unit_has_usable_skill_target(pending_move_unit_id)
|
||||
post_move_tactic_button.disabled = skill_blocked
|
||||
post_move_tactic_button.tooltip_text = "이 자리에서 닿는 책략 대상이 없습니다." if skill_blocked else "현재 자리에서 쓸 책략을 고릅니다."
|
||||
post_move_tactic_button.tooltip_text = "이 자리에서 닿는 책략 대상이 없습니다." if skill_blocked else "군령에 올릴 책략 죽간을 고릅니다."
|
||||
if post_move_item_button != null:
|
||||
var item_blocked := not _unit_has_usable_item_target(pending_move_unit_id)
|
||||
post_move_item_button.disabled = item_blocked
|
||||
post_move_item_button.tooltip_text = "이 자리에서 닿는 도구 대상이 없습니다." if item_blocked else "이동 후 도구 목록을 펼칩니다."
|
||||
post_move_item_button.tooltip_text = "이 자리에서 닿는 보급 대상이 없습니다." if item_blocked else "군령에 올릴 보급 물자를 고릅니다."
|
||||
if post_move_wait_button != null:
|
||||
post_move_wait_button.disabled = false
|
||||
post_move_wait_button.tooltip_text = "행군을 확정하고 군령을 봉인합니다."
|
||||
if post_move_cancel_button != null:
|
||||
post_move_cancel_button.disabled = false
|
||||
post_move_cancel_button.tooltip_text = "우클릭으로도 원래 자리로 되돌릴 수 있습니다."
|
||||
post_move_cancel_button.tooltip_text = "발걸음을 거두면 원래 자리로 되돌립니다."
|
||||
|
||||
|
||||
func _local_command_panel_position_for_cell(cell: Vector2i, panel_size: Vector2) -> Vector2:
|
||||
@@ -7396,7 +7405,8 @@ func _rebuild_post_move_picker(selected: Dictionary) -> void:
|
||||
_rebuild_post_move_item_picker(selected)
|
||||
else:
|
||||
var empty_label := Label.new()
|
||||
empty_label.text = "No choices"
|
||||
empty_label.text = "열린 군령이 없습니다"
|
||||
_apply_label_style(empty_label, UI_PARCHMENT_TEXT)
|
||||
post_move_picker_list.add_child(empty_label)
|
||||
|
||||
|
||||
@@ -7415,20 +7425,20 @@ func _position_post_move_picker() -> void:
|
||||
|
||||
|
||||
func _post_move_picker_title_text(selected: Dictionary) -> String:
|
||||
var unit_name := str(selected.get("name", "Unit"))
|
||||
var unit_name := str(selected.get("name", "부대"))
|
||||
if post_move_picker_mode == "tactic":
|
||||
return "%s: choose stratagem" % unit_name
|
||||
return "%s: 책략 죽간" % unit_name
|
||||
if post_move_picker_mode == "item":
|
||||
return "%s: choose supply" % unit_name
|
||||
return "%s: choose writ" % unit_name
|
||||
return "%s: 보급 물자" % unit_name
|
||||
return "%s: 군령 죽간" % unit_name
|
||||
|
||||
|
||||
func _post_move_picker_detail_text() -> String:
|
||||
if post_move_picker_mode == "tactic":
|
||||
return "Select a stratagem, then mark highlighted ground."
|
||||
return "책략을 고른 뒤 빛나는 표식 칸을 지목합니다."
|
||||
if post_move_picker_mode == "item":
|
||||
return "Select a supply, then mark a highlighted ally."
|
||||
return "Select a writ."
|
||||
return "보급을 고른 뒤 표식이 뜬 아군을 지목합니다."
|
||||
return "군령에 올릴 죽간을 고릅니다."
|
||||
|
||||
|
||||
func _rebuild_post_move_tactic_picker(selected: Dictionary) -> void:
|
||||
@@ -7446,7 +7456,7 @@ func _rebuild_post_move_tactic_picker(selected: Dictionary) -> void:
|
||||
skill_button.text = _format_post_move_tactic_button_text(skill_id, skill, selected)
|
||||
var disabled_reason := _post_move_tactic_disabled_reason(selected, skill_id, skill)
|
||||
skill_button.disabled = not disabled_reason.is_empty()
|
||||
skill_button.tooltip_text = disabled_reason if not disabled_reason.is_empty() else "Select this tactic writ."
|
||||
skill_button.tooltip_text = disabled_reason if not disabled_reason.is_empty() else "이 책략 죽간을 군령에 올립니다."
|
||||
_apply_button_style(skill_button)
|
||||
skill_button.pressed.connect(_on_post_move_tactic_option_pressed.bind(skill_id))
|
||||
post_move_picker_list.add_child(skill_button)
|
||||
@@ -7456,7 +7466,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 = "No supplies"
|
||||
empty_label.text = "쓸 보급이 없습니다"
|
||||
_apply_label_style(empty_label, UI_PARCHMENT_TEXT)
|
||||
post_move_picker_list.add_child(empty_label)
|
||||
return
|
||||
@@ -7664,12 +7674,12 @@ func _update_targeting_hint_panel() -> void:
|
||||
if targeting_hint_detail_label != null:
|
||||
targeting_hint_detail_label.text = _targeting_hint_detail_text()
|
||||
if targeting_hint_back_button != null:
|
||||
targeting_hint_back_button.text = "돌아가기"
|
||||
targeting_hint_back_button.tooltip_text = "군령 선택으로 돌아갑니다." if _has_pending_move() else "대상 지정을 풉니다."
|
||||
targeting_hint_back_button.text = "죽간 거두기"
|
||||
targeting_hint_back_button.tooltip_text = "군령 선택으로 되돌립니다." if _has_pending_move() else "지목을 거둡니다."
|
||||
if targeting_hint_cancel_move_button != null:
|
||||
targeting_hint_cancel_move_button.visible = _has_pending_move()
|
||||
targeting_hint_cancel_move_button.disabled = not _has_pending_move()
|
||||
targeting_hint_cancel_move_button.tooltip_text = "우클릭으로도 원래 자리로 되돌릴 수 있습니다."
|
||||
targeting_hint_cancel_move_button.tooltip_text = "발걸음을 거두면 원래 자리로 되돌립니다."
|
||||
targeting_hint_panel.visible = true
|
||||
|
||||
|
||||
@@ -7890,7 +7900,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)
|
||||
@@ -8121,7 +8131,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)
|
||||
@@ -8275,7 +8285,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)
|
||||
|
||||
Reference in New Issue
Block a user