class_name MainMenu extends CanvasLayer ## MainMenu - Main menu screen signal start_game signal quit_game # UI Components var title_label: Label var start_button: Button var options_button: Button var quit_button: Button var version_label: Label func _ready() -> void: _create_menu() func _create_menu() -> void: # Background var bg = ColorRect.new() add_child(bg) bg.set_anchors_preset(Control.PRESET_FULL_RECT) bg.color = Color(0.08, 0.08, 0.12) # Center container var center = CenterContainer.new() add_child(center) center.set_anchors_preset(Control.PRESET_FULL_RECT) var vbox = VBoxContainer.new() center.add_child(vbox) vbox.add_theme_constant_override("separation", 20) # Title title_label = Label.new() title_label.text = "FF-TCG Digital" title_label.add_theme_font_size_override("font_size", 48) title_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER vbox.add_child(title_label) # Subtitle var subtitle = Label.new() subtitle.text = "Final Fantasy Trading Card Game" subtitle.add_theme_font_size_override("font_size", 18) subtitle.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER subtitle.add_theme_color_override("font_color", Color(0.6, 0.6, 0.7)) vbox.add_child(subtitle) # Spacer var spacer = Control.new() spacer.custom_minimum_size = Vector2(0, 40) vbox.add_child(spacer) # Start button start_button = _create_menu_button("Start Game") vbox.add_child(start_button) start_button.pressed.connect(_on_start_pressed) # Options button (placeholder) options_button = _create_menu_button("Options") options_button.disabled = true vbox.add_child(options_button) # Quit button quit_button = _create_menu_button("Quit") vbox.add_child(quit_button) quit_button.pressed.connect(_on_quit_pressed) # Version label at bottom version_label = Label.new() version_label.text = "v0.1.0 - Development Build" version_label.add_theme_font_size_override("font_size", 12) version_label.add_theme_color_override("font_color", Color(0.4, 0.4, 0.5)) add_child(version_label) version_label.set_anchors_preset(Control.PRESET_BOTTOM_RIGHT) version_label.offset_left = -200 version_label.offset_top = -30 version_label.offset_right = -10 version_label.offset_bottom = -10 func _create_menu_button(text: String) -> Button: var button = Button.new() button.text = text button.custom_minimum_size = Vector2(200, 50) button.add_theme_font_size_override("font_size", 20) return button func _on_start_pressed() -> void: start_game.emit() func _on_quit_pressed() -> void: quit_game.emit() get_tree().quit()