Release v0.2: refine menus and JuggleBoard
This commit is contained in:
@@ -1,17 +1,15 @@
|
||||
class_name P3AGymMenuScreen
|
||||
extends Control
|
||||
## P3a: anteprima della futura Palestra di Giocoleria.
|
||||
## P3A segue la stessa composizione mockup + hotspot trasparenti di P2A.
|
||||
|
||||
signal back_requested
|
||||
signal feedback_requested(frequency: float)
|
||||
|
||||
const BG := preload("res://menus/assets/common/1_sfondo.png")
|
||||
const CLOUDS := preload("res://menus/assets/common/1_nuvole.png")
|
||||
const TENT := preload("res://menus/assets/p3a/3a_tendone.png")
|
||||
const TITLE := preload("res://menus/assets/p3a/3a_titolo.png")
|
||||
const BACK_BUTTON := preload("res://menus/assets/common/pulsante_indietro.png")
|
||||
const SETTINGS_BUTTON := preload("res://menus/assets/common/pulsante_rotellina.png")
|
||||
const PLAY_BUTTON := preload("res://menus/assets/common/pulsante_gioca.png")
|
||||
const MOCKUP := preload("res://menus/assets/p3a/p3a_menu_mockup.jpg")
|
||||
|
||||
var players_count := 3
|
||||
var count_patch: ColorRect
|
||||
var count_label: Label
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
@@ -20,19 +18,45 @@ func _ready() -> void:
|
||||
|
||||
|
||||
func _build() -> void:
|
||||
MenuUI.add_full_texture(self, BG)
|
||||
MenuUI.add_full_texture(self, CLOUDS, MenuUI.ambient_material(1.0, 0.16))
|
||||
MenuUI.add_image(self, TENT, Vector2(0.28, 0.59), Vector2(0.56, 0.78), MenuUI.ambient_material(0.60, 0.20))
|
||||
MenuUI.add_image(self, TITLE, Vector2(0.68, 0.22), Vector2(0.34, 0.34))
|
||||
var artwork := TextureRect.new()
|
||||
artwork.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT)
|
||||
artwork.texture = MOCKUP
|
||||
artwork.expand_mode = TextureRect.EXPAND_IGNORE_SIZE
|
||||
artwork.stretch_mode = TextureRect.STRETCH_SCALE
|
||||
artwork.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
||||
add_child(artwork)
|
||||
|
||||
var back := MenuUI.add_image_button(self, BACK_BUTTON, Vector2(0.075, 0.13), Vector2(0.09, 0.14))
|
||||
back.pressed.connect(func(): back_requested.emit())
|
||||
MenuUI.add_image(self, SETTINGS_BUTTON, Vector2(0.91, 0.13), Vector2(0.09, 0.14))
|
||||
MenuUI.add_label(self, "N° giocolieri", Vector2(0.77, 0.57), Vector2(0.28, 0.06), 22)
|
||||
MenuUI.add_label(self, "3", Vector2(0.88, 0.57), Vector2(0.08, 0.08), 30)
|
||||
_add_hotspot(Vector2(0.12, 0.14), Vector2(0.10, 0.14), func(): back_requested.emit())
|
||||
_add_hotspot(Vector2(0.775, 0.64), Vector2(0.07, 0.10), func(): _change_players(-1))
|
||||
_add_hotspot(Vector2(0.895, 0.64), Vector2(0.07, 0.10), func(): _change_players(1))
|
||||
_add_hotspot(Vector2(0.79, 0.88), Vector2(0.30, 0.14), _show_coming_soon)
|
||||
_build_dynamic_count()
|
||||
|
||||
var play := MenuUI.add_image_button(self, PLAY_BUTTON, Vector2(0.79, 0.83), Vector2(0.30, 0.115))
|
||||
play.pressed.connect(_show_coming_soon)
|
||||
|
||||
func _add_hotspot(center: Vector2, normalized_size: Vector2, action: Callable) -> void:
|
||||
var hotspot := MenuUI.add_hotspot(self, center, normalized_size)
|
||||
hotspot.tooltip_text = ""
|
||||
hotspot.pressed.connect(func(): action.call())
|
||||
|
||||
|
||||
func _build_dynamic_count() -> void:
|
||||
count_patch = ColorRect.new()
|
||||
count_patch.color = Color(1.0, 1.0, 1.0, 0.96)
|
||||
count_patch.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
||||
count_patch.visible = false
|
||||
add_child(count_patch)
|
||||
MenuUI.set_normalized_rect(count_patch, Vector2(0.835, 0.64), Vector2(0.055, 0.09))
|
||||
|
||||
count_label = MenuUI.add_label(self, str(players_count), Vector2(0.835, 0.64), Vector2(0.055, 0.09), 32)
|
||||
count_label.visible = false
|
||||
|
||||
|
||||
func _change_players(delta: int) -> void:
|
||||
players_count = clampi(players_count + delta, 1, 5)
|
||||
count_patch.visible = true
|
||||
count_label.visible = true
|
||||
count_label.text = str(players_count)
|
||||
feedback_requested.emit(440.0 + 45.0 * players_count)
|
||||
|
||||
|
||||
func _show_coming_soon() -> void:
|
||||
|
||||
Reference in New Issue
Block a user