Finalize networking service

This commit is contained in:
Evil Factory
2026-02-08 15:03:03 -03:00
parent ce4cd1fefd
commit 705137e993
4 changed files with 21 additions and 6 deletions
@@ -47,7 +47,7 @@ partial class NetworkingService : INetworkingService, IEventConnectedToServer, I
WriteOnlyMessage message = new WriteOnlyMessage(); WriteOnlyMessage message = new WriteOnlyMessage();
message.WriteByte((byte)ClientPacketHeader.LUA_NET_MESSAGE); message.WriteByte((byte)ClientPacketHeader.LUA_NET_MESSAGE);
message.WriteByte((byte)ClientToServer.RequestAllNetIds); message.WriteByte((byte)ClientToServer.RequestSync);
GameMain.Client.ClientPeer.Send(message, DeliveryMethod.Reliable); GameMain.Client.ClientPeer.Send(message, DeliveryMethod.Reliable);
} }
@@ -56,8 +56,8 @@ partial class NetworkingService : INetworkingService, IEventClientRawNetMessageR
HandleNetMessageId(netMessage, client); HandleNetMessageId(netMessage, client);
break; break;
case ClientToServer.RequestAllNetIds: case ClientToServer.RequestSync:
WriteAllIds(client); WriteSync(client);
break; break;
case ClientToServer.RequestSingleNetId: case ClientToServer.RequestSingleNetId:
@@ -144,7 +144,7 @@ partial class NetworkingService : INetworkingService, IEventClientRawNetMessageR
SendToClient(message, null, DeliveryMethod.Reliable); SendToClient(message, null, DeliveryMethod.Reliable);
} }
private void WriteAllIds(Client client) private void WriteSync(Client client)
{ {
WriteOnlyMessage message = new WriteOnlyMessage(); WriteOnlyMessage message = new WriteOnlyMessage();
message.WriteByte((byte)ServerPacketHeader.LUA_NET_MESSAGE); message.WriteByte((byte)ServerPacketHeader.LUA_NET_MESSAGE);
@@ -158,6 +158,12 @@ partial class NetworkingService : INetworkingService, IEventClientRawNetMessageR
} }
SendToClient(message, client.Connection, DeliveryMethod.Reliable); SendToClient(message, client.Connection, DeliveryMethod.Reliable);
// TODO: when we move to using GUIDs for everything, this should combined into a single message
foreach (INetworkSyncVar netVar in netVars.Keys)
{
SendNetVar(netVar, client.Connection);
}
} }
public void SendToClient(IWriteMessage netMessage, NetworkConnection connection = null, DeliveryMethod deliveryMethod = DeliveryMethod.Reliable) public void SendToClient(IWriteMessage netMessage, NetworkConnection connection = null, DeliveryMethod deliveryMethod = DeliveryMethod.Reliable)
@@ -38,7 +38,7 @@ internal partial class NetworkingService : INetworkingService
NetMessageInternalId, NetMessageInternalId,
NetMessageNetId, NetMessageNetId,
RequestSingleNetId, RequestSingleNetId,
RequestAllNetIds, RequestSync,
} }
private enum ServerToClient private enum ServerToClient
@@ -184,11 +184,19 @@ internal partial class NetworkingService : INetworkingService
} }
netVar.ReadNetMessage(message); netVar.ReadNetMessage(message);
// Sync back to all clients
if (netVar.SyncType != NetSync.ClientOneWay)
{
SendNetVar(netVar);
}
}); });
#endif #endif
} }
public void SendNetVar(INetworkSyncVar netVar) public void SendNetVar(INetworkSyncVar netVar) => SendNetVar(netVar);
public void SendNetVar(INetworkSyncVar netVar, NetworkConnection connection = null)
{ {
if (!netVars.TryGetValue(netVar, out NetId netId)) if (!netVars.TryGetValue(netVar, out NetId netId))
{ {
@@ -34,4 +34,5 @@ public interface IEntityNetworkingService
Guid GetNetworkIdForInstance(INetworkSyncVar var); Guid GetNetworkIdForInstance(INetworkSyncVar var);
void RegisterNetVar(INetworkSyncVar netVar); void RegisterNetVar(INetworkSyncVar netVar);
void SendNetVar(INetworkSyncVar netVar); void SendNetVar(INetworkSyncVar netVar);
void SendNetVar(INetworkSyncVar netVar, NetworkConnection connection);
} }