🚧 plugin system, webhook system

This commit is contained in:
2023-04-09 10:52:18 +04:00
parent f2edc94958
commit bfd6c1b54b
60 changed files with 762 additions and 267 deletions
+3 -2
View File
@@ -15,13 +15,14 @@
*/
using System.Diagnostics.CodeAnalysis;
using Ragon.Server.Room;
namespace Ragon.Server;
namespace Ragon.Server.Lobby;
public interface IRagonLobby
{
public bool FindRoomById(string roomId, [MaybeNullWhen(false)] out RagonRoom room);
public bool FindRoomByMap(string map, [MaybeNullWhen(false)] out RagonRoom room);
public void Persist(RagonRoom room);
public void RemoveIfEmpty(RagonRoom room);
public bool RemoveIfEmpty(RagonRoom room);
}
@@ -16,8 +16,9 @@
using System.Diagnostics.CodeAnalysis;
using NLog;
using Ragon.Server.Room;
namespace Ragon.Server;
namespace Ragon.Server.Lobby;
public class LobbyInMemory : IRagonLobby
{
@@ -28,8 +29,7 @@ public class LobbyInMemory : IRagonLobby
{
foreach (var existRagonRoom in _rooms)
{
var info = existRagonRoom.Info;
if (existRagonRoom.Id == RagonRoomId && info.Min < info.Max)
if (existRagonRoom.Id == RagonRoomId && existRagonRoom.PlayerMin < existRagonRoom.PlayerMax)
{
room = existRagonRoom;
return true;
@@ -44,8 +44,7 @@ public class LobbyInMemory : IRagonLobby
{
foreach (var existsRoom in _rooms)
{
var info = existsRoom.Info;
if (info.Map == map && existsRoom.Players.Count < info.Max)
if (existsRoom.Map == map && existsRoom.PlayerCount < existsRoom.PlayerMax)
{
room = existsRoom;
return true;
@@ -62,18 +61,23 @@ public class LobbyInMemory : IRagonLobby
_logger.Trace($"New room: {room.Id}");
foreach (var r in _rooms)
_logger.Trace($"Room: {r.Id} {r.Info} Players: {r.Players.Count} Entities: {r.Entities.Count}");
_logger.Trace($"Room: {r.Id} Map: {r.Map} Players: {r.Players.Count} Entities: {r.Entities.Count}");
}
public void RemoveIfEmpty(RagonRoom room)
public bool RemoveIfEmpty(RagonRoom room)
{
var result = false;
if (room.Players.Count == 0)
{
_rooms.Remove(room);
_logger.Trace($"Room {room.Id} removed");
result = true;
}
foreach (var r in _rooms)
_logger.Trace($"Room: {r.Id} {r.Info} Players: {r.Players.Count} Entities: {r.Entities.Count}");
_logger.Trace($"Room: {r.Id} Map: {r.Map} Players: {r.Players.Count} Entities: {r.Entities.Count}");
return result;
}
}
+9 -12
View File
@@ -14,28 +14,25 @@
* limitations under the License.
*/
namespace Ragon.Server;
namespace Ragon.Server.Lobby;
public enum LobbyPlayerStatus
public enum ConnectionStatus
{
Unauthorized,
InProcess,
Authorized,
}
public class RagonLobbyPlayer
{
public string Id { get; private set; }
public string Name { get; set; }
public byte[] AdditionalData { get; set; }
public LobbyPlayerStatus Status { get; set; }
public INetworkConnection Connection { get; private set; }
public string Name { get; private set; }
public string Payload { get; private set; }
public RagonLobbyPlayer(INetworkConnection connection)
public RagonLobbyPlayer(string id, string name, string payload)
{
Id = Guid.NewGuid().ToString();
Connection = connection;
Status = LobbyPlayerStatus.Unauthorized;
Name = "None";
AdditionalData = Array.Empty<byte>();
Id = id;
Name = name;
Payload = payload;
}
}