refactor: network implementations switched to universe objects

This commit is contained in:
2025-05-25 13:34:45 +03:00
parent 0da5ac6f57
commit 12f4950ffb
9 changed files with 82 additions and 49 deletions

View File

@@ -22,7 +22,7 @@ public class PaddleBehaviour(Keys Up, Keys Down, float High, float Low, float Sp
private bool isDownPressed = false;
private IButtonInputs<Keys> inputs = null!;
private INetworkCommunicatorClient networkClient = null!;
private INetworkCommunicatorClient? networkClient = null!;
private INetworkCommunicatorServer? networkServer = null;
private TweenManager tweenManager = null!;
@@ -41,9 +41,9 @@ public class PaddleBehaviour(Keys Up, Keys Down, float High, float Low, float Sp
protected override void OnFirstActiveFrame()
{
inputs = Universe.FindRequiredBehaviour<IButtonInputs<Keys>>();
networkClient = Universe.FindRequiredBehaviour<INetworkCommunicatorClient>();
networkServer = Universe.FindBehaviour<INetworkCommunicatorServer>();
inputs = Universe.FindRequired<IButtonInputs<Keys>>();
networkClient = Universe.Find<INetworkCommunicatorClient>();
networkServer = Universe.Find<INetworkCommunicatorServer>();
tweenManager = Universe.GetRequiredUniverseObject<TweenManager>();
inputs.RegisterOnPress(Up, OnUpPressed);
@@ -62,10 +62,10 @@ public class PaddleBehaviour(Keys Up, Keys Down, float High, float Low, float Sp
inputs.UnregisterOnRelease(Down, OnDownReleased);
}
private void OnUpPressed(IButtonInputs<Keys> inputs, Keys keys) { isUpPressed = true; networkClient.SendToServer(new PaddleKeyStatePacket(this)); }
private void OnUpReleased(IButtonInputs<Keys> inputs, Keys keys) { isUpPressed = false; networkClient.SendToServer(new PaddleKeyStatePacket(this)); }
private void OnDownPressed(IButtonInputs<Keys> inputs, Keys keys) { isDownPressed = true; networkClient.SendToServer(new PaddleKeyStatePacket(this)); }
private void OnDownReleased(IButtonInputs<Keys> inputs, Keys keys) { isDownPressed = false; networkClient.SendToServer(new PaddleKeyStatePacket(this)); }
private void OnUpPressed(IButtonInputs<Keys> inputs, Keys keys) { isUpPressed = true; networkClient?.SendToServer(new PaddleKeyStatePacket(this)); }
private void OnUpReleased(IButtonInputs<Keys> inputs, Keys keys) { isUpPressed = false; networkClient?.SendToServer(new PaddleKeyStatePacket(this)); }
private void OnDownPressed(IButtonInputs<Keys> inputs, Keys keys) { isDownPressed = true; networkClient?.SendToServer(new PaddleKeyStatePacket(this)); }
private void OnDownReleased(IButtonInputs<Keys> inputs, Keys keys) { isDownPressed = false; networkClient?.SendToServer(new PaddleKeyStatePacket(this)); }
public void OnServerPacketArrived(PaddleKeyStatePacket packet, string from)
{
@@ -73,6 +73,8 @@ public class PaddleBehaviour(Keys Up, Keys Down, float High, float Low, float Sp
return;
packet.Position = Transform.Position;
isUpPressed = packet.IsUpPressed;
isDownPressed = packet.IsDownPressed;
networkServer?.SendToClient("*", packet);
}

View File

@@ -22,7 +22,7 @@ public class PongManagerBehaviour : Behaviour,
private readonly Random random = new();
private BallBehaviour ball = null!;
private INetworkCommunicatorClient networkClient = null!;
private INetworkCommunicatorClient? networkClient = null!;
private INetworkCommunicatorServer? networkServer = null;
public int ScoreLeft { get; private set; } = 0;
@@ -36,12 +36,12 @@ public class PongManagerBehaviour : Behaviour,
protected override void OnFirstActiveFrame()
{
var buttonInputs = Universe.FindRequiredBehaviour<IButtonInputs<Keys>>();
buttonInputs.RegisterOnRelease(Keys.Space, (_, _1) => networkClient.SendToServer(new PongResetPacket()));
IButtonInputs<Keys> buttonInputs = Universe.FindRequired<IButtonInputs<Keys>>();
buttonInputs.RegisterOnRelease(Keys.Space, (_, _1) => networkClient?.SendToServer(new PongResetPacket()));
networkClient = Universe.FindRequiredBehaviour<INetworkCommunicatorClient>();
ball = Universe.FindRequiredBehaviour<BallBehaviour>();
networkServer = Universe.FindBehaviour<INetworkCommunicatorServer>();
networkClient = Universe.Find<INetworkCommunicatorClient>();
networkServer = Universe.Find<INetworkCommunicatorServer>();
}
public void ScoreToLeft()
@@ -92,6 +92,7 @@ public class PongManagerBehaviour : Behaviour,
return Vector2D.Right.Rotate(isBackwards ? rotation + Syntriax.Engine.Core.Math.PI : rotation);
}
public void OnClientPacketArrived(PongStartPacket packet) => ball.LaunchBall(packet.BallVelocity);
public void OnClientPacketArrived(PongResetPacket packet) => Reset();
public void OnClientPacketArrived(PongScoreUpdatePacket packet)
{
@@ -103,19 +104,17 @@ public class PongManagerBehaviour : Behaviour,
public void OnServerPacketArrived(PongResetPacket packet, string from)
{
Reset();
Vector2D ballVelocity = GetBallLaunchDirection();
ball.LaunchBall(ballVelocity);
networkServer?.SendToClient("*", new PongResetPacket());
networkServer?.SendToClient("*", new PongStartPacket() { BallVelocity = GetBallLaunchDirection() });
networkServer?.SendToClient("*", new PongStartPacket() { BallVelocity = ballVelocity });
}
public void OnServerPacketArrived(PongStartPacket packet, string from)
{
packet = new() { BallVelocity = GetBallLaunchDirection() };
networkServer?.SendToClient("*", packet);
}
public void OnClientPacketArrived(PongStartPacket packet)
{
ball.LaunchBall(packet.BallVelocity);
networkServer?.SendToClient("*", packet);
}
public class PongStartPacket : INetworkPacket