Release v0.2: refine menus and JuggleBoard

This commit is contained in:
enne2
2026-09-06 22:53:52 +02:00
parent f4a9da6bc3
commit ea5b2aebbf
34 changed files with 832 additions and 437 deletions
+34 -25
View File
@@ -12,7 +12,7 @@ const BLUE_TENT := preload("res://menus/assets/p1/1_tendone_1.png")
const RED_TENT := preload("res://menus/assets/p1/1_tendone_2.png")
const BACK_BUTTON := preload("res://menus/assets/common/pulsante_indietro.png")
const SETTINGS_BUTTON := preload("res://menus/assets/common/pulsante_rotellina.png")
const CIRCUS_SIGN := preload("res://menus/assets/p1/upendi_circus_sign.svg")
const CIRCUS_SIGN := preload("res://menus/assets/p1/upendi_circus_sign_mockup.png")
func _ready() -> void:
@@ -25,37 +25,46 @@ func _build() -> void:
MenuUI.add_full_texture(self, CLOUDS, MenuUI.ambient_material(1.0, 0.16))
_add_sign()
var blue := MenuUI.add_image_button(self, BLUE_TENT, Vector2(0.29, 0.64), Vector2(0.36, 0.59))
blue.material = MenuUI.ambient_material(0.65, 0.20)
var blue := _add_tent_button(BLUE_TENT, Vector2(0.29, 0.46))
blue.pressed.connect(func(): juggle_requested.emit(blue))
var red := MenuUI.add_image_button(self, RED_TENT, Vector2(0.71, 0.64), Vector2(0.36, 0.59))
red.material = MenuUI.ambient_material(0.65, 0.20)
var red := _add_tent_button(RED_TENT, Vector2(0.71, 0.46))
red.pressed.connect(func(): gym_requested.emit(red))
_add_star(Vector2(0.28, 0.18), "1", func(): juggle_requested.emit(blue))
_add_star(Vector2(0.72, 0.18), "2", func(): gym_requested.emit(red))
MenuUI.add_label(self, "Tocca un tendone e scopri il gioco!", Vector2(0.50, 0.91), Vector2(0.55, 0.07), 24)
_add_bottom_bar()
MenuUI.add_image(self, SETTINGS_BUTTON, Vector2(0.91, 0.13), Vector2(0.09, 0.14))
if not OS.has_feature("web"):
var exit_button := MenuUI.add_image_button(self, BACK_BUTTON, Vector2(0.075, 0.13), Vector2(0.09, 0.14))
exit_button.pressed.connect(func(): exit_requested.emit())
func _add_tent_button(texture: Texture2D, center: Vector2) -> TextureButton:
var button := MenuUI.add_image_button(self, texture, center, Vector2(0.36, 0.59))
var star_material := MenuUI.tent_star_material()
button.material = star_material
button.tooltip_text = "Apri questo percorso"
# L'hover non altera più geometria e hitbox del tendone: mette in risalto
# esclusivamente la stella, tramite il parametro dello shader.
button.mouse_entered.connect(func(): star_material.set_shader_parameter("hover_strength", 1.0))
button.mouse_exited.connect(func(): star_material.set_shader_parameter("hover_strength", 0.0))
return button
func _add_bottom_bar() -> void:
var bar := ColorRect.new()
bar.color = Color("#f1dfbd")
bar.mouse_filter = Control.MOUSE_FILTER_IGNORE
add_child(bar)
MenuUI.set_normalized_rect(bar, Vector2(0.50, 0.885), Vector2(1.0, 0.23))
for item in [[0.774, 3.0], [0.787, 2.0]]:
var rule := ColorRect.new()
rule.color = Color("#28201c")
rule.mouse_filter = Control.MOUSE_FILTER_IGNORE
add_child(rule)
MenuUI.set_normalized_rect(rule, Vector2(0.50, item[0]), Vector2(1.0, item[1] / 720.0))
MenuUI.add_label(self, "Tocca un tendone e scopri il gioco!", Vector2(0.38, 0.89), Vector2(0.66, 0.10), 24)
func _add_sign() -> void:
MenuUI.add_image(self, CIRCUS_SIGN, Vector2(0.50, 0.14), Vector2(0.33, 0.22))
var brand := MenuUI.add_label(self, "Upendi", Vector2(0.50, 0.125), Vector2(0.25, 0.08), 42)
brand.add_theme_color_override("font_color", Color("#f8f0d3"))
brand.add_theme_color_override("font_outline_color", Color("#283f49"))
brand.add_theme_constant_override("outline_size", 3)
var circus := MenuUI.add_label(self, "C I R C U S", Vector2(0.50, 0.175), Vector2(0.20, 0.05), 17)
circus.add_theme_color_override("font_color", Color("#f8f0d3"))
circus.add_theme_color_override("font_outline_color", Color("#283f49"))
func _add_star(center: Vector2, number: String, action: Callable) -> void:
var label := MenuUI.add_label(self, "★\n" + number, center, Vector2(0.08, 0.13), 27)
label.add_theme_color_override("font_color", Color("#f6d45f"))
label.add_theme_color_override("font_outline_color", Color("#4e3423"))
label.add_theme_constant_override("outline_size", 5)
var hotspot := MenuUI.add_hotspot(self, center, Vector2(0.10, 0.16))
hotspot.pressed.connect(func(): action.call())
MenuUI.add_image(self, CIRCUS_SIGN, Vector2(0.50, 0.17), Vector2(0.43, 0.34))