feat: ball networking
This commit is contained in:
@@ -8,7 +8,8 @@ using Syntriax.Engine.Systems.Input;
|
||||
|
||||
namespace Pong.Behaviours;
|
||||
|
||||
public class PongManagerBehaviour : Behaviour
|
||||
public class PongManagerBehaviour : Behaviour, INetworkEntity,
|
||||
IPacketListenerServer<PongManagerBehaviour.RequestStartPacket>
|
||||
{
|
||||
public Action<PongManagerBehaviour>? OnReset { get; set; } = null;
|
||||
public Action<PongManagerBehaviour>? OnFinished { get; set; } = null;
|
||||
@@ -32,7 +33,7 @@ public class PongManagerBehaviour : Behaviour
|
||||
protected override void OnFirstActiveFrame()
|
||||
{
|
||||
IButtonInputs<Keys> buttonInputs = Universe.FindRequired<IButtonInputs<Keys>>();
|
||||
buttonInputs.RegisterOnRelease(Keys.Space, (_, _1) => Reset());
|
||||
buttonInputs.RegisterOnRelease(Keys.Space, (_, _1) => networkClient?.SendToServer(new RequestStartPacket()));
|
||||
|
||||
ball = Universe.FindRequiredBehaviour<BallBehaviour>();
|
||||
networkClient = Universe.Find<INetworkCommunicatorClient>();
|
||||
@@ -87,4 +88,14 @@ public class PongManagerBehaviour : Behaviour
|
||||
bool isBackwards = (random.Next() % 2) == 1;
|
||||
return Vector2D.Right.Rotate(isBackwards ? rotation + Syntriax.Engine.Core.Math.PI : rotation);
|
||||
}
|
||||
|
||||
void IPacketListenerServer<RequestStartPacket>.OnServerPacketArrived(RequestStartPacket packet, string from)
|
||||
{
|
||||
if (ball.RigidBody.Velocity.MagnitudeSquared > 0.01f)
|
||||
return;
|
||||
|
||||
ball.LaunchBall(GetBallLaunchDirection());
|
||||
}
|
||||
|
||||
private class RequestStartPacket : INetworkPacket;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user