Age briefing and dialogue UI
This commit is contained in:
@@ -218,6 +218,7 @@ var mission_detail_label: Label
|
||||
var objective_notice_panel: PanelContainer
|
||||
var objective_notice_label: Label
|
||||
var ui_root_control: Control
|
||||
var screen_backdrop: ColorRect
|
||||
var hud_unit_portrait_panel: PanelContainer
|
||||
var hud_unit_portrait_texture: TextureRect
|
||||
var hud_unit_portrait_label: Label
|
||||
@@ -456,37 +457,37 @@ func _apply_panel_style(panel: PanelContainer, variant: String) -> void:
|
||||
var shadow_size := 6
|
||||
match variant:
|
||||
"paper":
|
||||
fill = Color(0.42, 0.27, 0.10, 0.997)
|
||||
border = UI_SOOT_EDGE
|
||||
border_width = 13
|
||||
margin = 20
|
||||
shadow_size = 18
|
||||
fill = Color(0.54, 0.36, 0.14, 0.997)
|
||||
border = UI_LACQUER_EDGE
|
||||
border_width = 15
|
||||
margin = 24
|
||||
shadow_size = 24
|
||||
"edict":
|
||||
fill = Color(0.58, 0.39, 0.16, 0.998)
|
||||
border = UI_INK_WASH
|
||||
border_width = 8
|
||||
margin = 16
|
||||
shadow_size = 9
|
||||
"edict_compact":
|
||||
fill = Color(0.48, 0.31, 0.13, 0.996)
|
||||
fill = Color(0.67, 0.49, 0.24, 0.998)
|
||||
border = UI_BRUSH_RULE
|
||||
border_width = 10
|
||||
margin = 18
|
||||
shadow_size = 12
|
||||
"edict_compact":
|
||||
fill = Color(0.55, 0.36, 0.15, 0.996)
|
||||
border = UI_BRUSH_RULE
|
||||
border_width = 3
|
||||
margin = 6
|
||||
shadow_size = 2
|
||||
"notice_edict":
|
||||
fill = Color(0.54, 0.34, 0.13, 0.998)
|
||||
border = UI_INK_WASH
|
||||
border_width = 7
|
||||
margin = 12
|
||||
shadow_size = 10
|
||||
"seal":
|
||||
fill = Color(0.18, 0.018, 0.010, 1.0)
|
||||
border = UI_OLD_BRONZE
|
||||
border_width = 4
|
||||
margin = 6
|
||||
shadow_size = 4
|
||||
"notice_edict":
|
||||
fill = Color(0.62, 0.42, 0.17, 0.998)
|
||||
border = UI_LACQUER_EDGE
|
||||
border_width = 9
|
||||
margin = 14
|
||||
shadow_size = 14
|
||||
"seal":
|
||||
fill = Color(0.12, 0.014, 0.008, 1.0)
|
||||
border = UI_OLD_BRONZE
|
||||
border_width = 5
|
||||
margin = 10
|
||||
"speaker_seal":
|
||||
fill = UI_SEAL_RED_DARK
|
||||
border = UI_TARNISHED_BRONZE
|
||||
fill = Color(0.36, 0.025, 0.016, 0.995)
|
||||
border = UI_OLD_BRONZE
|
||||
border_width = 4
|
||||
margin = 9
|
||||
"portrait":
|
||||
@@ -495,17 +496,17 @@ func _apply_panel_style(panel: PanelContainer, variant: String) -> void:
|
||||
border_width = 5
|
||||
margin = 3
|
||||
"dialogue":
|
||||
fill = Color(0.10, 0.045, 0.020, 0.975)
|
||||
border = UI_SOOT_EDGE
|
||||
border_width = 11
|
||||
margin = 20
|
||||
shadow_size = 18
|
||||
fill = Color(0.070, 0.024, 0.012, 0.986)
|
||||
border = Color(0.37, 0.20, 0.070, 1.0)
|
||||
border_width = 13
|
||||
margin = 22
|
||||
shadow_size = 22
|
||||
"speech_scroll":
|
||||
fill = Color(0.64, 0.43, 0.18, 0.998)
|
||||
border = UI_INK_WASH
|
||||
border_width = 8
|
||||
margin = 15
|
||||
shadow_size = 7
|
||||
fill = Color(0.72, 0.53, 0.25, 0.998)
|
||||
border = UI_BRUSH_RULE
|
||||
border_width = 9
|
||||
margin = 17
|
||||
shadow_size = 9
|
||||
"notice":
|
||||
fill = Color(0.070, 0.020, 0.014, 0.982)
|
||||
border = UI_SEAL_RED
|
||||
@@ -517,11 +518,11 @@ func _apply_panel_style(panel: PanelContainer, variant: String) -> void:
|
||||
border_width = 6
|
||||
margin = 4
|
||||
"silk_map":
|
||||
fill = Color(0.35, 0.22, 0.085, 0.994)
|
||||
border = UI_INK_WASH
|
||||
border_width = 6
|
||||
fill = Color(0.42, 0.27, 0.095, 0.995)
|
||||
border = UI_BRUSH_RULE
|
||||
border_width = 7
|
||||
margin = 10
|
||||
shadow_size = 7
|
||||
shadow_size = 10
|
||||
"compact":
|
||||
fill = Color(0.10, 0.055, 0.030, 0.93)
|
||||
border = UI_TARNISHED_BRONZE
|
||||
@@ -529,11 +530,11 @@ func _apply_panel_style(panel: PanelContainer, variant: String) -> void:
|
||||
margin = 8
|
||||
shadow_size = 8
|
||||
"bamboo_slips":
|
||||
fill = Color(0.36, 0.24, 0.105, 0.990)
|
||||
border = UI_INK_WASH
|
||||
border_width = 3
|
||||
fill = Color(0.43, 0.28, 0.11, 0.992)
|
||||
border = UI_BRUSH_RULE
|
||||
border_width = 5
|
||||
margin = 10
|
||||
shadow_size = 3
|
||||
shadow_size = 6
|
||||
"caption":
|
||||
fill = Color(0.17, 0.030, 0.017, 0.988)
|
||||
border = UI_OLD_BRONZE
|
||||
@@ -541,23 +542,23 @@ func _apply_panel_style(panel: PanelContainer, variant: String) -> void:
|
||||
margin = 5
|
||||
shadow_size = 2
|
||||
"result_tablet":
|
||||
fill = Color(0.40, 0.25, 0.095, 0.997)
|
||||
border = UI_SOOT_EDGE
|
||||
border_width = 13
|
||||
margin = 22
|
||||
shadow_size = 22
|
||||
fill = Color(0.47, 0.29, 0.10, 0.997)
|
||||
border = UI_LACQUER_EDGE
|
||||
border_width = 15
|
||||
margin = 24
|
||||
shadow_size = 24
|
||||
"result_victory_tablet":
|
||||
fill = Color(0.46, 0.31, 0.13, 0.997)
|
||||
border = UI_TARNISHED_BRONZE
|
||||
border_width = 12
|
||||
margin = 22
|
||||
shadow_size = 18
|
||||
fill = Color(0.54, 0.36, 0.15, 0.997)
|
||||
border = UI_OLD_BRONZE
|
||||
border_width = 14
|
||||
margin = 24
|
||||
shadow_size = 22
|
||||
"result_defeat_tablet":
|
||||
fill = Color(0.16, 0.055, 0.025, 0.997)
|
||||
fill = Color(0.13, 0.032, 0.014, 0.997)
|
||||
border = UI_SEAL_RED_DARK
|
||||
border_width = 12
|
||||
margin = 22
|
||||
shadow_size = 20
|
||||
border_width = 14
|
||||
margin = 24
|
||||
shadow_size = 24
|
||||
"command_seal":
|
||||
fill = Color(0.065, 0.020, 0.012, 0.992)
|
||||
border = UI_TARNISHED_BRONZE
|
||||
@@ -637,9 +638,9 @@ func _apply_control_font(control: Control, bold: bool = false) -> void:
|
||||
func _apply_button_style(button: Button, important: bool = false) -> void:
|
||||
if button == null:
|
||||
return
|
||||
var normal_fill := Color(0.30, 0.040, 0.026, 0.98) if important else Color(0.16, 0.085, 0.035, 0.96)
|
||||
var hover_fill := Color(0.38, 0.085, 0.040, 1.0) if important else Color(0.24, 0.13, 0.055, 1.0)
|
||||
var pressed_fill := Color(0.090, 0.035, 0.020, 1.0)
|
||||
var normal_fill := Color(0.36, 0.035, 0.020, 0.99) if important else Color(0.20, 0.095, 0.035, 0.98)
|
||||
var hover_fill := Color(0.46, 0.075, 0.035, 1.0) if important else Color(0.30, 0.16, 0.060, 1.0)
|
||||
var pressed_fill := Color(0.070, 0.024, 0.014, 1.0)
|
||||
button.add_theme_stylebox_override("normal", _make_button_style(normal_fill, UI_TARNISHED_BRONZE, 2))
|
||||
button.add_theme_stylebox_override("hover", _make_button_style(hover_fill, UI_OLD_BRONZE, 2))
|
||||
button.add_theme_stylebox_override("pressed", _make_button_style(pressed_fill, UI_OLD_BRONZE, 2))
|
||||
@@ -956,6 +957,24 @@ func _make_hanging_tassel(height: float = 262.0) -> VBoxContainer:
|
||||
return tassel
|
||||
|
||||
|
||||
func _make_screen_backdrop() -> ColorRect:
|
||||
var backdrop := ColorRect.new()
|
||||
backdrop.visible = false
|
||||
backdrop.set_anchors_preset(Control.PRESET_FULL_RECT)
|
||||
backdrop.color = Color(0.026, 0.014, 0.006, 0.64)
|
||||
backdrop.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
||||
return backdrop
|
||||
|
||||
|
||||
func _refresh_screen_backdrop_visibility() -> void:
|
||||
if screen_backdrop == null:
|
||||
return
|
||||
screen_backdrop.visible = (
|
||||
(briefing_panel != null and briefing_panel.visible)
|
||||
or (result_panel != null and result_panel.visible)
|
||||
)
|
||||
|
||||
|
||||
func _create_hud() -> void:
|
||||
var layer := CanvasLayer.new()
|
||||
add_child(layer)
|
||||
@@ -1018,7 +1037,7 @@ func _create_hud() -> void:
|
||||
objective_notice_panel = PanelContainer.new()
|
||||
objective_notice_panel.visible = false
|
||||
objective_notice_panel.position = Vector2(338, 88)
|
||||
objective_notice_panel.size = Vector2(604, 128)
|
||||
objective_notice_panel.size = Vector2(604, 154)
|
||||
objective_notice_panel.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
||||
_apply_panel_style(objective_notice_panel, "notice_edict")
|
||||
root.add_child(objective_notice_panel)
|
||||
@@ -1033,7 +1052,7 @@ func _create_hud() -> void:
|
||||
objective_notice_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||
objective_notice_label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER
|
||||
objective_notice_label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
|
||||
objective_notice_label.custom_minimum_size = Vector2(548, 54)
|
||||
objective_notice_label.custom_minimum_size = Vector2(548, 80)
|
||||
_apply_label_style(objective_notice_label, UI_AGED_INK, 15)
|
||||
objective_notice_column.add_child(objective_notice_label)
|
||||
objective_notice_column.add_child(_make_scroll_rod(548, 3))
|
||||
@@ -1361,6 +1380,9 @@ func _create_hud() -> void:
|
||||
log_box.add_theme_stylebox_override("normal", _make_panel_style(Color(0.11, 0.07, 0.045, 0.78), UI_RICE_PAPER_DARK, 1, 1, 6, 0))
|
||||
side_column.add_child(log_box)
|
||||
|
||||
screen_backdrop = _make_screen_backdrop()
|
||||
root.add_child(screen_backdrop)
|
||||
|
||||
briefing_panel = PanelContainer.new()
|
||||
briefing_panel.visible = false
|
||||
briefing_panel.position = Vector2(212, 16)
|
||||
@@ -1406,7 +1428,7 @@ func _create_hud() -> void:
|
||||
briefing_column.add_child(briefing_location_label)
|
||||
|
||||
briefing_column.add_child(_make_scroll_rod(680, 5))
|
||||
briefing_column.add_child(_make_section_caption("軍令 · 勝敗之條", 680))
|
||||
briefing_column.add_child(_make_section_caption("軍令 · 勝敗條目", 680))
|
||||
|
||||
briefing_objective_panel = PanelContainer.new()
|
||||
briefing_objective_panel.custom_minimum_size = Vector2(680, 104)
|
||||
@@ -1430,7 +1452,7 @@ func _create_hud() -> void:
|
||||
briefing_objective_row.add_child(_make_bamboo_gutter(18, 84))
|
||||
|
||||
briefing_column.add_child(_make_ink_wash_rule(680, 8))
|
||||
briefing_column.add_child(_make_section_caption("戰圖 · 軍幕 장계", 680))
|
||||
briefing_column.add_child(_make_section_caption("戰圖 · 軍幕奏報", 680))
|
||||
|
||||
briefing_camp_overview_panel = PanelContainer.new()
|
||||
briefing_camp_overview_panel.custom_minimum_size = Vector2(680, 108)
|
||||
@@ -1694,7 +1716,7 @@ func _create_hud() -> void:
|
||||
save_action_row.add_child(manual_load_button)
|
||||
|
||||
var begin_button := Button.new()
|
||||
begin_button.text = "전장도 펼치기"
|
||||
begin_button.text = "전장도 개봉"
|
||||
begin_button.pressed.connect(_on_begin_battle_pressed)
|
||||
briefing_column.add_child(begin_button)
|
||||
|
||||
@@ -1806,14 +1828,14 @@ func _create_hud() -> void:
|
||||
dialogue_control_row.add_child(dialogue_progress_label)
|
||||
|
||||
dialogue_previous_button = Button.new()
|
||||
dialogue_previous_button.text = "앞 죽간"
|
||||
dialogue_previous_button.text = "前簡"
|
||||
dialogue_previous_button.disabled = true
|
||||
dialogue_previous_button.custom_minimum_size = Vector2(88, 32)
|
||||
dialogue_previous_button.pressed.connect(_retreat_dialogue)
|
||||
dialogue_control_row.add_child(dialogue_previous_button)
|
||||
|
||||
dialogue_continue_button = Button.new()
|
||||
dialogue_continue_button.text = "뒤 죽간"
|
||||
dialogue_continue_button.text = "次簡"
|
||||
dialogue_continue_button.custom_minimum_size = Vector2(120, 32)
|
||||
dialogue_continue_button.pressed.connect(_advance_dialogue)
|
||||
dialogue_control_row.add_child(dialogue_continue_button)
|
||||
@@ -1834,7 +1856,7 @@ func _create_hud() -> void:
|
||||
|
||||
result_seal_ribbon = _make_seal_ribbon(520, 18)
|
||||
result_column.add_child(result_seal_ribbon)
|
||||
result_column.add_child(_make_section_caption("戰功 조서", 520))
|
||||
result_column.add_child(_make_section_caption("軍功 · 勝敗奏牘", 520))
|
||||
|
||||
var result_body_panel := PanelContainer.new()
|
||||
result_body_panel.custom_minimum_size = Vector2(520, 236)
|
||||
@@ -1869,7 +1891,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)
|
||||
|
||||
@@ -3811,7 +3833,7 @@ func _format_objective_hud_text() -> String:
|
||||
if not defeat.is_empty():
|
||||
lines.append("敗兆|墨戒 %s" % defeat)
|
||||
if lines.is_empty():
|
||||
return "勝令"
|
||||
return "勝令|待詔"
|
||||
return _join_strings(lines, "\n")
|
||||
|
||||
|
||||
@@ -4007,24 +4029,18 @@ func _format_mission_panel_text() -> String:
|
||||
var lines := []
|
||||
var victory := str(state.objectives.get("victory", ""))
|
||||
if not victory.is_empty():
|
||||
lines.append("勝令")
|
||||
lines.append(" 令牌|%s" % victory)
|
||||
_append_edict_clause(lines, "勝令", "令牌", victory)
|
||||
var defeat := str(state.objectives.get("defeat", ""))
|
||||
if not defeat.is_empty():
|
||||
lines.append("敗兆")
|
||||
lines.append(" 戒牌|%s" % defeat)
|
||||
_append_edict_clause(lines, "敗兆", "戒牌", 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)
|
||||
_append_edict_clause(lines, "戰功", "功簿", _join_strings(progress_lines, " · "))
|
||||
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)
|
||||
_append_edict_clause(lines, "凶兆", "凶簡", _join_strings(risk_lines, " · "))
|
||||
if lines.is_empty():
|
||||
return "아직 봉인된 군령이 없습니다."
|
||||
return "軍令\n 待詔|아직 봉인된 군령이 없습니다."
|
||||
return _join_strings(lines, "\n")
|
||||
|
||||
|
||||
@@ -4404,15 +4420,18 @@ func _update_result_panel() -> void:
|
||||
campaign_state.campaign_title,
|
||||
campaign_state.gold
|
||||
]
|
||||
_refresh_screen_backdrop_visibility()
|
||||
return
|
||||
if state.battle_status == BattleState.STATUS_VICTORY:
|
||||
if _try_show_post_battle_dialogue():
|
||||
_clear_result_choices()
|
||||
result_panel.visible = false
|
||||
_refresh_screen_backdrop_visibility()
|
||||
return
|
||||
if _is_dialogue_visible():
|
||||
_clear_result_choices()
|
||||
result_panel.visible = false
|
||||
_refresh_screen_backdrop_visibility()
|
||||
return
|
||||
_apply_battle_result_once()
|
||||
_apply_panel_style(result_panel, "result_victory_tablet")
|
||||
@@ -4439,17 +4458,22 @@ func _update_result_panel() -> void:
|
||||
result_restart_button.visible = true
|
||||
if next_battle_button != null:
|
||||
next_battle_button.visible = false
|
||||
_refresh_screen_backdrop_visibility()
|
||||
|
||||
|
||||
func _format_victory_result_text() -> String:
|
||||
return "大勝 조서\n受命 勝令\n %s\n%s" % [
|
||||
state.objectives.get("victory", ""),
|
||||
_format_battle_result_summary()
|
||||
]
|
||||
var lines := ["凱旋 勝牘"]
|
||||
_append_edict_clause(lines, "受命 勝令", "朱批", str(state.objectives.get("victory", "")))
|
||||
var summary := _format_battle_result_summary()
|
||||
if not summary.is_empty():
|
||||
lines.append(summary)
|
||||
return _join_strings(lines, "\n")
|
||||
|
||||
|
||||
func _format_defeat_result_text() -> String:
|
||||
return "敗軍 비문\n戒懼 敗兆\n %s" % state.objectives.get("defeat", "")
|
||||
var lines := ["敗軍 碑牘"]
|
||||
_append_edict_clause(lines, "戒懼 敗兆", "墨戒", str(state.objectives.get("defeat", "")))
|
||||
return _join_strings(lines, "\n")
|
||||
|
||||
|
||||
func _on_state_changed() -> void:
|
||||
@@ -4495,11 +4519,11 @@ func _format_hanja_number(value: int) -> String:
|
||||
|
||||
|
||||
func _on_objective_updated(victory: String, defeat: String) -> void:
|
||||
var notice_lines := ["新詔 軍令 봉인"]
|
||||
var notice_lines := ["急詔 軍令改封"]
|
||||
if not victory.is_empty():
|
||||
notice_lines.append("勝令|朱批 %s" % victory)
|
||||
_append_edict_clause(notice_lines, "勝令", "朱批", victory)
|
||||
if not defeat.is_empty():
|
||||
notice_lines.append("敗兆|墨戒 %s" % defeat)
|
||||
_append_edict_clause(notice_lines, "敗兆", "墨戒", defeat)
|
||||
if objective_notice_label != null:
|
||||
objective_notice_label.text = "\n".join(notice_lines)
|
||||
if objective_notice_panel != null:
|
||||
@@ -4837,7 +4861,7 @@ func _render_dialogue_line() -> void:
|
||||
var display_speaker := _localized_speaker_name(str(line.get("display_speaker", speaker)))
|
||||
var side := _normalized_dialogue_side(line.get("side", "left"))
|
||||
_apply_dialogue_side(side)
|
||||
dialogue_speaker_label.text = display_speaker
|
||||
dialogue_speaker_label.text = "%s 曰" % display_speaker if not display_speaker.is_empty() else ""
|
||||
dialogue_speaker_label.visible = not display_speaker.is_empty()
|
||||
dialogue_text_label.text = _format_dialogue_body_text(str(line.get("text", "")))
|
||||
_update_dialogue_portrait(display_speaker, str(line.get("portrait", "")))
|
||||
@@ -4852,8 +4876,8 @@ func _format_dialogue_body_text(text: String) -> String:
|
||||
if stripped.is_empty():
|
||||
return ""
|
||||
if stripped.begins_with("「") or stripped.begins_with("『"):
|
||||
return stripped
|
||||
return "「%s」" % stripped
|
||||
return "墨書\n %s" % stripped
|
||||
return "墨書\n 「%s」" % stripped
|
||||
|
||||
|
||||
func _update_dialogue_controls() -> void:
|
||||
@@ -4864,7 +4888,7 @@ func _update_dialogue_controls() -> void:
|
||||
]
|
||||
if dialogue_previous_button != null:
|
||||
dialogue_previous_button.disabled = active_dialogue_index <= 0
|
||||
dialogue_continue_button.text = "두루마리 봉함" if active_dialogue_index >= active_dialogue_lines.size() - 1 else "뒤 죽간"
|
||||
dialogue_continue_button.text = "封緘" if active_dialogue_index >= active_dialogue_lines.size() - 1 else "次簡"
|
||||
|
||||
|
||||
func _apply_dialogue_side(side: String) -> void:
|
||||
@@ -5254,32 +5278,32 @@ func _format_briefing_chapter_battle_text(briefing: Dictionary) -> String:
|
||||
return title
|
||||
|
||||
|
||||
func _append_edict_clause(lines: Array, heading: String, seal: String, text: String) -> void:
|
||||
var body := text.strip_edges()
|
||||
if body.is_empty():
|
||||
return
|
||||
lines.append(heading)
|
||||
lines.append(" %s|%s" % [seal, body])
|
||||
|
||||
|
||||
func _format_briefing_objectives() -> String:
|
||||
var text := ""
|
||||
var lines := []
|
||||
var victory := str(state.objectives.get("victory", ""))
|
||||
if not victory.is_empty():
|
||||
text = "受命 勝令\n 朱批|%s" % victory
|
||||
_append_edict_clause(lines, "受命 勝令", "朱批", victory)
|
||||
var defeat := str(state.objectives.get("defeat", ""))
|
||||
if not defeat.is_empty():
|
||||
if not text.is_empty():
|
||||
text += "\n"
|
||||
text += "戒懼 敗兆\n 墨戒|%s" % defeat
|
||||
_append_edict_clause(lines, "戒懼 敗兆", "墨戒", 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, " · ")
|
||||
_append_edict_clause(lines, "驗功 戰功", "功簿", _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, " · ")
|
||||
_append_edict_clause(lines, "不祥 凶兆", "凶簡", _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
|
||||
return text
|
||||
_append_edict_clause(lines, "封賞 戰利", "封賞", rewards_text)
|
||||
return _join_strings(lines, "\n")
|
||||
|
||||
|
||||
func _format_briefing_rewards() -> String:
|
||||
@@ -5327,7 +5351,7 @@ func _format_briefing_camp_overview_text(briefing: Dictionary, prep_locked: bool
|
||||
var lines := []
|
||||
var location := str(briefing.get("location", "")).strip_edges()
|
||||
if not location.is_empty():
|
||||
lines.append("地勢 %s" % location)
|
||||
lines.append("地勢|%s" % location)
|
||||
var camp_parts := ["軍資 %d냥" % campaign_state.gold]
|
||||
var talk_text := _format_briefing_talk_overview_text()
|
||||
if not talk_text.is_empty():
|
||||
@@ -5336,7 +5360,7 @@ func _format_briefing_camp_overview_text(briefing: Dictionary, prep_locked: bool
|
||||
if not shop_text.is_empty():
|
||||
camp_parts.append(shop_text)
|
||||
if not camp_parts.is_empty():
|
||||
lines.append("軍幕 %s" % _join_strings(camp_parts, " · "))
|
||||
lines.append("軍幕|%s" % _join_strings(camp_parts, " · "))
|
||||
var prep_parts := []
|
||||
var roster_text := _format_briefing_roster_overview_text()
|
||||
if not roster_text.is_empty():
|
||||
@@ -5347,9 +5371,9 @@ func _format_briefing_camp_overview_text(briefing: Dictionary, prep_locked: bool
|
||||
if not state.get_controllable_player_units().is_empty():
|
||||
prep_parts.append("兵藏 비축")
|
||||
if not prep_parts.is_empty():
|
||||
lines.append("軍備 %s" % _join_strings(prep_parts, " · "))
|
||||
lines.append("軍備|%s" % _join_strings(prep_parts, " · "))
|
||||
if prep_locked:
|
||||
lines.append("封印 회상 두루마리 봉인")
|
||||
lines.append("封印|회상 두루마리 봉인")
|
||||
return _join_strings(lines, "\n")
|
||||
|
||||
|
||||
@@ -5436,6 +5460,7 @@ func _show_briefing() -> void:
|
||||
briefing_objective_label.visible = not briefing_objective_label.text.is_empty()
|
||||
briefing_label.text = body
|
||||
briefing_panel.visible = true
|
||||
_refresh_screen_backdrop_visibility()
|
||||
battle_started = false
|
||||
var prep_locked := _is_prebattle_prep_locked()
|
||||
_update_briefing_camp_overview(briefing, prep_locked)
|
||||
@@ -5473,6 +5498,7 @@ func _start_battle_from_briefing() -> void:
|
||||
_play_bgm("battle")
|
||||
if briefing_panel != null:
|
||||
briefing_panel.visible = false
|
||||
_refresh_screen_backdrop_visibility()
|
||||
_hide_chapter_menu()
|
||||
_hide_shop_menu()
|
||||
_hide_talk_menu()
|
||||
|
||||
Reference in New Issue
Block a user