Test
This commit is contained in:
11
Game/Network/Abstract/INetworkBehaviour.cs
Normal file
11
Game/Network/Abstract/INetworkBehaviour.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
using Syntriax.Engine.Core.Abstract;
|
||||
|
||||
namespace Syntriax.Engine.Network.Abstract;
|
||||
|
||||
public interface INetworkBehaviour : IBehaviour, INetworkEntity
|
||||
{
|
||||
bool IsServer { get; }
|
||||
bool IsClient { get; }
|
||||
|
||||
INetworkCommunicator NetworkCommunicator { get; }
|
||||
}
|
19
Game/Network/Abstract/INetworkCommunicator.cs
Normal file
19
Game/Network/Abstract/INetworkCommunicator.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
using LiteNetLib;
|
||||
using LiteNetLib.Utils;
|
||||
|
||||
namespace Syntriax.Engine.Network.Abstract;
|
||||
|
||||
public interface INetworkCommunicator
|
||||
{
|
||||
EventBasedNetListener Listener { get; }
|
||||
NetManager Manager { get; }
|
||||
|
||||
void PollEvents();
|
||||
void Stop();
|
||||
|
||||
void RegisterEntityPacketListener<T>(INetworkEntity networkEntity, EntityPacketReceivedDelegate onPacketReceived) where T : INetSerializable;
|
||||
void UnregisterEntityPacketListener<T>(INetworkEntity networkEntity, EntityPacketReceivedDelegate onPacketReceived) where T : INetSerializable;
|
||||
void SendEntityPacket<T>(INetworkEntity networkEntity, T packet, params NetPeer[] netPeer) where T : INetSerializable;
|
||||
|
||||
delegate void EntityPacketReceivedDelegate(INetworkEntity networkEntity, object packet, NetPeer netPeer);
|
||||
}
|
6
Game/Network/Abstract/INetworkCommunicatorClient.cs
Normal file
6
Game/Network/Abstract/INetworkCommunicatorClient.cs
Normal file
@@ -0,0 +1,6 @@
|
||||
namespace Syntriax.Engine.Network.Abstract;
|
||||
|
||||
public interface INetworkCommunicatorClient : INetworkCommunicator
|
||||
{
|
||||
void Connect(string address, int port, string? password = null);
|
||||
}
|
10
Game/Network/Abstract/INetworkCommunicatorServer.cs
Normal file
10
Game/Network/Abstract/INetworkCommunicatorServer.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
namespace Syntriax.Engine.Network.Abstract;
|
||||
|
||||
public interface INetworkCommunicatorServer : INetworkCommunicator
|
||||
{
|
||||
string Password { get; }
|
||||
int MaxConnectionCount { get; }
|
||||
int Port { get; }
|
||||
|
||||
void Start(int port, int maxConnectionCount, string? password = null);
|
||||
}
|
17
Game/Network/Abstract/INetworkEntity.cs
Normal file
17
Game/Network/Abstract/INetworkEntity.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
using LiteNetLib.Utils;
|
||||
|
||||
namespace Syntriax.Engine.Network.Abstract;
|
||||
|
||||
public interface INetworkEntity
|
||||
{
|
||||
event OnNetworkIdChangedDelegate? OnNetworkIdChanged;
|
||||
|
||||
uint NetworkId { get; set; }
|
||||
|
||||
delegate void OnNetworkIdChangedDelegate(INetworkEntity sender, uint previousId);
|
||||
delegate void PacketReceivedDelegate(INetworkEntity entity, object packet);
|
||||
|
||||
void RegisterPacketListener<T>(PacketReceivedDelegate onPacketReceived) where T : INetSerializable;
|
||||
void UnregisterPacketListener<T>(PacketReceivedDelegate onPacketReceived) where T : INetSerializable;
|
||||
void SendPacket<T>(T packet) where T : INetSerializable;
|
||||
}
|
10
Game/Network/Abstract/INetworkManager.cs
Normal file
10
Game/Network/Abstract/INetworkManager.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
namespace Syntriax.Engine.Network.Abstract;
|
||||
|
||||
public interface INetworkManager
|
||||
{
|
||||
// Action<IGameObject>? OnNetworkGameObjectInstantiated { get; set; }
|
||||
|
||||
INetworkCommunicator NetworkCommunicator { get; }
|
||||
|
||||
// Task<T> Instantiate<T>(params object?[]? args) where T : class, IGameObject;
|
||||
}
|
21
Game/Network/Abstract/NetworkPacket.cs
Normal file
21
Game/Network/Abstract/NetworkPacket.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
using LiteNetLib.Utils;
|
||||
|
||||
namespace Syntriax.Engine.Network.Abstract;
|
||||
|
||||
public class NetworkPacket<T>()
|
||||
: INetSerializable
|
||||
where T : INetSerializable
|
||||
{
|
||||
public uint NetworkId = 0;
|
||||
public T Data = default!;
|
||||
|
||||
public void Deserialize(NetDataReader reader)
|
||||
{
|
||||
NetworkId = reader.GetUInt();
|
||||
}
|
||||
|
||||
public void Serialize(NetDataWriter writer)
|
||||
{
|
||||
writer.Put(NetworkId);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user