diff --git a/scripts/scenes/battle_scene.gd b/scripts/scenes/battle_scene.gd index 2687227..68e45db 100644 --- a/scripts/scenes/battle_scene.gd +++ b/scripts/scenes/battle_scene.gd @@ -179,12 +179,12 @@ const HUD_UNIT_PORTRAIT_SEAL_SIZE := Vector2(26, 26) const HUD_UNIT_PORTRAIT_CLASS_PANEL_SIZE := Vector2(30, 30) const HUD_UNIT_PORTRAIT_CLASS_ICON_SIZE := Vector2(24, 24) const HUD_UNIT_RESOURCE_ICON_SIZE := Vector2(16, 16) -const TOP_HUD_CHIP_ICON_SIZE := Vector2(28, 28) +const TOP_HUD_CHIP_ICON_SIZE := Vector2(30, 30) const SIDE_INFO_CHIP_ICON_SIZE := Vector2(26, 26) const HUD_COMMAND_GRID_SIZE := Vector2(420, 46) const HUD_COMMAND_BUTTON_SIZE := Vector2(72, 42) const HUD_COMMAND_GRID_COLUMNS := 4 -const TOP_TOOL_BUTTON_SIZE := Vector2(42, 42) +const TOP_TOOL_BUTTON_SIZE := Vector2(46, 46) const PREP_MENU_BUTTON_SIZE := Vector2(48, 38) const BATTLE_UNIT_LIST_PANEL_SIZE := Vector2(420, 360) const BATTLE_UNIT_LIST_ROW_SIZE := Vector2(372, 58) @@ -2499,7 +2499,7 @@ func _create_hud() -> void: var top_bar := PanelContainer.new() top_bar.position = Vector2(24, 14) - top_bar.size = Vector2(1232, 72) + top_bar.size = Vector2(1232, 76) _apply_panel_style(top_bar, "compact") root.add_child(top_bar) @@ -2551,7 +2551,7 @@ func _create_hud() -> void: var top_tool_row := HBoxContainer.new() top_tool_row.name = "TopToolBar" - top_tool_row.custom_minimum_size = Vector2(378, 48) + top_tool_row.custom_minimum_size = Vector2(410, 50) top_tool_row.add_theme_constant_override("separation", 5) top_row.add_child(top_tool_row) @@ -9085,18 +9085,12 @@ func _unit_ai_behavior_text(unit: Dictionary) -> String: return "" var behavior := str(unit.get("ai_behavior", "")).strip_edges().to_lower() if behavior == "guard": - var guard_anchor: Vector2i = unit.get("ai_guard_anchor", unit.get("pos", Vector2i(-1, -1))) var guard_radius := int(unit.get("ai_guard_radius", 0)) - if not state.is_inside(guard_anchor): - return "수비: 거점 경계" - return "수비: 거점 %d,%d 반경 %d" % [guard_anchor.x + 1, guard_anchor.y + 1, guard_radius] + return "수비: 거점 경계 반경 %d" % guard_radius if behavior == "sentry": - var sentry_anchor: Vector2i = unit.get("ai_sentry_anchor", unit.get("pos", Vector2i(-1, -1))) var sentry_radius := int(unit.get("ai_sentry_radius", 0)) var wake_text := "기상" if bool(unit.get("ai_awake", false)) else "대기" - if not state.is_inside(sentry_anchor): - return "초병: %s" % wake_text - return "초병: %s %d,%d 반경 %d" % [wake_text, sentry_anchor.x + 1, sentry_anchor.y + 1, sentry_radius] + return "초병: 유인선 %s 반경 %d" % [wake_text, sentry_radius] return "" @@ -9104,9 +9098,7 @@ func _unit_current_terrain_text(unit: Dictionary) -> String: var cell: Vector2i = unit.get("pos", Vector2i(-1, -1)) if not state.is_inside(cell): return "" - var text := "지형 %d,%d %s 행군 %d 방비 +%d 회피 +%d%%" % [ - cell.x + 1, - cell.y + 1, + var text := "지형: %s 행군 %d 방비 +%d 회피 +%d%%" % [ _terrain_display_name(state.get_terrain_name(cell)), state.get_move_cost(cell, str(unit.get("move_type", "foot"))), state.get_terrain_defense(cell), diff --git a/tools/smoke_visual_assets.gd b/tools/smoke_visual_assets.gd index a14b540..e932838 100644 --- a/tools/smoke_visual_assets.gd +++ b/tools/smoke_visual_assets.gd @@ -3249,13 +3249,13 @@ func _check_hud_focus_text(failures: Array[String]) -> void: failures.append("Cao Cao HUD focus should expose facing direction: %s" % cao_text) if not cao_text.contains("군령:") or not cao_text.contains("행군") or not cao_text.contains("타격") or not cao_text.contains("책략") or not cao_text.contains("병장") or not cao_text.contains("대기"): failures.append("Cao Cao HUD focus should summarize available actions: %s" % cao_text) - if not cao_text.contains("지형 2,7"): - failures.append("Cao Cao HUD focus should include current tile: %s" % cao_text) + if not cao_text.contains("지형:") or cao_text.contains("2,7"): + failures.append("Cao Cao HUD focus should include terrain effects without raw coordinates: %s" % cao_text) if not cao_text.contains("행군 1"): failures.append("Cao Cao HUD focus should include terrain move cost: %s" % cao_text) if not cao_text.contains("방비 +0"): failures.append("Cao Cao HUD focus should include terrain defense: %s" % cao_text) - if not cao_summary.contains("군기: 조조") or cao_summary.contains("병력") or cao_summary.contains("기력") or cao_summary.contains("무위") or cao_summary.contains("지형 2,7"): + if not cao_summary.contains("군기: 조조") or cao_summary.contains("병력") or cao_summary.contains("기력") or cao_summary.contains("무위") or cao_summary.contains("지형"): failures.append("Cao Cao visible HUD summary should leave resource/detail text to bars and tooltip: %s" % cao_summary) scene._create_hud() scene.battle_started = true @@ -3324,8 +3324,8 @@ func _check_hud_focus_text(failures: Array[String]) -> void: failures.append("Archer terrain text should reflect its current hill tile") var guard: Dictionary = scene.state.get_unit("yellow_turban_7") var guard_text := scene._format_unit_focus_text(guard, "Hover") - if not guard_text.contains("수비: 거점 20,3 반경 3"): - failures.append("Guard HUD focus should describe the defended zone: %s" % guard_text) + if not guard_text.contains("수비: 거점 경계 반경 3") or guard_text.contains("20,3"): + failures.append("Guard HUD focus should describe the defended zone without raw coordinates: %s" % guard_text) if scene._recovery_marker_text(Vector2i(6, 5)) != "+6": failures.append("Village recovery marker should show healing amount") if scene._recovery_marker_text(Vector2i(20, 1)) != "+8":