WIP: Trying to add multiplayer
This commit is contained in:
parent
fe08da9d4c
commit
37e4e42d51
12
ServerManager.gd
Normal file
12
ServerManager.gd
Normal file
@ -0,0 +1,12 @@
|
||||
extends Node
|
||||
|
||||
@export var Players = {}
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
@ -15,6 +15,10 @@ run/main_scene="res://scenes/utils/Menu.tscn"
|
||||
config/features=PackedStringArray("4.3", "Forward Plus")
|
||||
config/icon="res://icon.svg"
|
||||
|
||||
[autoload]
|
||||
|
||||
ServerManager="*res://ServerManager.gd"
|
||||
|
||||
[display]
|
||||
|
||||
window/size/viewport_width=1920
|
||||
|
@ -1,7 +1,7 @@
|
||||
extends Node3D
|
||||
|
||||
var player_side: String
|
||||
|
||||
@export var player : PackedScene
|
||||
@onready var intro_camera = $Intro/CameraMount/IntroCamera
|
||||
@onready var intro_view_port = $Intro/CameraMount/IntroCamera/SubViewportContainer/SubViewport
|
||||
@onready var spawns = $Spawns
|
||||
@ -11,10 +11,16 @@ func _ready() -> void:
|
||||
var char : Node3D = null
|
||||
var red_spawn: Node3D = $Spawns/Blue/SpawnArea
|
||||
var position := red_spawn.global_position
|
||||
char = ResourceLoader.load("res://scenes/utils/character.tscn").instantiate()
|
||||
char.global_position = position
|
||||
root.add_child(char)
|
||||
pass
|
||||
for i in ServerManager.Players:
|
||||
print("spawning player")
|
||||
char = ResourceLoader.load("res://scenes/utils/character.tscn").instantiate()
|
||||
var my_random_number = RandomNumberGenerator.new().randf_range(-10.0, 10.0)
|
||||
char.name = str(my_random_number)
|
||||
char.global_position = position
|
||||
char.global_position.x += my_random_number
|
||||
root.add_child(char)
|
||||
for nodes in get_children():
|
||||
print(nodes)
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
|
@ -28,7 +28,7 @@ const MAX_CONNECTIONS = 20
|
||||
var players_loaded = 0
|
||||
|
||||
var player_info = {"name": "Name"}
|
||||
var players = {}
|
||||
#var players = {}
|
||||
|
||||
func _on_host_pressed() -> void:
|
||||
var peer = ENetMultiplayerPeer.new()
|
||||
@ -36,8 +36,8 @@ func _on_host_pressed() -> void:
|
||||
if error:
|
||||
print(error)
|
||||
multiplayer.multiplayer_peer = peer
|
||||
|
||||
players[1] = player_info
|
||||
send_player_information.rpc("host", multiplayer.get_unique_id())
|
||||
ServerManager.Players[1] = player_info
|
||||
player_connected.emit(1, player_info)
|
||||
|
||||
|
||||
@ -55,7 +55,7 @@ func load_game(game_scene_path):
|
||||
func player_loaded():
|
||||
if multiplayer.is_server():
|
||||
players_loaded += 1
|
||||
if players_loaded == players.size():
|
||||
if players_loaded == ServerManager.players.size():
|
||||
|
||||
players_loaded = 0
|
||||
|
||||
@ -71,23 +71,25 @@ func _on_join_pressed() -> void:
|
||||
|
||||
func _on_player_connected(id: Variant, player_info: Variant) -> void:
|
||||
print(player_info)
|
||||
send_player_information.rpc_id(1, "test", multiplayer.get_unique_id())
|
||||
_register_player.rpc_id(id, player_info)
|
||||
|
||||
@rpc("any_peer", "reliable")
|
||||
func _register_player(new_player_info):
|
||||
var new_player_id = multiplayer.get_remote_sender_id()
|
||||
players[new_player_id] = new_player_info
|
||||
player_connected.emit(new_player_id, new_player_info)
|
||||
pass
|
||||
#var new_player_id = multiplayer.get_remote_sender_id()
|
||||
#players[new_player_id] = new_player_info
|
||||
#player_connected.emit(new_player_id, new_player_info)
|
||||
|
||||
|
||||
func _on_player_disconnected(id: Variant) -> void:
|
||||
pass
|
||||
players.erase(id)
|
||||
ServerManager.Players.erase(id)
|
||||
player_disconnected.emit(id)
|
||||
|
||||
func _on_connected_ok():
|
||||
var peer_id = multiplayer.get_unique_id()
|
||||
players[peer_id] = player_info
|
||||
#ServerManager.players[peer_id] = player_info
|
||||
player_connected.emit(peer_id, player_info)
|
||||
|
||||
|
||||
@ -96,10 +98,20 @@ func _on_connected_fail():
|
||||
|
||||
func _on_server_disconnected() -> void:
|
||||
multiplayer.multiplayer_peer = null
|
||||
players.clear()
|
||||
ServerManager.Players.clear()
|
||||
server_disconnected.emit()
|
||||
|
||||
|
||||
@rpc("call_local", "any_peer")
|
||||
func send_player_information(name, id):
|
||||
if !ServerManager.Players.has(id):
|
||||
ServerManager.Players[id] = {
|
||||
"name": name,
|
||||
"id": id,
|
||||
"score": 0
|
||||
}
|
||||
if multiplayer.is_server():
|
||||
for i in ServerManager.Players:
|
||||
send_player_information.rpc(ServerManager.Players[i], name, i)
|
||||
|
||||
@rpc("call_local", "reliable", "any_peer")
|
||||
func start_game():
|
||||
|
@ -31,6 +31,9 @@ var is_crouch: bool = false
|
||||
@onready var camera: Node3D = $UpperTorso
|
||||
@onready var character: Node3D = $"."
|
||||
|
||||
func get_current_camera() -> Camera3D:
|
||||
return $UpperTorso/ViewModelCamera
|
||||
|
||||
func _ready() -> void:
|
||||
capture_mouse()
|
||||
func _unhandled_input(event: InputEvent) -> void:
|
||||
|
Loading…
x
Reference in New Issue
Block a user