fixed: FindAndJoin
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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,7 +40,8 @@ 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,18 +66,23 @@ 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);
|
||||||
RagonHeader.WriteInt((int) _owner, ref ownerData);
|
RagonHeader.WriteInt((int) _owner, ref ownerData);
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user