fixed: FindAndJoin

This commit is contained in:
2022-05-01 15:48:53 +04:00
parent 2aefc47d7c
commit 6fa19a90c7
3 changed files with 21 additions and 7 deletions
+5 -1
View File
@@ -5,7 +5,11 @@ namespace Game.Source
public class GameFactory : PluginFactory public class GameFactory : PluginFactory
{ {
public string PluginName { get; set; } = "ExamplePlugin"; public string PluginName { get; set; } = "ExamplePlugin";
public PluginBase CreatePlugin(string map) => new ExamplePlugin(); public PluginBase CreatePlugin(string map)
{
return new ExamplePlugin();
}
public AuthorizationManager CreateManager(Configuration configuration) => new GameAuthorizer(configuration); public AuthorizationManager CreateManager(Configuration configuration) => new GameAuthorizer(configuration);
} }
} }
+8 -2
View File
@@ -15,7 +15,7 @@ namespace Ragon.Core
public int PlayersMin { get; private set; } public int PlayersMin { get; private set; }
public int PlayersMax { get; private set; } public int PlayersMax { get; private set; }
public int PlayersCount => _players.Count; public int PlayersCount => _players.Count;
public string Id { get; private set; }
public string Map { get; private set; } public string Map { get; private set; }
private ILogger _logger = LogManager.GetCurrentClassLogger(); private ILogger _logger = LogManager.GetCurrentClassLogger();
@@ -40,6 +40,7 @@ namespace Ragon.Core
Map = map; Map = map;
PlayersMin = min; PlayersMin = min;
PlayersMax = max; PlayersMax = max;
Id = Guid.NewGuid().ToString();
_logger.Info("Room created"); _logger.Info("Room created");
_plugin.Attach(this); _plugin.Attach(this);
@@ -65,12 +66,15 @@ namespace Ragon.Core
_allPlayers = _players.Select(p => p.Key).ToArray(); _allPlayers = _players.Select(p => p.Key).ToArray();
{ {
Span<byte> data = stackalloc byte[18]; var idRaw = Encoding.UTF8.GetBytes(Id).AsSpan();
Span<byte> data = stackalloc byte[idRaw.Length + 18];
Span<byte> operationData = data.Slice(0, 2); Span<byte> operationData = data.Slice(0, 2);
Span<byte> peerData = data.Slice(2, 4); Span<byte> peerData = data.Slice(2, 4);
Span<byte> ownerData = data.Slice(4, 4); Span<byte> ownerData = data.Slice(4, 4);
Span<byte> minData = data.Slice(10, 4); Span<byte> minData = data.Slice(10, 4);
Span<byte> maxData = data.Slice(14, 4); Span<byte> maxData = data.Slice(14, 4);
Span<byte> idData = data.Slice(18, idRaw.Length);
RagonHeader.WriteUShort((ushort) RagonOperation.JOIN_ROOM, ref operationData); RagonHeader.WriteUShort((ushort) RagonOperation.JOIN_ROOM, ref operationData);
RagonHeader.WriteInt((int) peerId, ref peerData); RagonHeader.WriteInt((int) peerId, ref peerData);
@@ -78,6 +82,8 @@ namespace Ragon.Core
RagonHeader.WriteInt(PlayersMin, ref minData); RagonHeader.WriteInt(PlayersMin, ref minData);
RagonHeader.WriteInt(PlayersMax, ref maxData); RagonHeader.WriteInt(PlayersMax, ref maxData);
idRaw.CopyTo(idData);
Send(peerId, data); Send(peerId, data);
} }
+7 -3
View File
@@ -94,9 +94,13 @@ namespace Ragon.Core
public Room Join(uint peerId, ReadOnlySpan<byte> payload) public Room Join(uint peerId, ReadOnlySpan<byte> payload)
{ {
var map = Encoding.UTF8.GetString(payload); var minData = payload.Slice(0, 2);
var min = 0; var maxData = payload.Slice(2, 2);
var max = 0; var mapData = payload.Slice(4, payload.Length - 4);
var map = Encoding.UTF8.GetString(mapData);
var min = RagonHeader.ReadUShort(ref minData);
var max = RagonHeader.ReadUShort(ref maxData);
Room room = null; Room room = null;
if (_rooms.Count > 0) if (_rooms.Count > 0)