BIG FIX XD

This commit is contained in:
2025-12-13 19:12:53 +01:00
parent cb6fd3a727
commit 0776da883f
12 changed files with 717 additions and 2 deletions

View File

@@ -139,7 +139,9 @@ namespace KCM.Packets.Handlers
{
packet.HandlePacketServer();
((Packet)packet).SendToAll();
bool shouldRelay = packet.GetType().GetCustomAttributes(typeof(NoServerRelayAttribute), inherit: true).Length == 0;
if (shouldRelay)
((Packet)packet).SendToAll();
}
catch (Exception ex)
{

View File

@@ -112,6 +112,14 @@ namespace KCM.Packets.Lobby
LoadSaveLoadHook.saveContainer.Unpack(null);
Broadcast.OnLoadedEvent.Broadcast(new OnLoadedEvent());
try
{
new KCM.Packets.Network.ResyncRequestPacket { reason = "post-load" }.Send();
}
catch
{
}
if (ServerLobbyScript.LoadingSave != null)
ServerLobbyScript.LoadingSave.SetActive(false);

View File

@@ -33,6 +33,14 @@ namespace KCM.Packets.Lobby
World.inst.Generate(Seed);
Vector3 center = World.inst.GetCellData(World.inst.GridWidth / 2, World.inst.GridHeight / 2).Center;
Cam.inst.SetTrackingPos(center);
try
{
new KCM.Packets.Network.ResyncRequestPacket { reason = "post-world-seed" }.Send();
}
catch
{
}
}
catch (Exception e)
{

View File

@@ -0,0 +1,35 @@
using KCM.Attributes;
using KCM.StateManagement.Sync;
using System;
namespace KCM.Packets.Network
{
[NoServerRelay]
public class ResyncRequestPacket : Packet
{
public override ushort packetId => (ushort)Enums.Packets.ResyncRequest;
public string reason { get; set; }
public override void HandlePacketClient()
{
}
public override void HandlePacketServer()
{
try
{
if (!KCServer.IsRunning)
return;
SyncManager.SendResyncToClient(clientId, reason);
}
catch (Exception ex)
{
Main.helper.Log("Error handling ResyncRequestPacket on server");
Main.helper.Log(ex.ToString());
}
}
}
}

View File

@@ -0,0 +1,33 @@
using KCM.StateManagement.Sync;
using System;
namespace KCM.Packets.State
{
public class BuildingSnapshotPacket : Packet
{
public override ushort packetId => (ushort)Enums.Packets.BuildingSnapshot;
public byte[] payload { get; set; }
public override void HandlePacketClient()
{
try
{
if (payload == null || payload.Length == 0)
return;
SyncManager.ApplyBuildingSnapshot(payload);
}
catch (Exception ex)
{
Main.helper.Log("Error applying BuildingSnapshotPacket");
Main.helper.Log(ex.ToString());
}
}
public override void HandlePacketServer()
{
}
}
}

View File

@@ -0,0 +1,37 @@
using KCM.StateManagement.Sync;
using System;
using System.Collections.Generic;
namespace KCM.Packets.State
{
public class ResourceSnapshotPacket : Packet
{
public override ushort packetId => (ushort)Enums.Packets.ResourceSnapshot;
public override Riptide.MessageSendMode sendMode => Riptide.MessageSendMode.Unreliable;
public List<int> resourceTypes { get; set; }
public List<int> amounts { get; set; }
public override void HandlePacketClient()
{
try
{
if (KCClient.client.IsConnected && KCClient.client.Id == clientId)
return;
SyncManager.ApplyResourceSnapshot(resourceTypes, amounts);
}
catch (Exception ex)
{
Main.helper.Log("Error applying ResourceSnapshotPacket");
Main.helper.Log(ex.ToString());
}
}
public override void HandlePacketServer()
{
}
}
}