From b8b10de08a409c28fb4ca25e3d94e8b4f682efe7 Mon Sep 17 00:00:00 2001 From: Syntriax Date: Thu, 8 Feb 2024 17:59:04 +0300 Subject: [PATCH] wip: INetworkBehaviour --- Engine | 2 +- Game/Network/INetworkBehaviour.cs | 15 +++++++++++++++ Game/Network/NetworkBehaviour.cs | 32 +++++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 Game/Network/INetworkBehaviour.cs create mode 100644 Game/Network/NetworkBehaviour.cs diff --git a/Engine b/Engine index 72492a9..be06575 160000 --- a/Engine +++ b/Engine @@ -1 +1 @@ -Subproject commit 72492a9f5a186afd4e7ff7c27d592a194a06f543 +Subproject commit be06575f913c2b649f53c9fe7a8ed33abdf5734f diff --git a/Game/Network/INetworkBehaviour.cs b/Game/Network/INetworkBehaviour.cs new file mode 100644 index 0000000..da667bb --- /dev/null +++ b/Game/Network/INetworkBehaviour.cs @@ -0,0 +1,15 @@ +using Syntriax.Engine.Core.Abstract; + +namespace Pong.Network; + +public interface INetworkBehaviour : IBehaviour +{ + int NetworkId { get; } + + bool LocalAssigned { get; } + + bool IsServer { get; } + bool IsClient { get; } + + INetworkCommunicator NetworkCommunicator { get; } +} diff --git a/Game/Network/NetworkBehaviour.cs b/Game/Network/NetworkBehaviour.cs new file mode 100644 index 0000000..c70cf6f --- /dev/null +++ b/Game/Network/NetworkBehaviour.cs @@ -0,0 +1,32 @@ +using Syntriax.Engine.Core; + +namespace Pong.Network; + +public class NetworkBehaviour : BehaviourOverride, INetworkBehaviour +{ + public int NetworkId { get; private set; } = 0; + + public bool LocalAssigned { get; private set; } = false; + + public bool IsServer { get; private set; } = false; + public bool IsClient { get; private set; } = false; + + public INetworkCommunicator NetworkCommunicator { get; private set; } = null!; + + protected override void OnInitialize() + { + if ((BehaviourController.GetBehaviourInParent() ?? GameObject.GameManager.FindBehaviour()) is not NetworkCommunicator) + throw new System.Exception($"Could not find an {nameof(INetworkCommunicator)}."); + + if (NetworkCommunicator is INetworkServer server) + { + IsServer = true; + LocalAssigned = true; + + // TODO Set and send Network Id + } + else + IsClient = true; + } + +}