diff --git a/entities/player/player_input.gd b/entities/player/player_input.gd index 7780a4e..f9889d2 100644 --- a/entities/player/player_input.gd +++ b/entities/player/player_input.gd @@ -30,7 +30,6 @@ func _ready(): var has_authority = is_multiplayer_authority() set_process(has_authority) set_process_unhandled_input(has_authority) - Input.mouse_mode = Input.MOUSE_MODE_CAPTURED func _unhandled_input(event: InputEvent) -> void: var mouse_mode = Input.get_mouse_mode() diff --git a/main.tscn b/main.tscn index 2fa6731..6e77c01 100644 --- a/main.tscn +++ b/main.tscn @@ -19,30 +19,38 @@ func _ready(): $BootMenu/Multiplayer.join_server.connect(_join_server) func _start_demo(): - if mode: mode.queue_free() - mode = SINGLEPLAYER.instantiate() - add_child(mode) + _set_game_mode(SINGLEPLAYER.instantiate()) $BootMenu.hide() func _start_server(port, nickname): - if mode: mode.queue_free() - mode = MULTIPLAYER.instantiate() - add_child(mode) + _set_game_mode(MULTIPLAYER.instantiate()) mode.start_server(port, nickname) $BootMenu.hide() func _join_server(host, port, nickname): - if mode: mode.queue_free() - mode = MULTIPLAYER.instantiate() - add_child(mode) + _set_game_mode(MULTIPLAYER.instantiate()) mode.connected_to_server.connect($BootMenu/Multiplayer._on_connected_to_server) mode.connection_failed.connect($BootMenu/Multiplayer._on_connection_failed) mode.join_server(host, port, nickname) -func _unhandled_input(event): - # exit the program +func _input(event): if event.is_action_pressed(\"exit\"): - get_tree().quit() + _set_game_mode(null) + multiplayer.multiplayer_peer.close() + $BootMenu.show() + +func _set_game_mode(new_mode : Node): + if mode != null: + remove_child(mode) + mode.queue_free() + mode = new_mode + if mode == null: + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE + else: + Input.mouse_mode = Input.MOUSE_MODE_CAPTURED + add_child(mode) + +func _unhandled_input(event): # switch window mode if event.is_action_pressed(\"window_mode\"): if DisplayServer.window_get_mode() == DisplayServer.WINDOW_MODE_FULLSCREEN: