Age battle command chrome

This commit is contained in:
2026-06-19 10:48:30 +09:00
parent a075c9062d
commit 9ed6200fdb
3 changed files with 92 additions and 66 deletions

View File

@@ -213,6 +213,7 @@ var status_label: Label
var objective_label: Label
var campaign_status_label: Label
var mission_title_label: Label
var mission_detail_panel: PanelContainer
var mission_detail_label: Label
var objective_notice_panel: PanelContainer
var objective_notice_label: Label
@@ -1010,7 +1011,7 @@ func _create_hud() -> void:
top_row.add_child(restart_button)
new_campaign_button = Button.new()
new_campaign_button.text = "새 전기"
new_campaign_button.text = "새 전기 열기"
new_campaign_button.pressed.connect(_on_new_campaign_pressed)
top_row.add_child(new_campaign_button)
@@ -1089,7 +1090,7 @@ func _create_hud() -> void:
_apply_label_style(mission_title_label, UI_OLD_BRONZE)
side_column.add_child(mission_title_label)
var mission_detail_panel := PanelContainer.new()
mission_detail_panel = PanelContainer.new()
mission_detail_panel.custom_minimum_size = Vector2(420, 134)
mission_detail_panel.size_flags_horizontal = Control.SIZE_EXPAND_FILL
_apply_panel_style(mission_detail_panel, "bamboo_slips")
@@ -1099,14 +1100,17 @@ func _create_hud() -> void:
mission_detail_row.add_theme_constant_override("separation", 8)
mission_detail_panel.add_child(mission_detail_row)
mission_detail_row.add_child(_make_ornament_bar(5, 112))
mission_detail_row.add_child(_make_bamboo_gutter(12, 112))
mission_detail_row.add_child(_make_edict_marker_stack(["", "", ""], 112))
mission_detail_label = Label.new()
mission_detail_label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
mission_detail_label.custom_minimum_size = Vector2(384, 112)
mission_detail_label.custom_minimum_size = Vector2(292, 112)
mission_detail_label.size_flags_horizontal = Control.SIZE_EXPAND_FILL
_apply_label_style(mission_detail_label, UI_PARCHMENT_TEXT)
mission_detail_row.add_child(mission_detail_label)
mission_detail_row.add_child(_make_edict_marker_stack(["", "", ""], 112))
mission_detail_row.add_child(_make_bamboo_gutter(12, 112))
cell_info_label = Label.new()
cell_info_label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
@@ -1131,17 +1135,17 @@ func _create_hud() -> void:
side_column.add_child(button_row)
wait_button = Button.new()
wait_button.text = "대기"
wait_button.text = "대기"
wait_button.pressed.connect(_on_wait_pressed)
button_row.add_child(wait_button)
tactic_button = Button.new()
tactic_button.text = "책략"
tactic_button.text = "책략"
tactic_button.pressed.connect(_on_tactic_pressed)
button_row.add_child(tactic_button)
item_button = Button.new()
item_button.text = "도구"
item_button.text = "보급첩"
item_button.pressed.connect(_on_item_pressed)
button_row.add_child(item_button)
@@ -1151,13 +1155,13 @@ func _create_hud() -> void:
button_row.add_child(equip_button)
threat_button = Button.new()
threat_button.text = "적진"
threat_button.text = "적진"
threat_button.toggle_mode = true
threat_button.pressed.connect(_on_threat_pressed)
button_row.add_child(threat_button)
end_turn_button = Button.new()
end_turn_button.text = "군령 종료"
end_turn_button.text = "군령 봉함"
end_turn_button.pressed.connect(_on_end_turn_pressed)
button_row.add_child(end_turn_button)
@@ -1167,7 +1171,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)
@@ -1181,7 +1185,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)
@@ -1229,25 +1233,25 @@ func _create_hud() -> void:
post_move_column.add_child(post_move_grid)
post_move_attack_button = Button.new()
post_move_attack_button.text = "공격"
post_move_attack_button.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.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.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.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)
@@ -1566,12 +1570,12 @@ func _create_hud() -> void:
shop_menu.add_child(shop_mode_row)
shop_buy_button = Button.new()
shop_buy_button.text = "매입"
shop_buy_button.text = "사들이기"
shop_buy_button.pressed.connect(_on_shop_buy_mode_pressed)
shop_mode_row.add_child(shop_buy_button)
shop_sell_button = Button.new()
shop_sell_button.text = "매각"
shop_sell_button.text = "내다팔기"
shop_sell_button.pressed.connect(_on_shop_sell_mode_pressed)
shop_mode_row.add_child(shop_sell_button)
@@ -1775,14 +1779,16 @@ func _create_hud() -> void:
dialogue_text_panel.add_child(dialogue_text_row)
dialogue_text_row.add_child(_make_bamboo_gutter(18, DIALOGUE_TEXT_SIZE.y - 20))
dialogue_text_row.add_child(_make_edict_marker_stack(["", "", ""], DIALOGUE_TEXT_SIZE.y - 20))
dialogue_text_label = Label.new()
dialogue_text_label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
dialogue_text_label.custom_minimum_size = Vector2(DIALOGUE_TEXT_SIZE.x - 88, DIALOGUE_TEXT_SIZE.y - 20)
dialogue_text_label.custom_minimum_size = Vector2(DIALOGUE_TEXT_SIZE.x - 164, DIALOGUE_TEXT_SIZE.y - 20)
dialogue_text_label.size_flags_horizontal = Control.SIZE_EXPAND_FILL
dialogue_text_label.size_flags_vertical = Control.SIZE_EXPAND_FILL
_apply_label_style(dialogue_text_label, UI_AGED_INK, 17)
dialogue_text_row.add_child(dialogue_text_label)
dialogue_text_row.add_child(_make_edict_marker_stack(["", "", ""], DIALOGUE_TEXT_SIZE.y - 20))
dialogue_text_row.add_child(_make_bamboo_gutter(18, DIALOGUE_TEXT_SIZE.y - 20))
dialogue_column.add_child(_make_scroll_rod(DIALOGUE_TEXT_SIZE.x, 3))
@@ -1863,7 +1869,7 @@ func _create_hud() -> void:
result_column.add_child(result_restart_button)
next_battle_button = Button.new()
next_battle_button.text = "다음 전장으로"
next_battle_button.text = "다음 전장"
next_battle_button.pressed.connect(_on_next_battle_pressed)
result_column.add_child(next_battle_button)
@@ -3800,10 +3806,10 @@ func _format_objective_hud_text() -> String:
var lines := []
var victory := String(state.objectives.get("victory", "적군을 모두 격파하라."))
if not victory.is_empty():
lines.append("勝令|%s" % victory)
lines.append("勝令|朱批 %s" % victory)
var defeat := String(state.objectives.get("defeat", ""))
if not defeat.is_empty():
lines.append("敗兆|%s" % defeat)
lines.append("敗兆|墨戒 %s" % defeat)
if lines.is_empty():
return "勝令"
return _join_strings(lines, "\n")
@@ -4002,21 +4008,21 @@ func _format_mission_panel_text() -> String:
var victory := str(state.objectives.get("victory", ""))
if not victory.is_empty():
lines.append("勝令")
lines.append(" %s" % victory)
lines.append(" 令牌|%s" % victory)
var defeat := str(state.objectives.get("defeat", ""))
if not defeat.is_empty():
lines.append("敗兆")
lines.append(" %s" % defeat)
lines.append(" 戒牌|%s" % defeat)
var progress_lines := state.get_objective_progress_lines(false, false)
if not progress_lines.is_empty():
lines.append("戰功 죽간")
for progress_line in progress_lines:
lines.append(" %s" % progress_line)
lines.append(" 功簿|%s" % progress_line)
var risk_lines := state.get_defeat_progress_lines()
if not risk_lines.is_empty():
lines.append("凶兆 징후")
for risk_line in risk_lines:
lines.append(" %s" % risk_line)
lines.append(" 凶簡|%s" % risk_line)
if lines.is_empty():
return "아직 봉인된 군령이 없습니다."
return _join_strings(lines, "\n")
@@ -4491,9 +4497,9 @@ func _format_hanja_number(value: int) -> String:
func _on_objective_updated(victory: String, defeat: String) -> void:
var notice_lines := ["新詔 軍令 봉인"]
if not victory.is_empty():
notice_lines.append("勝令|%s" % victory)
notice_lines.append("勝令|朱批 %s" % victory)
if not defeat.is_empty():
notice_lines.append("敗兆|%s" % defeat)
notice_lines.append("敗兆|墨戒 %s" % defeat)
if objective_notice_label != null:
objective_notice_label.text = "\n".join(notice_lines)
if objective_notice_panel != null:
@@ -5252,27 +5258,27 @@ func _format_briefing_objectives() -> String:
var text := ""
var victory := str(state.objectives.get("victory", ""))
if not victory.is_empty():
text = "受命 勝令\n %s" % victory
text = "受命 勝令\n 朱批|%s" % victory
var defeat := str(state.objectives.get("defeat", ""))
if not defeat.is_empty():
if not text.is_empty():
text += "\n"
text += "戒懼 敗兆\n %s" % defeat
text += "戒懼 敗兆\n 墨戒|%s" % defeat
var progress_lines := state.get_objective_progress_lines(false, false)
if not progress_lines.is_empty():
if not text.is_empty():
text += "\n"
text += "驗功 戰功 죽간\n %s" % _join_strings(progress_lines, " · ")
text += "驗功 戰功 죽간\n 功簿|%s" % _join_strings(progress_lines, " · ")
var risk_lines := state.get_defeat_progress_lines()
if not risk_lines.is_empty():
if not text.is_empty():
text += "\n"
text += "不祥 凶兆 징후\n %s" % _join_strings(risk_lines, " · ")
text += "不祥 凶兆 징후\n 凶簡|%s" % _join_strings(risk_lines, " · ")
var rewards_text := _format_briefing_rewards()
if not rewards_text.is_empty():
if not text.is_empty():
text += "\n"
text += "封賞 戰利 봉인\n %s" % rewards_text
text += "封賞 戰利 봉인\n 封賞|%s" % rewards_text
return text
@@ -7933,7 +7939,7 @@ func _set_action_button_state(button: Button, label: String, disabled: bool, too
func _set_action_button_blocked(button: Button, base_label: String, reason_label: String, tooltip: String) -> void:
_set_action_button_state(button, "%s - %s" % [base_label, reason_label], true, tooltip)
_set_action_button_state(button, "%s%s" % [base_label, reason_label], true, tooltip)
func _action_phase_block_reason() -> Dictionary:
@@ -7969,16 +7975,16 @@ func _update_wait_button(selected: Dictionary) -> void:
if wait_button == null:
return
if selected.is_empty():
_set_action_button_blocked(wait_button, "대기", "부대 미지정", "명령할 부대를 먼저 고릅니다.")
_set_action_button_blocked(wait_button, "대기", "부대 미지정", "명령할 부대를 먼저 고릅니다.")
return
if bool(selected.get("acted", false)):
_set_action_button_blocked(wait_button, "대기", "봉인됨", "이 부대는 이미 행동했습니다.")
_set_action_button_blocked(wait_button, "대기", "봉인됨", "이 부대는 이미 행동했습니다.")
return
var phase_block := _action_phase_block_reason()
if not phase_block.is_empty():
_set_action_button_blocked(wait_button, "대기", str(phase_block.get("label", "처리 중")), str(phase_block.get("tooltip", "")))
_set_action_button_blocked(wait_button, "대기", str(phase_block.get("label", "처리 중")), str(phase_block.get("tooltip", "")))
return
_set_action_button_state(wait_button, "대기", false, "이 부대의 군령을 봉인합니다.")
_set_action_button_state(wait_button, "대기", false, "이 부대의 군령을 봉인합니다.")
func _update_end_turn_button() -> void:
@@ -7986,9 +7992,9 @@ func _update_end_turn_button() -> void:
return
var phase_block := _action_phase_block_reason()
if not phase_block.is_empty():
_set_action_button_blocked(end_turn_button, "군령 종료", str(phase_block.get("label", "처리 중")), str(phase_block.get("tooltip", "")))
_set_action_button_blocked(end_turn_button, "군령 봉함", str(phase_block.get("label", "처리 중")), str(phase_block.get("tooltip", "")))
return
_set_action_button_state(end_turn_button, "군령 종료", false, "아군 군령을 거두고 적군의 차례로 넘깁니다.")
_set_action_button_state(end_turn_button, "군령 봉함", false, "아군 군령을 거두고 적군의 차례로 넘깁니다.")
func _update_threat_button() -> void:
@@ -7996,46 +8002,46 @@ func _update_threat_button() -> void:
return
threat_button.button_pressed = show_threat_overlay
if campaign_complete_screen:
_set_action_button_blocked(threat_button, "적진", "전기 봉인", "전기가 완결되었습니다.")
_set_action_button_blocked(threat_button, "적진", "전기 봉인", "전기가 완결되었습니다.")
return
if not battle_started:
_set_action_button_blocked(threat_button, "적진", "전장도 미개봉", "전장도를 펼친 뒤 적진을 살필 수 있습니다.")
_set_action_button_blocked(threat_button, "적진", "전장도 미개봉", "전장도를 펼친 뒤 적진을 살필 수 있습니다.")
return
if state.battle_status != BattleState.STATUS_ACTIVE:
_set_action_button_blocked(threat_button, "적진", "전장 종결", "전투 중에만 적진을 살필 수 있습니다.")
_set_action_button_blocked(threat_button, "적진", "전장 종결", "전투 중에만 적진을 살필 수 있습니다.")
return
_set_action_button_state(threat_button, "적진", false, "적의 무기와 책략 사거리를 살핍니다.")
_set_action_button_state(threat_button, "적진", false, "적의 무기와 책략 사거리를 살핍니다.")
func _update_tactic_button(selected: Dictionary) -> void:
if tactic_button == null:
return
if selected.is_empty():
_set_action_button_blocked(tactic_button, "책략", "부대 미지정", "책략을 쓸 부대를 먼저 고릅니다.")
_set_action_button_blocked(tactic_button, "책략", "부대 미지정", "책략을 쓸 부대를 먼저 고릅니다.")
return
var skill_ids := state.get_skill_ids(selected["id"])
if skill_ids.is_empty():
_set_action_button_blocked(tactic_button, "책략", "없음", "이 부대는 사용할 책략이 없습니다.")
_set_action_button_blocked(tactic_button, "책략", "없음", "이 부대는 사용할 책략이 없습니다.")
return
if state.is_unit_skill_sealed(selected["id"]):
_set_action_button_blocked(tactic_button, "책략", "봉인됨", "이 부대는 책략을 쓸 수 없습니다.")
_set_action_button_blocked(tactic_button, "책략", "봉인됨", "이 부대는 책략을 쓸 수 없습니다.")
return
if bool(selected.get("acted", false)):
_set_action_button_blocked(tactic_button, "책략", "봉인됨", "이 부대는 이미 행동했습니다.")
_set_action_button_blocked(tactic_button, "책략", "봉인됨", "이 부대는 이미 행동했습니다.")
return
var phase_block := _action_phase_block_reason()
if not phase_block.is_empty():
_set_action_button_blocked(tactic_button, "책략", str(phase_block.get("label", "처리 중")), str(phase_block.get("tooltip", "")))
_set_action_button_blocked(tactic_button, "책략", str(phase_block.get("label", "처리 중")), str(phase_block.get("tooltip", "")))
return
if not selected_skill_id.is_empty():
var skill := state.get_skill_def(selected_skill_id)
_set_action_button_state(tactic_button, "책략: %s" % str(skill.get("name", selected_skill_id)), false, "전장에 책략 대상을 지목합니다.")
_set_action_button_state(tactic_button, "책략첩|%s" % str(skill.get("name", selected_skill_id)), false, "전장에 책략 대상을 지목합니다.")
elif tactic_menu != null and tactic_menu.visible:
_set_action_button_state(tactic_button, "책략 닫기", false, "책략 목록을 닫습니다.")
_set_action_button_state(tactic_button, "책략첩 봉함", false, "책략 목록을 닫습니다.")
else:
_set_action_button_state(tactic_button, "책략", false, "책략 목록을 펼칩니다. %d개." % skill_ids.size())
_set_action_button_state(tactic_button, "책략", false, "책략 목록을 펼칩니다. %d개." % skill_ids.size())
func _show_tactic_menu(selected: Dictionary) -> void:
@@ -8247,28 +8253,28 @@ func _update_item_button(selected: Dictionary) -> void:
if item_button == null:
return
if selected.is_empty():
_set_action_button_blocked(item_button, "도구", "부대 미지정", "도구를 쓸 부대를 먼저 고릅니다.")
_set_action_button_blocked(item_button, "보급첩", "부대 미지정", "도구를 쓸 부대를 먼저 고릅니다.")
return
if bool(selected.get("acted", false)):
_set_action_button_blocked(item_button, "도구", "봉인됨", "이 부대는 이미 행동했습니다.")
_set_action_button_blocked(item_button, "보급첩", "봉인됨", "이 부대는 이미 행동했습니다.")
return
var phase_block := _action_phase_block_reason()
if not phase_block.is_empty():
_set_action_button_blocked(item_button, "도구", str(phase_block.get("label", "처리 중")), str(phase_block.get("tooltip", "")))
_set_action_button_blocked(item_button, "보급첩", str(phase_block.get("label", "처리 중")), str(phase_block.get("tooltip", "")))
return
var item_ids := state.get_usable_item_ids()
if item_ids.is_empty():
_set_action_button_blocked(item_button, "도구", "비어 있음", "사용할 도구가 없습니다.")
_set_action_button_blocked(item_button, "보급첩", "비어 있음", "사용할 도구가 없습니다.")
return
if not selected_item_id.is_empty():
var item := state.get_item_def(selected_item_id)
_set_action_button_state(item_button, "도구: %s" % str(item.get("name", selected_item_id)), false, "전장에서 도구 대상을 지목합니다.")
_set_action_button_state(item_button, "보급첩|%s" % str(item.get("name", selected_item_id)), false, "전장에서 도구 대상을 지목합니다.")
elif item_menu != null and item_menu.visible:
_set_action_button_state(item_button, "도구 닫기", false, "도구 목록을 닫습니다.")
_set_action_button_state(item_button, "보급첩 봉함", false, "도구 목록을 닫습니다.")
else:
_set_action_button_state(item_button, "도구", false, "도구 목록을 펼칩니다. %d종." % item_ids.size())
_set_action_button_state(item_button, "보급첩", false, "도구 목록을 펼칩니다. %d종." % item_ids.size())
func _show_item_menu(selected: Dictionary) -> void: