Fix garden visuals: tint, sizing, button layout and colors

- Tint garden background #176d78 via modulate in set_background()
- Fix background as 1700x1700 centered square instead of stretched
- Make TextureButton self_modulate transparent so Center/Border are visible
- Diagonal lesson layout from bottom-left to upper-right matching mockup
- Center buttons on generated positions instead of top-left alignment
- Increase garden size back to 2400 with 850px circle radius

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Adrien Ufferte
2026-03-31 11:22:46 +02:00
parent d9522bc922
commit dc83e7b4e2
5 changed files with 33 additions and 26 deletions
+1
View File
@@ -7,6 +7,7 @@
[node name="BossButton" type="TextureButton" unique_id=1297494779]
z_index = 2
self_modulate = Color(1, 1, 1, 0)
offset_right = 512.0
offset_bottom = 512.0
pivot_offset = Vector2(180, 180)
+15 -12
View File
@@ -9,20 +9,19 @@ const LOOK_AND_LEARN_SCENE: PackedScene = preload("res://sources/look_and_learn/
const BOSS_BUTTON_SCENE: PackedScene = preload("res://sources/gardens/boss_button.tscn")
const BOSS_MINIGAME_SCENE_PATH: String = "res://sources/minigames/boss/boss_minigame.tscn"
const FLOWER_VFX: PackedScene = preload("res://sources/gardens/flower_particle.tscn")
const GARDEN_SIZE: int = 1800
const GARDEN_SIZE: int = 2400
const GARDEN_TEXTURES_NB: int = 20
const FLOWER_TYPES_NB: int = 5
const FLOWER_OFFSET_FROM_LESSON: float = 150.0
const GARDEN_CENTER_Y: float = 900.0
const GARDEN_CIRCLE_RADIUS: float = 650.0
const LESSON_CIRCLE_RADIUS: float = 450.0
const LESSON_START_ANGLE: float = -PI / 2.0
const GARDEN_CIRCLE_RADIUS: float = 850.0
const LESSON_PATH_SPREAD: float = 0.85
const FINAL_BOSS_PADDING: float = 120.0
const TRANSPARENCY_THRESHOLD: float = 0.05
const POSITION_SEARCH_STEP: int = 40
const MAX_POSITION_SEARCH_RADIUS: int = 300
const BACK_BUTTON_HOLD_DURATION_SECONDS: float = 1.0
const LAYOUT_VERSION: int = 2
const LAYOUT_VERSION: int = 8
static var lesson_button_half_size: Vector2 = Vector2.ZERO
static var garden_alpha_cache: Dictionary = {}
@@ -751,14 +750,18 @@ static func _generate_lesson_positions(lessons_for_garden: int, garden_index: in
positions.append(Vector2i(int(center.x), int(center.y)))
Log.trace("Gardens: Garden %s single lesson placed at center" % str(garden_index))
else:
var angle_step: float = TAU / float(lessons_for_garden)
var phase_offset: float = float(garden_index % 5) * 0.4
# Diagonal path from bottom-left to upper-right through the circle,
# matching the design mockup layout.
var half_spread: float = GARDEN_CIRCLE_RADIUS * LESSON_PATH_SPREAD * 0.5
for lesson_index: int in range(lessons_for_garden):
var angle: float = LESSON_START_ANGLE + phase_offset + angle_step * float(lesson_index)
var x_pos: int = int(center.x + cos(angle) * LESSON_CIRCLE_RADIUS)
var y_pos: int = int(center.y + sin(angle) * LESSON_CIRCLE_RADIUS)
Log.trace("Gardens: Garden %s lesson %s angle: %s, position: (%s, %s)" % [str(garden_index), str(lesson_index), str(angle), str(x_pos), str(y_pos)])
positions.append(Vector2i(x_pos, y_pos))
var t: float = float(lesson_index) / float(lessons_for_garden - 1)
# Diagonal: bottom-left (t=0) to upper-right (t=1)
var x_pos: float = center.x + (t - 0.5) * half_spread * 2.0
var y_pos: float = center.y + (0.5 - t) * half_spread * 1.6
# Slight sine curve to avoid a straight line
x_pos += sin(t * PI) * GARDEN_CIRCLE_RADIUS * 0.08
Log.trace("Gardens: Garden %s lesson %s t: %s, position: (%s, %s)" % [str(garden_index), str(lesson_index), str(t), str(x_pos), str(y_pos)])
positions.append(Vector2i(int(x_pos), int(y_pos)))
Log.info("Gardens: Completed lesson positions for garden %s" % str(garden_index))
return positions