add chasers
This commit is contained in:
+7
-5
@@ -3,16 +3,18 @@ extends Node3D
|
||||
const statsTemplate := "FPS: %d\nPing: %d ms"
|
||||
|
||||
var runner_scene := preload("res://scenes/runner.tscn")
|
||||
var chaser_scene := preload("res://scenes/chaser.tscn")
|
||||
var _ping := 0.0
|
||||
@onready var _chasers_node: Node3D = %Chasers
|
||||
@onready var _runners_node: Node3D = %Runners
|
||||
|
||||
func spawn_player(player_id) -> void:
|
||||
func spawn_player(player_id: int, runner: bool) -> void:
|
||||
if multiplayer.is_server():
|
||||
var runner = runner_scene.instantiate()
|
||||
runner.player_id = player_id
|
||||
runner.name = str(player_id)
|
||||
var player = runner_scene.instantiate() if runner else chaser_scene.instantiate()
|
||||
player.player_id = player_id
|
||||
player.name = str(player_id)
|
||||
|
||||
_runners_node.add_child(runner)
|
||||
_runners_node.add_child(player) if runner else _chasers_node.add_child(player)
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
if DisplayServer.get_name() == "headless":
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
extends Control
|
||||
|
||||
func _on_join_button_pressed() -> void:
|
||||
MultiplayerManager.connect_to_ip(%IpTextBox.text)
|
||||
func _on_join_as_runner_button_pressed() -> void:
|
||||
MultiplayerManager.connect_to_ip(true, %IpTextBox.text)
|
||||
get_tree().change_scene_to_file("res://scenes/in_game.tscn")
|
||||
|
||||
func _on_join_as_chaser_button_pressed() -> void:
|
||||
MultiplayerManager.connect_to_ip(false, %IpTextBox.text)
|
||||
get_tree().change_scene_to_file("res://scenes/in_game.tscn")
|
||||
|
||||
@@ -4,8 +4,10 @@ const PORT = 1280
|
||||
const IP_ADDRESS = "127.0.0.1"
|
||||
const MAX_CLIENTS = 5
|
||||
|
||||
var in_game_scene = preload("res://scenes/in_game.tscn")
|
||||
var main_menu_scene = preload("res://scenes/main_menu.tscn")
|
||||
var in_game_scene := preload("res://scenes/in_game.tscn")
|
||||
var main_menu_scene := preload("res://scenes/main_menu.tscn")
|
||||
var runner_client_selection := true
|
||||
var runner_dict := {}
|
||||
|
||||
func _ready() -> void:
|
||||
set_process(false)
|
||||
@@ -23,9 +25,11 @@ func _ready() -> void:
|
||||
else:
|
||||
get_tree().change_scene_to_packed.call_deferred(main_menu_scene)
|
||||
|
||||
func connect_to_ip(ip: String = "") -> void:
|
||||
func connect_to_ip(runner: bool = true, ip: String = "") -> void:
|
||||
if ip.is_empty():
|
||||
ip = IP_ADDRESS
|
||||
|
||||
runner_client_selection = runner
|
||||
|
||||
print("Connecting to: %s" % ip)
|
||||
|
||||
@@ -39,13 +43,13 @@ func connect_to_ip(ip: String = "") -> void:
|
||||
|
||||
func _on_connect(id: int) -> void:
|
||||
print("Client ID #%s connected" % id)
|
||||
get_tree().get_current_scene().spawn_player(id)
|
||||
|
||||
func _on_disconnect(id: int) -> void:
|
||||
print("Client ID #%s disconnected" % id)
|
||||
pass
|
||||
|
||||
func _on_connect_client() -> void:
|
||||
request_is_runner.rpc_id(1, runner_client_selection)
|
||||
print("[%s] Connected to server" % multiplayer.get_unique_id())
|
||||
pass
|
||||
|
||||
@@ -56,3 +60,14 @@ func _on_disconnect_client() -> void:
|
||||
func _on_server_closed_client() -> void:
|
||||
print("[%s] Server closed" % multiplayer.get_unique_id())
|
||||
pass
|
||||
|
||||
@rpc("any_peer", "call_remote", "reliable")
|
||||
func request_is_runner(runner: bool) -> void:
|
||||
if not multiplayer.is_server():
|
||||
return
|
||||
|
||||
var id := multiplayer.get_remote_sender_id()
|
||||
runner_dict[id] = runner
|
||||
print("Runner Dict: %s" % runner_dict)
|
||||
|
||||
get_tree().get_current_scene().spawn_player(id, runner)
|
||||
|
||||
Reference in New Issue
Block a user