using Encompass; using PongFE.Components; using PongFE.Messages; namespace PongFE.Engines { [Reads( typeof(SpawnBallAfterDestroyComponent), typeof(IncreaseScoreAfterDestroyComponent) )] [Receives(typeof(DestroyMessage))] [Sends( typeof(BallSpawnMessage), typeof(ScoreMessage) )] public class DestroyEngine : Engine { public override void Update(double dt) { foreach (ref readonly var message in ReadMessages()) { if (HasComponent(message.Entity)) { ref readonly var respawnComponent = ref GetComponent(message.Entity); SendMessage( new BallSpawnMessage( new MoonTools.Structs.Position2D(640, 360), respawnComponent.Speed, 16, 16 ), respawnComponent.Seconds ); } if (HasComponent(message.Entity)) { SendMessage(new ScoreMessage(message.DestroyedBy)); } Destroy(message.Entity); } } } }