From 918621db73a5a8d30fd79624ec61b36ac86aa50c Mon Sep 17 00:00:00 2001 From: Evan Hemsley Date: Wed, 17 Jul 2019 11:46:54 -0700 Subject: [PATCH] adds SomeComponent to Engine and renames Some to SomeMessage --- encompass-cs/Engine.cs | 12 ++++++++- test/EngineTest.cs | 60 ++++++++++++++++++++++++++++++++++++------ 2 files changed, 63 insertions(+), 9 deletions(-) diff --git a/encompass-cs/Engine.cs b/encompass-cs/Engine.cs index 5090cde..ab44af6 100644 --- a/encompass-cs/Engine.cs +++ b/encompass-cs/Engine.cs @@ -205,7 +205,7 @@ namespace Encompass return messageManager.GetMessagesByType(); } - protected bool Some() where TMessage : struct, IMessage + protected bool SomeMessage() where TMessage : struct, IMessage { if (!readTypes.Contains(typeof(TMessage))) { @@ -215,6 +215,16 @@ namespace Encompass return messageManager.GetMessagesByType().Any(); } + protected bool SomeComponent() where TComponent : struct, IComponent + { + if (!readTypes.Contains(typeof(TComponent))) + { + throw new IllegalReadException("Engine {0} tried to read undeclared Component {1}", this.GetType().Name, typeof(TComponent).Name); + } + + return componentManager.GetActiveComponentsByType().Any(); + } + protected void Destroy(Guid entityID) { entityManager.MarkForDestroy(entityID); diff --git a/test/EngineTest.cs b/test/EngineTest.cs index 1ae33f6..95b6fe9 100644 --- a/test/EngineTest.cs +++ b/test/EngineTest.cs @@ -292,20 +292,20 @@ namespace Tests } [Reads(typeof(MockMessage))] - class SomeTestEngine : Engine + class SomeMessageTestEngine : Engine { public override void Update(double dt) { - someTest = this.Some(); + someTest = this.SomeMessage(); } } [Test] - public void Some() + public void SomeMessage() { var worldBuilder = new WorldBuilder(); worldBuilder.AddEngine(new EmitMockMessageEngine()); - worldBuilder.AddEngine(new SomeTestEngine()); + worldBuilder.AddEngine(new SomeMessageTestEngine()); var world = worldBuilder.Build(); @@ -314,26 +314,70 @@ namespace Tests Assert.That(someTest, Is.True); } - class UndeclaredSomeEngine : Engine + class UndeclaredSomeMessageEngine : Engine { public override void Update(double dt) { - someTest = this.Some(); + someTest = this.SomeMessage(); } } [Test] - public void IllegalSome() + public void UndeclaredSomeMessage() { var worldBuilder = new WorldBuilder(); worldBuilder.AddEngine(new EmitMockMessageEngine()); - worldBuilder.AddEngine(new UndeclaredSomeEngine()); + worldBuilder.AddEngine(new UndeclaredSomeMessageEngine()); var world = worldBuilder.Build(); Assert.Throws(() => world.Update(0.01f)); } + [Reads(typeof(MockComponent))] + class SomeComponentTestEngine : Engine + { + public override void Update(double dt) + { + Assert.IsTrue(SomeComponent()); + } + } + + [Test] + public void SomeComponent() + { + var worldBuilder = new WorldBuilder(); + + var entity = worldBuilder.CreateEntity(); + worldBuilder.AddComponent(entity, new MockComponent()); + + var world = worldBuilder.Build(); + + world.Update(0.01); + } + + class UndeclaredSomeComponentEngine : Engine + { + public override void Update(double dt) + { + SomeComponent(); + } + } + + [Test] + public void UndeclaredSomeComponent() + { + var worldBuilder = new WorldBuilder(); + worldBuilder.AddEngine(new UndeclaredSomeComponentEngine()); + + var entity = worldBuilder.CreateEntity(); + worldBuilder.AddComponent(entity, new MockComponent()); + + var world = worldBuilder.Build(); + + Assert.Throws(() => world.Update(0.01)); + } + static ValueTuple pairA; static ValueTuple pairB;