refactor: added server project
This commit is contained in:
@@ -22,7 +22,7 @@ public class PaddleBehaviour(Keys Up, Keys Down, float High, float Low, float Sp
|
||||
private bool isUpPressed = false;
|
||||
private bool isDownPressed = false;
|
||||
|
||||
private IButtonInputs<Keys> inputs = null!;
|
||||
private IButtonInputs<Keys>? inputs = null;
|
||||
private INetworkCommunicatorClient? networkClient = null!;
|
||||
private INetworkCommunicatorServer? networkServer = null;
|
||||
private IRigidBody2D rigidBody = null!;
|
||||
@@ -44,25 +44,25 @@ public class PaddleBehaviour(Keys Up, Keys Down, float High, float Low, float Sp
|
||||
public void FirstActiveFrame()
|
||||
{
|
||||
physicsEngine2D = Universe.FindRequiredBehaviour<IPhysicsEngine2D>();
|
||||
inputs = Universe.FindRequiredBehaviour<IButtonInputs<Keys>>();
|
||||
inputs = Universe.FindBehaviour<IButtonInputs<Keys>>();
|
||||
networkClient = Universe.FindBehaviour<INetworkCommunicatorClient>();
|
||||
networkServer = Universe.FindBehaviour<INetworkCommunicatorServer>();
|
||||
rigidBody = BehaviourController.GetRequiredBehaviour<IRigidBody2D>();
|
||||
|
||||
inputs.RegisterOnPress(Up, OnUpPressed);
|
||||
inputs.RegisterOnRelease(Up, OnUpReleased);
|
||||
inputs?.RegisterOnPress(Up, OnUpPressed);
|
||||
inputs?.RegisterOnRelease(Up, OnUpReleased);
|
||||
|
||||
inputs.RegisterOnPress(Down, OnDownPressed);
|
||||
inputs.RegisterOnRelease(Down, OnDownReleased);
|
||||
inputs?.RegisterOnPress(Down, OnDownPressed);
|
||||
inputs?.RegisterOnRelease(Down, OnDownReleased);
|
||||
}
|
||||
|
||||
protected override void OnFinalize()
|
||||
{
|
||||
inputs.UnregisterOnPress(Up, OnUpPressed);
|
||||
inputs.UnregisterOnRelease(Up, OnUpReleased);
|
||||
inputs?.UnregisterOnPress(Up, OnUpPressed);
|
||||
inputs?.UnregisterOnRelease(Up, OnUpReleased);
|
||||
|
||||
inputs.UnregisterOnPress(Down, OnDownPressed);
|
||||
inputs.UnregisterOnRelease(Down, OnDownReleased);
|
||||
inputs?.UnregisterOnPress(Down, OnDownPressed);
|
||||
inputs?.UnregisterOnRelease(Down, OnDownReleased);
|
||||
}
|
||||
|
||||
private void OnUpPressed(IButtonInputs<Keys> sender, IButtonInputs<Keys>.ButtonCallbackArguments args) { isUpPressed = true; networkClient?.SendToServer(new PaddleKeyStatePacket(this)); }
|
||||
|
@@ -32,8 +32,8 @@ public class PongManagerBehaviour : Behaviour, INetworkEntity, IFirstFrameUpdate
|
||||
|
||||
public void FirstActiveFrame()
|
||||
{
|
||||
IButtonInputs<Keys> buttonInputs = Universe.FindRequired<IButtonInputs<Keys>>();
|
||||
buttonInputs.RegisterOnRelease(Keys.Space, (_, _1) => networkClient?.SendToServer(new RequestStartPacket()));
|
||||
IButtonInputs<Keys>? buttonInputs = Universe.FindBehaviour<IButtonInputs<Keys>>();
|
||||
buttonInputs?.RegisterOnRelease(Keys.Space, (_, _1) => networkClient?.SendToServer(new RequestStartPacket()));
|
||||
|
||||
ball = Universe.FindRequiredBehaviour<BallBehaviour>();
|
||||
networkClient = Universe.FindBehaviour<INetworkCommunicatorClient>();
|
||||
|
@@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
|
||||
using Microsoft.Xna.Framework.Input;
|
||||
|
||||
@@ -14,106 +13,109 @@ using Syntriax.Engine.Systems.Tween;
|
||||
|
||||
namespace Pong;
|
||||
|
||||
public class GamePong : MonoGameWindow
|
||||
public static class PongUniverse
|
||||
{
|
||||
protected override void Initialize()
|
||||
public static IUniverse GetPongUniverse(bool isServerEnabled, bool isClientEnabled)
|
||||
{
|
||||
base.Initialize();
|
||||
Universe universe = new();
|
||||
|
||||
if (Environment.GetCommandLineArgs().FirstOrDefault(x => x.CompareTo("-server") == 0) is not null)
|
||||
if (isServerEnabled)
|
||||
{
|
||||
LiteNetLibServer server = Universe.InstantiateUniverseObject().SetUniverseObject("Server").BehaviourController.AddBehaviour<LiteNetLibServer>();
|
||||
LiteNetLibServer server = universe.InstantiateUniverseObject().SetUniverseObject("Server").BehaviourController.AddBehaviour<LiteNetLibServer>();
|
||||
server.BehaviourController.AddBehaviour<NetworkManager>();
|
||||
server.Start(8888, 2);
|
||||
Window.Title = $"Server";
|
||||
}
|
||||
else
|
||||
|
||||
if (isClientEnabled)
|
||||
{
|
||||
LiteNetLibClient client = Universe.InstantiateUniverseObject().SetUniverseObject("Client").BehaviourController.AddBehaviour<LiteNetLibClient>();
|
||||
LiteNetLibClient client = universe.InstantiateUniverseObject().SetUniverseObject("Client").BehaviourController.AddBehaviour<LiteNetLibClient>();
|
||||
client.BehaviourController.AddBehaviour<NetworkManager>();
|
||||
client.Connect("localhost", 8888);
|
||||
Window.Title = $"Client";
|
||||
|
||||
DrawManager drawManager = Universe.InstantiateUniverseObject().SetUniverseObject("Draw Manager").BehaviourController.AddBehaviour<DrawManager>();
|
||||
Universe.InstantiateUniverseObject().SetUniverseObject("Shape Batcher", drawManager.UniverseObject).BehaviourController.AddBehaviour<ShapeBatcher>();
|
||||
Universe.InstantiateUniverseObject().SetUniverseObject("Sprite Batcher", drawManager.UniverseObject).BehaviourController.AddBehaviour<SpriteBatcher>();
|
||||
DrawManager drawManager = universe.InstantiateUniverseObject().SetUniverseObject("Draw Manager").BehaviourController.AddBehaviour<DrawManager>();
|
||||
universe.InstantiateUniverseObject().SetUniverseObject("Shape Batcher", drawManager.UniverseObject).BehaviourController.AddBehaviour<ShapeBatcher>();
|
||||
universe.InstantiateUniverseObject().SetUniverseObject("Sprite Batcher", drawManager.UniverseObject).BehaviourController.AddBehaviour<SpriteBatcher>();
|
||||
|
||||
Universe.InstantiateUniverseObject().SetUniverseObject("Score Left")
|
||||
////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
universe.InstantiateUniverseObject().SetUniverseObject("Camera")
|
||||
.BehaviourController.AddBehaviour<Transform2D>()
|
||||
.BehaviourController.AddBehaviour<CameraController>()
|
||||
.BehaviourController.AddBehaviour<MonoGameCamera2DBehaviour>();
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
universe.InstantiateUniverseObject().SetUniverseObject("Score Left")
|
||||
.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(-250f, 250f), scale: Vector2D.One * .25f)
|
||||
.BehaviourController.AddBehaviour<TextScoreBehaviour>(true);
|
||||
|
||||
Universe.InstantiateUniverseObject().SetUniverseObject("Score Right")
|
||||
universe.InstantiateUniverseObject().SetUniverseObject("Score Right")
|
||||
.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(250f, 250f), scale: Vector2D.One * .25f)
|
||||
.BehaviourController.AddBehaviour<TextScoreBehaviour>(false);
|
||||
}
|
||||
|
||||
Universe.InstantiateUniverseObject().SetUniverseObject("Update Manager").BehaviourController.AddBehaviour<UpdateManager>();
|
||||
Universe.InstantiateUniverseObject().SetUniverseObject("Coroutine Manager").BehaviourController.AddBehaviour<CoroutineManager>();
|
||||
Universe.InstantiateUniverseObject().SetUniverseObject("Tween Manager").BehaviourController.AddBehaviour<TweenManager>();
|
||||
Universe.InstantiateUniverseObject().SetUniverseObject("Physics Engine 2D").BehaviourController.AddBehaviour<PhysicsEngine2D>();
|
||||
universe.InstantiateUniverseObject().SetUniverseObject("Update Manager").BehaviourController.AddBehaviour<UpdateManager>();
|
||||
universe.InstantiateUniverseObject().SetUniverseObject("Coroutine Manager").BehaviourController.AddBehaviour<CoroutineManager>();
|
||||
universe.InstantiateUniverseObject().SetUniverseObject("Tween Manager").BehaviourController.AddBehaviour<TweenManager>();
|
||||
universe.InstantiateUniverseObject().SetUniverseObject("Physics Engine 2D").BehaviourController.AddBehaviour<PhysicsEngine2D>();
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Universe.InstantiateUniverseObject().SetUniverseObject("Camera")
|
||||
.BehaviourController.AddBehaviour<Transform2D>()
|
||||
.BehaviourController.AddBehaviour<CameraController>()
|
||||
.BehaviourController.AddBehaviour<MonoGameCamera2DBehaviour>();
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
PongManagerBehaviour pongManager = Universe.InstantiateUniverseObject().SetUniverseObject("Pong Game Manager")
|
||||
PongManagerBehaviour pongManager = universe.InstantiateUniverseObject().SetUniverseObject("Pong Game Manager")
|
||||
.BehaviourController.AddBehaviour<PongManagerBehaviour>(5);
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Universe.InstantiateUniverseObject().SetUniverseObject("Ball")
|
||||
.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(0, 0f), scale: new Vector2D(10f, 10f))
|
||||
.BehaviourController.AddBehaviour<CircleBehaviour>(new Circle(Vector2D.Zero, 1f))
|
||||
.BehaviourController.AddBehaviour<BallBehaviour>()
|
||||
.BehaviourController.AddBehaviour<RigidBody2D>();
|
||||
universe.InstantiateUniverseObject().SetUniverseObject("Ball")
|
||||
.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(0, 0f), scale: new Vector2D(10f, 10f))
|
||||
.BehaviourController.AddBehaviour<CircleBehaviour>(new Circle(Vector2D.Zero, 1f))
|
||||
.BehaviourController.AddBehaviour<BallBehaviour>()
|
||||
.BehaviourController.AddBehaviour<RigidBody2D>();
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
IUniverseObject leftPaddle = UniverseObjectFactory.Instantiate().SetUniverseObject("Left Paddle");
|
||||
leftPaddle.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(-468f, 0f), scale: new Vector2D(15f, 60f))
|
||||
.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square)
|
||||
.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
|
||||
.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square)
|
||||
.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
|
||||
PaddleBehaviour leftPaddleBehaviour = BehaviourFactory.Instantiate<PaddleBehaviour>(Keys.W, Keys.S, 228f, -228f, 400f);
|
||||
leftPaddleBehaviour.Id = "lp";
|
||||
leftPaddle.BehaviourController.AddBehaviour(leftPaddleBehaviour);
|
||||
Universe.Register(leftPaddle);
|
||||
universe.Register(leftPaddle);
|
||||
|
||||
IUniverseObject rightPaddle = UniverseObjectFactory.Instantiate().SetUniverseObject("Right Paddle");
|
||||
rightPaddle.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(468f, 0f), scale: new Vector2D(15f, 60f))
|
||||
.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square)
|
||||
.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
|
||||
.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square)
|
||||
.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
|
||||
PaddleBehaviour rightPaddleBehaviour = BehaviourFactory.Instantiate<PaddleBehaviour>(Keys.Up, Keys.Down, 228f, -228f, 400f);
|
||||
rightPaddleBehaviour.Id = "rp";
|
||||
rightPaddle.BehaviourController.AddBehaviour(rightPaddleBehaviour);
|
||||
Universe.Register(rightPaddle);
|
||||
universe.Register(rightPaddle);
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Universe.InstantiateUniverseObject().SetUniverseObject("Wall Top")
|
||||
universe.InstantiateUniverseObject().SetUniverseObject("Wall Top")
|
||||
.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(0f, 308f), scale: new Vector2D(552f, 20f))
|
||||
.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square)
|
||||
.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
|
||||
|
||||
Universe.InstantiateUniverseObject().SetUniverseObject("Wall Bottom")
|
||||
universe.InstantiateUniverseObject().SetUniverseObject("Wall Bottom")
|
||||
.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(0f, -308f), scale: new Vector2D(552f, 20f))
|
||||
.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square)
|
||||
.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
|
||||
|
||||
Universe.InstantiateUniverseObject().SetUniverseObject("Wall Right")
|
||||
universe.InstantiateUniverseObject().SetUniverseObject("Wall Right")
|
||||
.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(532f, 0f), scale: new Vector2D(20f, 328f))
|
||||
.BehaviourController.AddBehaviour<WallScoreBehaviour>((Action)pongManager.ScoreToLeft)
|
||||
.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square)
|
||||
.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
|
||||
|
||||
Universe.InstantiateUniverseObject().SetUniverseObject("Wall Left")
|
||||
universe.InstantiateUniverseObject().SetUniverseObject("Wall Left")
|
||||
.BehaviourController.AddBehaviour<Transform2D>().SetTransform(position: new Vector2D(-532f, 0f), scale: new Vector2D(20f, 328f))
|
||||
.BehaviourController.AddBehaviour<WallScoreBehaviour>((Action)pongManager.ScoreToRight)
|
||||
.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape2D.Square)
|
||||
.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
|
||||
|
||||
return universe;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user