using System; using Microsoft.Xna.Framework.Input; using Pong.Behaviours; using Syntriax.Engine.Core; using Syntriax.Engine.Core.Factory; using Syntriax.Engine.Integration.MonoGame; using Syntriax.Engine.Network; using Syntriax.Engine.Physics2D; using Syntriax.Engine.Systems.Tween; namespace Pong; public static class PongUniverse { public static IUniverse ApplyPongClient(Universe universe, string server, int port) { LiteNetLibClient client = universe.InstantiateUniverseObject().SetUniverseObject("Client").BehaviourController.AddBehaviour(); client.BehaviourController.AddBehaviour(); universe.OnPreUpdate.AddOneTimeListener((_, _) => client.Connect(server, port)); 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("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); return universe; } public static IUniverse ApplyPongServer(Universe universe, int port) { LiteNetLibServer server = universe.InstantiateUniverseObject().SetUniverseObject("Server").BehaviourController.AddBehaviour(); server.BehaviourController.AddBehaviour(); universe.OnPreUpdate.AddOneTimeListener((_, _) => 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(); universe.InstantiateUniverseObject().SetUniverseObject("Physics Engine 2D").BehaviourController.AddBehaviour(); //////////////////////////////////////////////////////////////////////////////////// PongManager pongManager = universe.InstantiateUniverseObject().SetUniverseObject("Pong Game Manager") .BehaviourController.AddBehaviour(5); universe.InstantiateUniverseObject().SetUniverseObject("Pong Game Starter", parent: pongManager.UniverseObject) .BehaviourController.AddBehaviour() .BehaviourController.AddBehaviour().SetTransform(position: new Vector2D(-24, 250f), scale: Vector2D.One * .5f) .BehaviourController.AddBehaviour