Refactor Godot architecture into AppShell, modular menus and game domains
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
class_name P1HomeScreen
|
||||
extends Control
|
||||
## P1: home con i due tendoni/percorsi.
|
||||
|
||||
signal juggle_requested(focal: Control)
|
||||
signal gym_requested(focal: Control)
|
||||
signal exit_requested
|
||||
|
||||
const HOME_BG := preload("res://menus/assets/common/1_sfondo.png")
|
||||
const CLOUDS := preload("res://menus/assets/common/1_nuvole.png")
|
||||
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")
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT)
|
||||
_build()
|
||||
|
||||
|
||||
func _build() -> void:
|
||||
MenuUI.add_full_texture(self, HOME_BG)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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_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())
|
||||
Reference in New Issue
Block a user