Refine victory result summary

This commit is contained in:
2026-06-18 13:35:28 +09:00
parent 0bd84d50bc
commit c42d4dd4a7
7 changed files with 162 additions and 36 deletions

View File

@@ -680,8 +680,8 @@ func _create_hud() -> void:
result_panel = PanelContainer.new()
result_panel.visible = false
result_panel.position = Vector2(300, 182)
result_panel.size = Vector2(500, 340)
result_panel.position = Vector2(280, 156)
result_panel.size = Vector2(560, 420)
root.add_child(result_panel)
var result_column := VBoxContainer.new()
@@ -689,10 +689,10 @@ func _create_hud() -> void:
result_panel.add_child(result_column)
result_label = Label.new()
result_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
result_label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER
result_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_LEFT
result_label.vertical_alignment = VERTICAL_ALIGNMENT_TOP
result_label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
result_label.custom_minimum_size = Vector2(460, 176)
result_label.custom_minimum_size = Vector2(520, 236)
result_column.add_child(result_label)
result_choice_list = VBoxContainer.new()
@@ -3447,6 +3447,12 @@ func _format_post_battle_choice_reward_text(choice: Dictionary) -> String:
var items: Array = choice.get("items", [])
if not items.is_empty():
parts.append(_format_reward_items(items))
var joined_text := _format_officer_id_list(choice.get("join_officers", []))
if not joined_text.is_empty():
parts.append("Join %s" % joined_text)
var left_text := _format_officer_id_list(choice.get("leave_officers", []))
if not left_text.is_empty():
parts.append("Leave %s" % left_text)
return _join_strings(parts, ", ")
@@ -3502,50 +3508,64 @@ func _format_battle_result_summary() -> String:
return ""
if battle_result_summary.get("pending_choice", false):
var pending_next := str(battle_result_summary.get("next_scenario_title", ""))
var pending_text := "Campaign choice pending.\nCampaign saved."
var pending_text := "Campaign\n Saved\nChoice\n Select a campaign response."
if not pending_next.is_empty():
pending_text += "\nNext: %s" % pending_next
pending_text += "\nNext\n %s" % pending_next
return pending_text
if battle_result_summary.get("already_completed", false):
var already_saved := "Campaign unchanged." if battle_result_summary.get("saved", false) else "Campaign replay failed."
var already_next := str(battle_result_summary.get("next_scenario_title", ""))
if already_next.is_empty():
return "Rewards already claimed.\n%s" % already_saved
return "Rewards already claimed.\nNext: %s\n%s" % [already_next, already_saved]
var replay_lines := [
"Rewards\n Already claimed",
"Campaign\n %s" % already_saved
]
if not already_next.is_empty():
replay_lines.append("Next\n %s" % already_next)
return _join_strings(replay_lines, "\n")
var items: Array = battle_result_summary.get("items", [])
var item_text := _format_reward_items(items)
var joined_text := ""
var reward_lines := []
if bool(battle_result_summary.get("rewards_applied", false)):
var gold_reward := int(battle_result_summary.get("gold", 0))
if gold_reward > 0:
reward_lines.append("Gold +%d" % gold_reward)
if item_text != "none":
reward_lines.append("Items: %s" % item_text)
else:
reward_lines.append("Not applied")
var roster_lines := []
var joined_officers: Array = battle_result_summary.get("joined_officers", [])
if not joined_officers.is_empty():
joined_text = "\nJoined: %s" % _format_officer_id_list(joined_officers)
var left_text := ""
roster_lines.append("Joined: %s" % _format_officer_id_list(joined_officers))
var left_officers: Array = battle_result_summary.get("left_officers", [])
if not left_officers.is_empty():
left_text = "\nLeft: %s" % _format_officer_id_list(left_officers)
var progression_text := _format_progression_events(battle_result_summary.get("progression_events", []))
roster_lines.append("Left: %s" % _format_officer_id_list(left_officers))
var sections := [
"Rewards\n %s" % _join_strings(reward_lines, "\n ")
]
if not roster_lines.is_empty():
sections.append("Roster\n %s" % _join_strings(roster_lines, "\n "))
var progression_text := _format_progression_events(battle_result_summary.get("progression_events", []))
if not progression_text.is_empty():
sections.append("Growth\n %s" % progression_text)
var saved_text := "Campaign saved." if battle_result_summary.get("saved", false) else "Campaign save failed."
var next_text := "Campaign complete."
var next_title := str(battle_result_summary.get("next_scenario_title", ""))
if not next_title.is_empty():
next_text = "Next: %s" % next_title
var choice_text := ""
if not bool(battle_result_summary.get("choice_applied", true)):
choice_text = "\nChoose a campaign response."
elif not str(battle_result_summary.get("choice_label", "")).is_empty():
choice_text = "\nChoice: %s" % str(battle_result_summary.get("choice_label", ""))
return "Rewards: %d gold, %s%s%s%s\nTotal gold: %d\n%s\n%s%s" % [
battle_result_summary.get("gold", 0),
item_text,
joined_text,
left_text,
progression_text,
sections.append("Campaign\n Total gold: %d\n %s\n %s" % [
campaign_state.gold,
saved_text,
next_text,
choice_text
]
next_text
])
if not bool(battle_result_summary.get("choice_applied", true)):
sections.append("Choice\n Select a campaign response.")
elif not str(battle_result_summary.get("choice_label", "")).is_empty():
sections.append("Choice\n %s" % str(battle_result_summary.get("choice_label", "")))
return _join_strings(sections, "\n")
func _format_progression_events(events) -> String:
@@ -3569,7 +3589,7 @@ func _format_progression_events(events) -> String:
parts.append("+%d more" % hidden_count)
if parts.is_empty():
return ""
return "\nProgress: %s" % _join_strings(parts, "; ")
return _join_strings(parts, "; ")
func _format_inventory_status_text() -> String: