diff --git a/README.md b/README.md index b209d74..5ec3b67 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ Godot 4 tactical RPG prototype inspired by classic turn-based Romance of the Thr - Pre-battle Formation lets deployed officers swap starting positions inside scenario-defined cells, with portrait rows, readable zone badges, and hover placement instructions. - Pre-battle briefing shows the campaign chapter, chapter battle number, location, victory/defeat summary, and first-clear reward preview. - Pre-battle prep commands use compact icon buttons with active selection state and Korean hover labels for chapters, shop, talks, armory, roster, formation, and save records. -- Core UI panels now use a calmer ink/wood/jade palette with restrained rounded corners instead of the earlier yellow, hard-edged frame treatment. +- Core UI panels now use a calmer ink/wood/jade palette with softer rounded corners and lighter button frames instead of the earlier yellow, hard-edged frame treatment. - Pre-battle Chapters overview shows story-arc progress with map thumbnail rows, compact status badges, hover details, and can open completed or current battles. - Pre-battle Save menu can write and load one manual campaign checkpoint separate from the automatic save, using compact seal-style slot rows and hover checkpoint details. - The title screen exposes Start, Load, and Settings, and Load now lets the player choose between the automatic record and the manual checkpoint. diff --git a/scripts/scenes/battle_scene.gd b/scripts/scenes/battle_scene.gd index e412e3e..af73971 100644 --- a/scripts/scenes/battle_scene.gd +++ b/scripts/scenes/battle_scene.gd @@ -710,7 +710,7 @@ func _apply_panel_style(panel: PanelContainer, variant: String) -> void: var fill := UI_DARK_LACQUER var border := UI_TARNISHED_BRONZE var border_width := 3 - var radius := 6 + var radius := 10 var margin := 10 var shadow_size := 6 match variant: @@ -718,142 +718,142 @@ func _apply_panel_style(panel: PanelContainer, variant: String) -> void: fill = Color(0.34, 0.32, 0.27, 0.997) border = UI_LACQUER_EDGE border_width = 15 - radius = 8 + radius = 12 margin = 24 shadow_size = 24 "edict": fill = Color(0.56, 0.54, 0.47, 0.998) border = UI_BRUSH_RULE border_width = 8 - radius = 7 + radius = 11 margin = 18 shadow_size = 12 "edict_compact": fill = Color(0.40, 0.39, 0.33, 0.996) border = UI_BRUSH_RULE border_width = 3 - radius = 5 + radius = 8 margin = 6 shadow_size = 4 "notice_edict": fill = Color(0.42, 0.40, 0.34, 0.998) border = UI_LACQUER_EDGE border_width = 7 - radius = 7 + radius = 11 margin = 14 shadow_size = 14 "seal": fill = Color(0.080, 0.030, 0.022, 1.0) border = UI_TARNISHED_BRONZE border_width = 4 - radius = 6 + radius = 10 margin = 10 "speaker_seal": fill = Color(0.26, 0.035, 0.030, 0.995) border = UI_TARNISHED_BRONZE border_width = 3 - radius = 6 + radius = 10 margin = 9 "portrait": fill = UI_LACQUER_EDGE border = UI_TARNISHED_BRONZE border_width = 4 - radius = 7 + radius = 10 margin = 3 "dialogue": fill = Color(0.045, 0.045, 0.040, 0.982) border = Color(0.18, 0.17, 0.14, 1.0) border_width = 8 - radius = 8 + radius = 12 margin = 20 shadow_size = 18 "speech_scroll": fill = Color(0.58, 0.55, 0.48, 0.996) border = Color(0.13, 0.12, 0.10, 0.98) border_width = 5 - radius = 7 + radius = 11 margin = 15 shadow_size = 6 "hud_info": fill = Color(0.045, 0.050, 0.048, 0.90) border = Color(0.20, 0.24, 0.21, 0.96) border_width = 2 - radius = 6 + radius = 9 margin = 7 shadow_size = 3 "target_hint": fill = Color(0.050, 0.070, 0.062, 0.94) border = UI_JADE_EDGE border_width = 3 - radius = 7 + radius = 10 margin = 9 shadow_size = 6 "notice": fill = Color(0.080, 0.030, 0.025, 0.982) border = UI_SEAL_RED border_width = 3 - radius = 6 + radius = 10 margin = 9 "map": fill = Color(0.052, 0.052, 0.046, 1.0) border = UI_INK_WASH border_width = 4 - radius = 6 + radius = 10 margin = 4 "silk_map": fill = Color(0.32, 0.31, 0.25, 0.995) border = UI_BRUSH_RULE border_width = 5 - radius = 7 + radius = 11 margin = 10 shadow_size = 10 "compact": fill = Color(0.045, 0.048, 0.044, 0.93) border = UI_TARNISHED_BRONZE border_width = 3 - radius = 7 + radius = 10 margin = 8 shadow_size = 8 "bamboo_slips": fill = Color(0.28, 0.23, 0.17, 0.992) border = UI_BRUSH_RULE border_width = 4 - radius = 6 + radius = 9 margin = 10 shadow_size = 6 "caption": fill = Color(0.060, 0.050, 0.044, 0.988) border = UI_TARNISHED_BRONZE border_width = 2 - radius = 5 + radius = 8 margin = 5 shadow_size = 2 "result_tablet": fill = Color(0.30, 0.27, 0.22, 0.997) border = UI_LACQUER_EDGE border_width = 11 - radius = 8 + radius = 12 margin = 24 shadow_size = 24 "result_victory_tablet": fill = Color(0.27, 0.34, 0.28, 0.997) border = UI_JADE_EDGE border_width = 10 - radius = 8 + radius = 12 margin = 24 shadow_size = 22 "result_defeat_tablet": fill = Color(0.10, 0.035, 0.028, 0.997) border = UI_SEAL_RED_DARK border_width = 10 - radius = 8 + radius = 12 margin = 24 shadow_size = 24 "command_seal": fill = Color(0.050, 0.045, 0.040, 0.992) border = UI_TARNISHED_BRONZE border_width = 3 - radius = 7 + radius = 10 margin = 10 shadow_size = 9 _: @@ -864,11 +864,9 @@ func _apply_panel_style(panel: PanelContainer, variant: String) -> void: func _make_button_style(fill: Color, border: Color, border_width: int) -> StyleBoxFlat: - var style := _make_panel_style(fill, border, border_width, 6, 10, 0) - style.set_border_width(SIDE_TOP, border_width + 2) - style.set_border_width(SIDE_BOTTOM, border_width + 2) - style.set_border_width(SIDE_LEFT, border_width + 1) - style.set_border_width(SIDE_RIGHT, border_width + 1) + var style := _make_panel_style(fill, border, border_width, 9, 10, 0) + style.set_border_width(SIDE_TOP, border_width + 1) + style.set_border_width(SIDE_BOTTOM, border_width + 1) return style @@ -1130,7 +1128,7 @@ func _make_hud_unit_badge( panel.tooltip_text = tooltip panel.add_theme_stylebox_override( "panel", - _make_panel_style(fill_color, fill_color.lightened(0.34), 1, 2, 2, 0) + _make_panel_style(fill_color, fill_color.lightened(0.34), 1, 4, 2, 0) ) if not icon_kind.strip_edges().is_empty(): var icon := TextureRect.new() @@ -1762,7 +1760,7 @@ func _make_seal_tile(text: String, size: float = 24.0) -> PanelContainer: var panel := PanelContainer.new() panel.custom_minimum_size = Vector2(size, size) panel.mouse_filter = Control.MOUSE_FILTER_IGNORE - panel.add_theme_stylebox_override("panel", _make_panel_style(UI_SEAL_RED_DARK, UI_OLD_BRONZE, 2, 0, 3, 0)) + panel.add_theme_stylebox_override("panel", _make_panel_style(UI_SEAL_RED_DARK, UI_OLD_BRONZE, 2, 8, 3, 0)) var label := Label.new() label.text = text label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER @@ -2738,7 +2736,7 @@ func _create_hud() -> void: log_box.custom_minimum_size = Vector2(420, 70) log_box.fit_content = false log_box.add_theme_color_override("default_color", UI_PARCHMENT_TEXT) - 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)) + log_box.add_theme_stylebox_override("normal", _make_panel_style(Color(0.11, 0.07, 0.045, 0.78), UI_RICE_PAPER_DARK, 1, 6, 6, 0)) side_column.add_child(log_box) screen_backdrop = _make_screen_backdrop() diff --git a/tools/smoke_visual_assets.gd b/tools/smoke_visual_assets.gd index c3aa800..5dbccbb 100644 --- a/tools/smoke_visual_assets.gd +++ b/tools/smoke_visual_assets.gd @@ -3598,8 +3598,8 @@ func _check_panel_style_frame(failures: Array[String], panel: PanelContainer, la if style.get_border_width(SIDE_LEFT) != expected_width: failures.append("%s border width mismatch: %d" % [label, style.get_border_width(SIDE_LEFT)]) var radius := style.get_corner_radius(CORNER_TOP_LEFT) - if radius < 4 or radius > 8: - failures.append("%s should use restrained rounded corners, got %d" % [label, radius]) + if radius < 8 or radius > 14: + failures.append("%s should use softened rounded corners, got %d" % [label, radius]) func _colors_nearly_equal(left: Color, right: Color) -> bool: