Clarify opening and battle start cues

This commit is contained in:
2026-06-20 14:07:16 +09:00
parent 7fb27f29fc
commit 6f92f832cf
3 changed files with 70 additions and 4 deletions

View File

@@ -23,6 +23,7 @@ func _init() -> void:
_check_minimap_navigation_contract(failures)
_check_map_focus_contract(failures)
_check_battle_presentation_sequence_contract(failures)
_check_battle_start_notice_sequence(failures)
_check_readability_contract(failures)
_check_korean_fallback_labels(failures)
_check_dialogue_localization_and_side(failures)
@@ -550,6 +551,33 @@ func _check_battle_presentation_sequence_contract(failures: Array[String]) -> vo
scene.free()
func _check_battle_start_notice_sequence(failures: Array[String]) -> void:
var scene = BattleSceneScript.new()
scene._ready()
scene._load_scenario("001_yellow_turbans")
scene._show_briefing()
scene._start_battle_from_briefing()
if not scene._is_dialogue_visible():
failures.append("opening battle should begin with contextual dialogue before command notices")
if scene.objective_notice_label != null and scene.objective_notice_label.text.contains("전투 개시"):
failures.append("battle start notice should wait until opening dialogue is closed")
var guard := 0
while scene._is_dialogue_visible() and guard < 12:
scene._advance_dialogue()
guard += 1
if scene._is_dialogue_visible():
failures.append("opening battle dialogue should be advanceable during start notice test")
if scene.objective_notice_panel == null or not scene.objective_notice_panel.visible:
failures.append("battle start should show a compact tactical command notice after dialogue")
elif scene.objective_notice_label == null or not scene.objective_notice_label.text.contains("전투 개시"):
failures.append("battle start notice should use a clear Korean title: %s" % ("" if scene.objective_notice_label == null else scene.objective_notice_label.text))
elif not scene.objective_notice_label.text.contains("목표:") or not scene.objective_notice_label.text.contains("주의:"):
failures.append("battle start notice should summarize objective and risk: %s" % scene.objective_notice_label.text)
if scene.objective_notice_icon_strip == null or scene.objective_notice_icon_strip.get_child_count() < 2:
failures.append("battle start notice should use generated objective and warning icons")
scene.free()
func _check_readability_contract(failures: Array[String]) -> void:
var scene = BattleSceneScript.new()
scene._create_hud()

View File

@@ -259,6 +259,8 @@ func _check_title_menu_start_load_and_settings(failures: Array[String]) -> void:
failures.append("opening story beat artwork should stay readable in the strip: %s" % str(beat_image.custom_minimum_size))
if beat_label == null or beat_label.text.strip_edges().is_empty():
failures.append("opening story beat card should name its scene")
elif beat_label.get_theme_color("font_color").get_luminance() < 0.66 or beat_label.get_theme_constant("outline_size") < 3:
failures.append("opening story beat label should remain readable over generated artwork: %s" % beat_label.text)
if bool(card_node.get_meta("current_story_beat", false)):
current_count += 1
current_index = opening_story_cards.find(opening_story_card) + 1