feat: plugin api for replication of data

This commit is contained in:
2024-05-16 21:28:47 +03:00
parent 0ede864f40
commit 5634a182e6
8 changed files with 83 additions and 45 deletions
@@ -80,6 +80,7 @@ public sealed class RoomCreateOperation : BaseOperation
var roomPlugin = _serverPlugin.CreateRoomPlugin(information);
var room = new RagonRoom(roomId, information, roomPlugin);
room.Plugin.OnAttached(room);
roomPlayer.OnAttached(room);
context.Scheduler.Run(room);
@@ -42,8 +42,11 @@ public sealed class RoomDataOperation : BaseOperation
sendData[1] = (byte)peerId;
sendData[2] = (byte)(peerId >> 8);
var pluginData = new byte[dataSize];
Array.Copy(data, 1, pluginData, 0, dataSize);
room.Plugin.OnData(player, pluginData);
Array.Copy(data, 1, sendData, headerSize, dataSize);
room.Broadcast(sendData, channel);
room.Broadcast(sendData, room.ReadyPlayersList, NetworkChannel.RELIABLE);
}
}
@@ -79,6 +79,8 @@ public sealed class RoomJoinOrCreateOperation : BaseOperation
_ragonWebHookPlugin.RoomCreated(context, room, roomPlayer);
room.Plugin.OnAttached(room);
context.Lobby.Persist(room);
context.Scheduler.Run(room);
context.SetRoom(room, roomPlayer);