Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 7
0
        protected override void OnAdd(CobaltEntity entity)
        {
            base.OnAdd(entity);

            var collisionComponent = entity.Get <CollisionComponent>();

            if (collisionComponent.OnCollide != null)
            {
                this.collisionComponentsWithCallbacks.Add(collisionComponent);
            }
        }
Ejemplo n.º 8
0
        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));
        }
Ejemplo n.º 9
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));
        }
Ejemplo n.º 10
0
        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));
        }
Ejemplo n.º 11
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));
        }
Ejemplo n.º 12
0
        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}");
        }