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 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);
}
}
+8 -2
View File
@@ -15,7 +15,7 @@ namespace Ragon.Core
public int PlayersMin { get; private set; }
public int PlayersMax { get; private set; }
public int PlayersCount => _players.Count;
public string Id { get; private set; }
public string Map { get; private set; }
private ILogger _logger = LogManager.GetCurrentClassLogger();
@@ -40,6 +40,7 @@ namespace Ragon.Core
Map = map;
PlayersMin = min;
PlayersMax = max;
Id = Guid.NewGuid().ToString();
_logger.Info("Room created");
_plugin.Attach(this);
@@ -65,12 +66,15 @@ namespace Ragon.Core
_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> peerData = data.Slice(2, 4);
Span<byte> ownerData = data.Slice(4, 4);
Span<byte> minData = data.Slice(10, 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.WriteInt((int) peerId, ref peerData);
@@ -78,6 +82,8 @@ namespace Ragon.Core
RagonHeader.WriteInt(PlayersMin, ref minData);
RagonHeader.WriteInt(PlayersMax, ref maxData);
idRaw.CopyTo(idData);
Send(peerId, data);
}
+7 -3
View File
@@ -94,9 +94,13 @@ namespace Ragon.Core
public Room Join(uint peerId, ReadOnlySpan<byte> payload)
{
var map = Encoding.UTF8.GetString(payload);
var min = 0;
var max = 0;
var minData = payload.Slice(0, 2);
var maxData = payload.Slice(2, 2);
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;
if (_rooms.Count > 0)