2025-01-23 19:24:42 +00:00
|
|
|
extends Node
|
|
|
|
|
|
|
|
var players = {}
|
2025-01-28 22:54:14 +00:00
|
|
|
var current_map: String = ""
|
2025-01-26 13:39:11 +00:00
|
|
|
var local_player_health = 0
|
2025-01-28 22:54:14 +00:00
|
|
|
var player_state_global: PlayerState = PlayerState.new()
|
2025-01-23 19:24:42 +00:00
|
|
|
# Called when the node enters the scene tree for the first time.
|
2025-01-26 13:39:11 +00:00
|
|
|
@rpc("reliable", "call_local")
|
|
|
|
func get_player_health(id: int) -> int:
|
|
|
|
return players.get(id)["health"]
|
2025-01-28 18:32:38 +00:00
|
|
|
|
2025-01-28 22:54:14 +00:00
|
|
|
func _on_connected_ok():
|
|
|
|
var player_state := PlayerState.new()
|
|
|
|
register_player.rpc_id(1, multiplayer.get_unique_id(), player_state_global.name)
|
|
|
|
|
|
|
|
|
|
|
|
@rpc("any_peer", "reliable", "call_remote")
|
|
|
|
func register_player(id: int, name: String):
|
|
|
|
var player_state := PlayerState.new()
|
|
|
|
player_state.id = id
|
|
|
|
player_state.name = name
|
|
|
|
players[multiplayer.get_remote_sender_id()] = player_state
|
|
|
|
|
|
|
|
func _on_player_connected(id):
|
|
|
|
pass
|
|
|
|
#if multiplayer.is_server():
|
|
|
|
#GameServerManager.load_map.rpc_id(id, GameServerManager.current_map)
|
|
|
|
|
2025-01-23 19:24:42 +00:00
|
|
|
func _ready() -> void:
|
2025-01-28 22:54:14 +00:00
|
|
|
multiplayer.peer_connected.connect(_on_player_connected)
|
|
|
|
multiplayer.connected_to_server.connect(_on_connected_ok)
|
|
|
|
print("started")
|
2025-01-23 19:24:42 +00:00
|
|
|
pass # Replace with function body.
|
2025-01-26 13:39:11 +00:00
|
|
|
|
2025-01-23 19:24:42 +00:00
|
|
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
|
|
func _process(delta: float) -> void:
|
|
|
|
pass
|
2025-01-28 22:54:14 +00:00
|
|
|
|
|
|
|
func set_map(name: String):
|
|
|
|
current_map = name
|
|
|
|
|
|
|
|
func create_server(player_data: PlayerManager) -> Error:
|
|
|
|
var peer = ENetMultiplayerPeer.new()
|
|
|
|
var err = peer.create_server(27015, 30)
|
|
|
|
if err:
|
|
|
|
return err
|
|
|
|
multiplayer.multiplayer_peer = peer
|
|
|
|
if DisplayServer.get_name() != "headless":
|
|
|
|
var player_state := PlayerState.new()
|
|
|
|
player_state.id = 1
|
|
|
|
player_state.name = player_data.name
|
|
|
|
players[1] = player_state
|
|
|
|
return OK
|
|
|
|
|
|
|
|
func join_server(player_data: PlayerManager, ip: String, port: int) -> Error:
|
|
|
|
var peer = ENetMultiplayerPeer.new()
|
|
|
|
var err = peer.create_client("127.0.0.1", 27015)
|
|
|
|
if err != OK:
|
|
|
|
return err
|
|
|
|
player_state_global.id = multiplayer.get_remote_sender_id()
|
|
|
|
player_state_global.name = player_data.name
|
|
|
|
multiplayer.multiplayer_peer = peer
|
|
|
|
register_player.rpc_id(1, player_state_global)
|
|
|
|
return OK
|
|
|
|
|
|
|
|
@rpc("authority", "call_remote")
|
|
|
|
func load_map(map: String):
|
|
|
|
get_tree().change_scene_to_file(map)
|
|
|
|
|
|
|
|
|
|
|
|
func request_data_from_client(id: int):
|
|
|
|
send_data_to_server.rpc_id(id)
|
|
|
|
|
|
|
|
@rpc("any_peer", "call_remote")
|
|
|
|
func send_data_to_server():
|
|
|
|
pass
|