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()
|