From 5df09f64e2eca0731440199aadc03d3f6516526b Mon Sep 17 00:00:00 2001 From: Syntriax Date: Sat, 21 Jun 2025 00:35:32 +0300 Subject: [PATCH] refactor: pong universe client and server application code separated --- Platforms/Desktop/Program.cs | 24 +++++++++---- Platforms/Server/Program.cs | 6 ++-- Shared/PongUniverse.cs | 66 +++++++++++++++++------------------- 3 files changed, 52 insertions(+), 44 deletions(-) diff --git a/Platforms/Desktop/Program.cs b/Platforms/Desktop/Program.cs index 09aaa36..4292788 100644 --- a/Platforms/Desktop/Program.cs +++ b/Platforms/Desktop/Program.cs @@ -4,23 +4,33 @@ using System.Linq; using Microsoft.Xna.Framework.Graphics; +using Pong; + using Syntriax.Engine.Core; using Syntriax.Engine.Core.Debug; +using Syntriax.Engine.Core.Serialization; using Syntriax.Engine.Integration.MonoGame; - -bool isServerEnabled = Environment.GetCommandLineArgs().FirstOrDefault(x => x.CompareTo("--server") == 0) is not null; +using Syntriax.Engine.Serializers.Yaml; Universe universe = new(); -FileLogger fileLogger = new($"{Path.Combine(Directory.GetCurrentDirectory(), "logs", DateTime.UtcNow.ToString("yyyy-MM-dd_HH-mm-ss"))}.log"); +ISerializer serializer = new YamlSerializer(); + +ILogger logger = new FileLogger($"logs/{DateTime.UtcNow:yyyy-MM-dd_HH-mm-ss}.log"); #if DEBUG -universe.InstantiateUniverseObject().SetUniverseObject("Logger").BehaviourController.AddBehaviour().Logger = new LoggerWrapper(fileLogger, new ConsoleLogger()); -#else -universe.InstantiateUniverseObject().SetUniverseObject("Logger").BehaviourController.AddBehaviour().Logger = firstLogger; +logger = new LoggerWrapper(logger, new ConsoleLogger()); #endif -Pong.PongUniverse.ApplyPongUniverse(universe, isServerEnabled, isClientEnabled: true); +universe.InstantiateUniverseObject().SetUniverseObject("Logger").BehaviourController.AddBehaviour().Logger = logger; + +bool isServerEnabled = Environment.GetCommandLineArgs().FirstOrDefault(x => x.CompareTo("--server") == 0) is not null; + +if (isServerEnabled) + PongUniverse.ApplyPongServer(universe, 8888); + +PongUniverse.ApplyPongClient(universe, "localhost", 8888); +PongUniverse.ApplyPongUniverse(universe); universe.InstantiateUniverseObject().SetUniverseObject("Desktop HO") .BehaviourController.AddBehaviour(); diff --git a/Platforms/Server/Program.cs b/Platforms/Server/Program.cs index 68f7050..0dcf651 100644 --- a/Platforms/Server/Program.cs +++ b/Platforms/Server/Program.cs @@ -1,5 +1,4 @@ using System; -using System.IO; using System.Threading; using Syntriax.Engine.Core; @@ -7,11 +6,12 @@ using Syntriax.Engine.Core.Debug; Universe universe = new(); -FileLogger fileLogger = new($"{Path.Combine(Directory.GetCurrentDirectory(), "logs", DateTime.UtcNow.ToString("yyyy-MM-dd_HH-mm-ss"))}.log"); +FileLogger fileLogger = new($"logs/{DateTime.UtcNow:yyyy-MM-dd_HH-mm-ss}.log"); universe.InstantiateUniverseObject().SetUniverseObject("Logger").BehaviourController .AddBehaviour().Logger = new LoggerWrapper(fileLogger, new ConsoleLogger()); -Pong.PongUniverse.ApplyPongUniverse(universe, isServerEnabled: true, isClientEnabled: false); +Pong.PongUniverse.ApplyPongServer(universe, int.Parse(Environment.GetEnvironmentVariable("PORT") ?? "8888")); +Pong.PongUniverse.ApplyPongUniverse(universe); DateTime lastRun = DateTime.UtcNow; TimeSpan interval = new(0, 0, 0, 0, 16); diff --git a/Shared/PongUniverse.cs b/Shared/PongUniverse.cs index ea1d800..d37c68c 100644 --- a/Shared/PongUniverse.cs +++ b/Shared/PongUniverse.cs @@ -15,43 +15,47 @@ namespace Pong; public static class PongUniverse { - public static IUniverse ApplyPongUniverse(Universe universe, bool isServerEnabled, bool isClientEnabled) + public static IUniverse ApplyPongClient(Universe universe, string server, int port) { - if (isServerEnabled) - { - LiteNetLibServer server = universe.InstantiateUniverseObject().SetUniverseObject("Server").BehaviourController.AddBehaviour(); - server.BehaviourController.AddBehaviour(); - server.Start(8888, 2); - } + LiteNetLibClient client = universe.InstantiateUniverseObject().SetUniverseObject("Client").BehaviourController.AddBehaviour(); + client.BehaviourController.AddBehaviour(); + client.Connect(server, port); - if (isClientEnabled) - { - LiteNetLibClient client = universe.InstantiateUniverseObject().SetUniverseObject("Client").BehaviourController.AddBehaviour(); - client.BehaviourController.AddBehaviour(); - client.Connect("localhost", 8888); + DrawManager drawManager = universe.InstantiateUniverseObject().SetUniverseObject("Draw Manager").BehaviourController.AddBehaviour(); + universe.InstantiateUniverseObject().SetUniverseObject("Triangle Batcher", drawManager.UniverseObject).BehaviourController.AddBehaviour(); + universe.InstantiateUniverseObject().SetUniverseObject("Sprite Batcher", drawManager.UniverseObject).BehaviourController.AddBehaviour(); - DrawManager drawManager = universe.InstantiateUniverseObject().SetUniverseObject("Draw Manager").BehaviourController.AddBehaviour(); - universe.InstantiateUniverseObject().SetUniverseObject("Triangle Batcher", drawManager.UniverseObject).BehaviourController.AddBehaviour(); - universe.InstantiateUniverseObject().SetUniverseObject("Sprite Batcher", drawManager.UniverseObject).BehaviourController.AddBehaviour(); + //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// + universe.InstantiateUniverseObject().SetUniverseObject("Camera") + .BehaviourController.AddBehaviour() + .BehaviourController.AddBehaviour() + .BehaviourController.AddBehaviour(); - universe.InstantiateUniverseObject().SetUniverseObject("Camera") - .BehaviourController.AddBehaviour() - .BehaviourController.AddBehaviour() - .BehaviourController.AddBehaviour(); + //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// + universe.InstantiateUniverseObject().SetUniverseObject("Score Left") + .BehaviourController.AddBehaviour().SetTransform(position: new Vector2D(-250f, 250f), scale: Vector2D.One * .25f) + .BehaviourController.AddBehaviour(true); - universe.InstantiateUniverseObject().SetUniverseObject("Score Left") - .BehaviourController.AddBehaviour().SetTransform(position: new Vector2D(-250f, 250f), scale: Vector2D.One * .25f) - .BehaviourController.AddBehaviour(true); + universe.InstantiateUniverseObject().SetUniverseObject("Score Right") + .BehaviourController.AddBehaviour().SetTransform(position: new Vector2D(250f, 250f), scale: Vector2D.One * .25f) + .BehaviourController.AddBehaviour(false); - universe.InstantiateUniverseObject().SetUniverseObject("Score Right") - .BehaviourController.AddBehaviour().SetTransform(position: new Vector2D(250f, 250f), scale: Vector2D.One * .25f) - .BehaviourController.AddBehaviour(false); - } + return universe; + } + public static IUniverse ApplyPongServer(Universe universe, int port) + { + LiteNetLibServer server = universe.InstantiateUniverseObject().SetUniverseObject("Server").BehaviourController.AddBehaviour(); + server.BehaviourController.AddBehaviour(); + server.Start(port, 2); + + return universe; + } + + public static IUniverse ApplyPongUniverse(Universe universe) + { universe.InstantiateUniverseObject().SetUniverseObject("Update Manager").BehaviourController.AddBehaviour(); universe.InstantiateUniverseObject().SetUniverseObject("Coroutine Manager").BehaviourController.AddBehaviour(); universe.InstantiateUniverseObject().SetUniverseObject("Tween Manager").BehaviourController.AddBehaviour(); @@ -116,10 +120,4 @@ public static class PongUniverse return universe; } - - public static IUniverse GetPongUniverse(bool isServerEnabled, bool isClientEnabled) - { - Universe universe = new(); - return ApplyPongUniverse(universe, isServerEnabled, isClientEnabled); - } }