multyplayer
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
extends Node3D
|
||||
|
||||
## World-space main menu: hosts the 2D join_panel on an XRToolsViewport2DIn3D so
|
||||
## the player can point at it with a controller laser. Re-emits the panel's
|
||||
## intents; main.gd drives the actual networking.
|
||||
|
||||
signal host_pressed()
|
||||
signal join_pressed(ip: String)
|
||||
signal solo_pressed()
|
||||
|
||||
@onready var _vp: XRToolsViewport2DIn3D = $Viewport2Din3D
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
# The viewport instantiates its 2D scene during its own _ready; connect once
|
||||
# that has happened.
|
||||
_connect_scene.call_deferred()
|
||||
|
||||
|
||||
func _connect_scene() -> void:
|
||||
_vp.connect_scene_signal("host_pressed", func(): host_pressed.emit())
|
||||
_vp.connect_scene_signal("join_pressed", func(ip): join_pressed.emit(ip))
|
||||
_vp.connect_scene_signal("solo_pressed", func(): solo_pressed.emit())
|
||||
|
||||
|
||||
func show_menu() -> void:
|
||||
visible = true
|
||||
|
||||
|
||||
func hide_menu() -> void:
|
||||
visible = false
|
||||
|
||||
|
||||
func set_status(text: String) -> void:
|
||||
var scene := _vp.get_scene_instance()
|
||||
if scene and scene.has_method("set_status"):
|
||||
scene.set_status(text)
|
||||
Reference in New Issue
Block a user