Implement RPC Node

This commit is contained in:
Aslan 2026-02-02 12:17:04 -05:00
parent f7ee533d5a
commit 605e43273e
13 changed files with 524 additions and 206 deletions

View file

@ -3,15 +3,13 @@ using Godot;
public partial class NetworkManager : Node
{
[Export] public RPCNode RPCNode { get; private set; }
public static NetworkManager Singleton { get; private set; }
public static NetworkManager Instance { get; private set; }
public int LocalNetId { get; private set; } = -1;
public override void _Ready()
{
Singleton = this;
Instance = this;
if (Global.IsGameHost)
{
@ -66,7 +64,7 @@ public partial class NetworkManager : Node
{
if (Global.IsGameHost)
{
GameManager.Singleton.SendUniverseToClient(id);
GameManager.Instance.SendUniverseToClient(id);
}
_ = SpawnNetPlayer(id);
@ -75,7 +73,7 @@ public partial class NetworkManager : Node
public void OnPlayerDisconnected(long id)
{
Player player = GetNode<Player>($"/root/Game/Space/Player-{id}");
GameManager.Singleton.DespawnPlayer(player);
GameManager.Instance.DespawnPlayer(player);
}
private async Task SpawnNetPlayer(long id)
@ -88,14 +86,9 @@ public partial class NetworkManager : Node
bool isMainPlayer = LocalNetId == id;
Character character = new(GameManager.GameUniverse.Sectors[5, 5, 5], new(0, 0, 0));
Player player = GameManager.Singleton.SpawnPlayer(character, isMainPlayer);
Player player = GameManager.Instance.SpawnPlayer(character, id, isMainPlayer);
player.Name = $"Player-{id}";
player.SetMultiplayerAuthority((int)id);
if (isMainPlayer && !Global.IsGameHost)
{
GameManager.Singleton.RpcId(1, nameof(GameManager.Singleton.RpcSendNearbySectors), character.CurrentSector.Coordinates, id);
}
}
}