private bool BoundingBoxesOverlap(CobaltEntity e1, CobaltEntity e2) { var p1 = e1.Get <PositionComponent>(); var s1 = e1.Get <SpriteComponent>(); var p2 = e2.Get <PositionComponent>(); var s2 = e2.Get <SpriteComponent>(); var r1Left = p1.X; var r1Right = p1.X + s1.Rectangle.Width; var r1Top = p1.Y; var r1Bottom = p1.Y + s1.Rectangle.Height; var r2Left = p2.X; var r2Right = p2.X + s2.Rectangle.Width; var r2Top = p2.Y; var r2Bottom = p2.Y + s2.Rectangle.Height; // AABB. Adapted from: https://gamedev.stackexchange.com/a/913 return(!(r2Left > r1Right || r2Right < r1Left || r2Top > r1Bottom || r2Bottom < r1Top)); }
public void MoveToKeyboardOverridesExistingKeyboardComponent() { // The only way to test this is to change the velocity and see if the new velocity number is used // Set velocity to 100, press D, wait one second; we should move 100px to the right. var expectedVelocity = 100; var entity = new CobaltEntity(); entity.MoveToKeyboard(1); entity.MoveToKeyboard(expectedVelocity); KeyboardSystem.GenerateKeysCallback(() => { // Press D to move X positively return(new Keys[] { Keys.D }); }); // Simulate keypress var keyboardSystem = new KeyboardSystem(); keyboardSystem.Add(entity); keyboardSystem.Update(1); var velocitySystem = new VelocitySystem(); velocitySystem.Add(entity); velocitySystem.Update(1); Assert.That(entity.Get <PositionComponent>().X, Is.EqualTo(expectedVelocity)); }
public void GetGetsSetComponent() { var entity = new CobaltEntity(); var expected = new PositionComponent(1, 2); entity.Set(expected); Assert.That(entity.Get <PositionComponent>(), Is.EqualTo(expected)); }
public void MoveToKeyboardSetsKeyboardComponent() { var entity = new CobaltEntity(); entity.MoveToKeyboard(100); var actual = entity.Get <KeyboardComponent>(); Assert.That(actual, Is.Not.Null); }
public void SetOverwritesPreviousComponentOfThatType() { var entity = new CobaltEntity(); var expected = new PositionComponent(1, 2); entity.Set(new PositionComponent(9, 9)); entity.Set(expected); Assert.That(entity.Get <PositionComponent>(), Is.EqualTo(expected)); }
public void ConstructorAddsZeroValuePositionComponent() { var entity = new CobaltEntity(); Assert.IsTrue(entity.Has <PositionComponent>()); var actual = entity.Get <PositionComponent>(); Assert.That(actual.X, Is.EqualTo(0)); Assert.That(actual.Y, Is.EqualTo(0)); }
protected override void OnAdd(CobaltEntity entity) { base.OnAdd(entity); var collisionComponent = entity.Get <CollisionComponent>(); if (collisionComponent.OnCollide != null) { this.collisionComponentsWithCallbacks.Add(collisionComponent); } }
public void MoveToKeyboardAddsVelocityComponentWithWASDCallbacksIfOneDoesntExist() { var entity = new CobaltEntity(); entity.MoveToKeyboard(10); Assert.That(entity.Has <VelocityComponent>()); var actual = entity.Get <VelocityComponent>(); Assert.That(actual.X, Is.EqualTo(0)); Assert.That(actual.Y, Is.EqualTo(0)); }
public void VelocityAddsVelocityComponent() { var entity = new CobaltEntity(); var expected = new VelocityComponent(11, 22); entity.Velocity(expected.X, expected.Y); var actual = entity.Get <VelocityComponent>(); Assert.That(actual.X, Is.EqualTo(expected.X)); Assert.That(actual.Y, Is.EqualTo(expected.Y)); }
public void MoveToKeyboardAddsPositionComponentIfOneDoesntExist() { var entity = new CobaltEntity(); entity.MoveToKeyboard(10); Assert.That(entity.Has <PositionComponent>()); var actual = entity.Get <PositionComponent>(); Assert.That(actual.X, Is.EqualTo(0)); Assert.That(actual.Y, Is.EqualTo(0)); }
public void MoveSetsPositionComponent() { var entity = new CobaltEntity(); var expected = new PositionComponent(171, 201); entity.Move(expected.X, expected.Y); var actual = entity.Get <PositionComponent>(); // They're value types, they're two separate instances. Assert.That(actual.X, Is.EqualTo(expected.X)); Assert.That(actual.Y, Is.EqualTo(expected.Y)); }
public void MoveToKeyboardDoesntOverrideExistingPositionComponent() { var expectedX = 100; var expectedY = 200; var entity = new CobaltEntity().Move(expectedX, expectedY); entity.MoveToKeyboard(10); var actual = entity.Get <PositionComponent>(); Assert.That(actual.X, Is.EqualTo(expectedX)); Assert.That(actual.Y, Is.EqualTo(expectedY)); }
public WorldMapState() : base() { this.world = World.Instance; var worldMap = world.WorldMap; // Create one entity per tile for (var i = 0; i < worldMap.Tiles.Length; i++) { var sourceTile = worldMap.Tiles[i]; this.Add(new CobaltEntity() .Tile(worldMap.Tileset, sourceTile.SourceTileX, sourceTile.SourceTileY, WorldMap.TileWidth, WorldMap.TileHeight) .Move(sourceTile.X, sourceTile.Y)); } var player = new CobaltEntity("remove me").Sprite("Content/Images/Player.png") .MoveToKeyboard(100) .Move(world.WorldMap.StartingPosition.Item1, world.WorldMap.StartingPosition.Item2); this.Add(player); Console.WriteLine($"Moved player to {player.Get<PositionComponent>().AsVector2}"); }