world builder

pull/5/head
Evan Hemsley 2019-06-14 17:03:56 -07:00
parent 56bf01f03c
commit f88870e2d8
4 changed files with 101 additions and 77 deletions

View File

@ -1,14 +1,11 @@
using System.Collections.Generic;
using System.Linq;
namespace Encompass { namespace Encompass {
public class World { public class World {
EntityManager entityManager; EntityManager entityManager;
ComponentManager componentManager; ComponentManager componentManager;
public World() { internal World(EntityManager entityManager, ComponentManager componentManager) {
this.componentManager = new ComponentManager(); this.entityManager = entityManager;
this.entityManager = new EntityManager(componentManager); this.componentManager = componentManager;
} }
public void Update() { public void Update() {

26
src/WorldBuilder.cs Normal file
View File

@ -0,0 +1,26 @@
using System.Collections.Generic;
namespace Encompass {
public class WorldBuilder {
private ComponentManager componentManager;
private EntityManager entityManager;
public WorldBuilder() {
componentManager = new ComponentManager();
entityManager = new EntityManager(componentManager);
}
public Entity CreateEntity() {
return this.entityManager.CreateEntity();
}
public World Build() {
var world = new World(this.entityManager, this.componentManager);
this.componentManager.ActivateComponents();
this.componentManager.RemoveComponents();
return world;
}
}
}

View File

@ -11,5 +11,6 @@
<Content Include="World.cs" /> <Content Include="World.cs" />
<Content Include="EntityManager.cs" /> <Content Include="EntityManager.cs" />
<Content Include="ComponentManager.cs" /> <Content Include="ComponentManager.cs" />
<Content Include="WorldBuilder.cs" />
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -1,96 +1,96 @@
using NUnit.Framework; using NUnit.Framework;
using System.Linq; using System.Linq;
namespace Encompass using Encompass;
{
namespace Tests { namespace Tests {
struct MockComponent : IComponent { struct MockComponent : IComponent {
public string myString; public string myString;
public int myInt; public int myInt;
}
public class EntityTest
{
[Test]
public void AddComponent()
{
var worldBuilder = new WorldBuilder();
var entity = worldBuilder.CreateEntity();
MockComponent mockComponent;
mockComponent.myInt = 3;
mockComponent.myString = "hello";
entity.AddComponent<MockComponent>(mockComponent);
var world = worldBuilder.Build();
// world.Update();
Assert.IsTrue(entity.HasComponent<MockComponent>());
Assert.AreEqual(mockComponent, entity.GetComponent<MockComponent>());
} }
public class EntityTest [Test]
public void GetComponents()
{ {
[Test] var worldBuilder = new WorldBuilder();
public void AddComponent() var entity = worldBuilder.CreateEntity();
{
var world = new World();
var entity = world.CreateEntity();
MockComponent mockComponent; MockComponent mockComponentA;
mockComponent.myInt = 3; mockComponentA.myInt = 3;
mockComponent.myString = "hello"; mockComponentA.myString = "hello";
entity.AddComponent<MockComponent>(mockComponent); MockComponent mockComponentB;
mockComponentB.myInt = 5;
mockComponentB.myString = "wassup";
world.Update(); MockComponent mockComponentC;
mockComponentC.myInt = 1;
mockComponentC.myString = "howdy";
Assert.IsTrue(entity.HasComponent<MockComponent>()); entity.AddComponent<MockComponent>(mockComponentA);
Assert.AreEqual(mockComponent, entity.GetComponent<MockComponent>()); entity.AddComponent<MockComponent>(mockComponentB);
} entity.AddComponent<MockComponent>(mockComponentC);
[Test] var world = worldBuilder.Build();
public void GetComponents()
{
var world = new World();
var entity = world.CreateEntity();
MockComponent mockComponentA; Assert.Contains(mockComponentA, entity.GetComponents<MockComponent>().ToList());
mockComponentA.myInt = 3; Assert.Contains(mockComponentB, entity.GetComponents<MockComponent>().ToList());
mockComponentA.myString = "hello"; Assert.Contains(mockComponentC, entity.GetComponents<MockComponent>().ToList());
}
MockComponent mockComponentB; [Test]
mockComponentB.myInt = 5; public void GetComponent()
mockComponentB.myString = "wassup"; {
var worldBuilder = new WorldBuilder();
var entity = worldBuilder.CreateEntity();
MockComponent mockComponentC; MockComponent mockComponent;
mockComponentC.myInt = 1; mockComponent.myInt = 3;
mockComponentC.myString = "howdy"; mockComponent.myString = "hello";
entity.AddComponent<MockComponent>(mockComponentA); entity.AddComponent<MockComponent>(mockComponent);
entity.AddComponent<MockComponent>(mockComponentB);
entity.AddComponent<MockComponent>(mockComponentC);
world.Update(); var world = worldBuilder.Build();
Assert.Contains(mockComponentA, entity.GetComponents<MockComponent>().ToList()); Assert.AreEqual(mockComponent, entity.GetComponent<MockComponent>());
Assert.Contains(mockComponentB, entity.GetComponents<MockComponent>().ToList()); }
Assert.Contains(mockComponentC, entity.GetComponents<MockComponent>().ToList());
}
[Test] [Test]
public void GetComponent() public void HasComponent()
{ {
var world = new World(); var worldBuilder = new WorldBuilder();
var entity = world.CreateEntity(); var entity = worldBuilder.CreateEntity();
MockComponent mockComponent; MockComponent mockComponent;
mockComponent.myInt = 3; mockComponent.myInt = 3;
mockComponent.myString = "hello"; mockComponent.myString = "hello";
entity.AddComponent<MockComponent>(mockComponent); entity.AddComponent<MockComponent>(mockComponent);
world.Update(); var world = worldBuilder.Build();
Assert.AreEqual(mockComponent, entity.GetComponent<MockComponent>()); Assert.IsTrue(entity.HasComponent<MockComponent>());
}
[Test]
public void HasComponent()
{
var world = new World();
var entity = world.CreateEntity();
MockComponent mockComponent;
mockComponent.myInt = 3;
mockComponent.myString = "hello";
entity.AddComponent<MockComponent>(mockComponent);
world.Update();
Assert.IsTrue(entity.HasComponent<MockComponent>());
}
} }
} }
} }