refactor: pong universe client and server application code separated
This commit is contained in:
parent
abc467d1ea
commit
5df09f64e2
@ -4,23 +4,33 @@ using System.Linq;
|
|||||||
|
|
||||||
using Microsoft.Xna.Framework.Graphics;
|
using Microsoft.Xna.Framework.Graphics;
|
||||||
|
|
||||||
|
using Pong;
|
||||||
|
|
||||||
using Syntriax.Engine.Core;
|
using Syntriax.Engine.Core;
|
||||||
using Syntriax.Engine.Core.Debug;
|
using Syntriax.Engine.Core.Debug;
|
||||||
|
using Syntriax.Engine.Core.Serialization;
|
||||||
using Syntriax.Engine.Integration.MonoGame;
|
using Syntriax.Engine.Integration.MonoGame;
|
||||||
|
using Syntriax.Engine.Serializers.Yaml;
|
||||||
bool isServerEnabled = Environment.GetCommandLineArgs().FirstOrDefault(x => x.CompareTo("--server") == 0) is not null;
|
|
||||||
|
|
||||||
Universe universe = new();
|
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
|
#if DEBUG
|
||||||
universe.InstantiateUniverseObject().SetUniverseObject("Logger").BehaviourController.AddBehaviour<LoggerContainer>().Logger = new LoggerWrapper(fileLogger, new ConsoleLogger());
|
logger = new LoggerWrapper(logger, new ConsoleLogger());
|
||||||
#else
|
|
||||||
universe.InstantiateUniverseObject().SetUniverseObject("Logger").BehaviourController.AddBehaviour<LoggerContainer>().Logger = firstLogger;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Pong.PongUniverse.ApplyPongUniverse(universe, isServerEnabled, isClientEnabled: true);
|
universe.InstantiateUniverseObject().SetUniverseObject("Logger").BehaviourController.AddBehaviour<LoggerContainer>().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")
|
universe.InstantiateUniverseObject().SetUniverseObject("Desktop HO")
|
||||||
.BehaviourController.AddBehaviour<KeyboardInputsBehaviour>();
|
.BehaviourController.AddBehaviour<KeyboardInputsBehaviour>();
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.IO;
|
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
|
||||||
using Syntriax.Engine.Core;
|
using Syntriax.Engine.Core;
|
||||||
@ -7,11 +6,12 @@ using Syntriax.Engine.Core.Debug;
|
|||||||
|
|
||||||
Universe universe = new();
|
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
|
universe.InstantiateUniverseObject().SetUniverseObject("Logger").BehaviourController
|
||||||
.AddBehaviour<LoggerContainer>().Logger = new LoggerWrapper(fileLogger, new ConsoleLogger());
|
.AddBehaviour<LoggerContainer>().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;
|
DateTime lastRun = DateTime.UtcNow;
|
||||||
TimeSpan interval = new(0, 0, 0, 0, 16);
|
TimeSpan interval = new(0, 0, 0, 0, 16);
|
||||||
|
@ -15,20 +15,11 @@ namespace Pong;
|
|||||||
|
|
||||||
public static class PongUniverse
|
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<LiteNetLibServer>();
|
|
||||||
server.BehaviourController.AddBehaviour<NetworkManager>();
|
|
||||||
server.Start(8888, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
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.BehaviourController.AddBehaviour<NetworkManager>();
|
||||||
client.Connect("localhost", 8888);
|
client.Connect(server, port);
|
||||||
|
|
||||||
DrawManager drawManager = universe.InstantiateUniverseObject().SetUniverseObject("Draw Manager").BehaviourController.AddBehaviour<DrawManager>();
|
DrawManager drawManager = universe.InstantiateUniverseObject().SetUniverseObject("Draw Manager").BehaviourController.AddBehaviour<DrawManager>();
|
||||||
universe.InstantiateUniverseObject().SetUniverseObject("Triangle Batcher", drawManager.UniverseObject).BehaviourController.AddBehaviour<TriangleBatcher>();
|
universe.InstantiateUniverseObject().SetUniverseObject("Triangle Batcher", drawManager.UniverseObject).BehaviourController.AddBehaviour<TriangleBatcher>();
|
||||||
@ -50,8 +41,21 @@ public static class PongUniverse
|
|||||||
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<Transform2D>().SetTransform(position: new Vector2D(250f, 250f), scale: Vector2D.One * .25f)
|
||||||
.BehaviourController.AddBehaviour<TextScoreBehaviour>(false);
|
.BehaviourController.AddBehaviour<TextScoreBehaviour>(false);
|
||||||
|
|
||||||
|
return universe;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static IUniverse ApplyPongServer(Universe universe, int port)
|
||||||
|
{
|
||||||
|
LiteNetLibServer server = universe.InstantiateUniverseObject().SetUniverseObject("Server").BehaviourController.AddBehaviour<LiteNetLibServer>();
|
||||||
|
server.BehaviourController.AddBehaviour<NetworkManager>();
|
||||||
|
server.Start(port, 2);
|
||||||
|
|
||||||
|
return universe;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IUniverse ApplyPongUniverse(Universe universe)
|
||||||
|
{
|
||||||
universe.InstantiateUniverseObject().SetUniverseObject("Update Manager").BehaviourController.AddBehaviour<UpdateManager>();
|
universe.InstantiateUniverseObject().SetUniverseObject("Update Manager").BehaviourController.AddBehaviour<UpdateManager>();
|
||||||
universe.InstantiateUniverseObject().SetUniverseObject("Coroutine Manager").BehaviourController.AddBehaviour<CoroutineManager>();
|
universe.InstantiateUniverseObject().SetUniverseObject("Coroutine Manager").BehaviourController.AddBehaviour<CoroutineManager>();
|
||||||
universe.InstantiateUniverseObject().SetUniverseObject("Tween Manager").BehaviourController.AddBehaviour<TweenManager>();
|
universe.InstantiateUniverseObject().SetUniverseObject("Tween Manager").BehaviourController.AddBehaviour<TweenManager>();
|
||||||
@ -116,10 +120,4 @@ public static class PongUniverse
|
|||||||
|
|
||||||
return universe;
|
return universe;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IUniverse GetPongUniverse(bool isServerEnabled, bool isClientEnabled)
|
|
||||||
{
|
|
||||||
Universe universe = new();
|
|
||||||
return ApplyPongUniverse(universe, isServerEnabled, isClientEnabled);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user