rps-demo/src/title_screen/title_screen.gd

92 lines
1.9 KiB
GDScript3
Raw Normal View History

2025-01-13 15:57:57 -07:00
extends Control
const MAX_CLIENTS = 2
2025-01-13 16:44:10 -07:00
const DEFAULT_PORT = 8383
const RANDOM_NAMES = [
"Guy Likely",
"Roy G. Biv",
"Narbacular Strunk",
"Eco Sourcepower",
"Monty Carlo",
"Banana Joe",
"Chunk Busko",
"Flip Moran",
"Motrin Onesie",
"Kobe Sparrow",
"Jambo Wallende",
"Corbyn Kingston",
"Andrej Wojnicz",
"Ouija Kinkade",
"Angel Gullhammer",
"Skeleton Collector",
"Bosko Stanislav",
"Lieutenant Nudisco",
"Trace Slamvector",
"Barrison Hegemon",
"Bux Amillion",
]
2025-01-13 15:57:57 -07:00
@export var game_scene: PackedScene
@onready var main_menu: VBoxContainer = %MainMenu
@onready var host_menu: VBoxContainer = %HostMenu
@onready var join_menu: VBoxContainer = %JoinMenu
2025-01-13 16:44:10 -07:00
@onready var name_input: LineEdit = %NameInput
2025-01-13 15:57:57 -07:00
@onready var host_port_input: SpinBox = %HostPortInput
@onready var hostname_input: LineEdit = %HostnameInput
@onready var join_port_input: SpinBox = %JoinPortInput
2025-01-13 16:44:10 -07:00
func _ready() -> void:
name_input.text = RANDOM_NAMES.pick_random()
host_port_input.value = DEFAULT_PORT
join_port_input.value = DEFAULT_PORT
2025-01-13 15:57:57 -07:00
func quit() -> void:
get_tree().quit()
func show_host_menu() -> void:
main_menu.hide()
join_menu.hide()
host_menu.show()
func show_join_menu() -> void:
main_menu.hide()
host_menu.hide()
join_menu.show()
func show_main_menu() -> void:
host_menu.hide()
join_menu.hide()
main_menu.show()
2025-01-13 16:44:10 -07:00
func _build_game() -> Game:
2025-01-13 15:57:57 -07:00
var game: Game = game_scene.instantiate()
2025-01-13 16:44:10 -07:00
game.player_name = name_input.text
return game
func start_host_lobby() -> void:
var game: Game = _build_game()
2025-01-13 15:57:57 -07:00
var peer := ENetMultiplayerPeer.new()
peer.create_server(host_port_input.value, MAX_CLIENTS)
add_sibling(game)
game.multiplayer.multiplayer_peer = peer
queue_free()
func join_lobby() -> void:
2025-01-13 16:44:10 -07:00
var game: Game = _build_game()
2025-01-13 15:57:57 -07:00
var peer := ENetMultiplayerPeer.new()
peer.create_client(hostname_input.text, join_port_input.value)
add_sibling(game)
game.multiplayer.multiplayer_peer = peer
queue_free()