public void HasComponent()
        {
            const int entityId = 0;

            var mapper    = new ComponentMapper <Transform2>(3, _ => { });
            var component = new Transform2();

            Assert.False(mapper.Has(entityId));

            mapper.Put(entityId, component);

            Assert.True(mapper.Has(entityId));
        }
        public void PutAndGetComponent()
        {
            const int entityId = 3;

            var mapper    = new ComponentMapper <Transform2>(1, _ => { });
            var component = new Transform2();

            mapper.Put(entityId, component);

            Assert.Equal(typeof(Transform2), mapper.ComponentType);
            Assert.True(mapper.Components.Count >= 1);
            Assert.Same(component, mapper.Get(entityId));
        }
        public void OnPut()
        {
            const int entityId = 3;

            var mapper    = new ComponentMapper <Transform2>(1, _ => { });
            var component = new Transform2();

            mapper.OnPut += (entId) =>
            {
                Assert.Equal(entityId, entId);
                Assert.Same(component, mapper.Get(entityId));
            };

            mapper.Put(entityId, component);
        }
        public void OnDelete()
        {
            const int entityId = 1;

            var mapper    = new ComponentMapper <Transform2>(2, _ => { });
            var component = new Transform2();

            mapper.OnDelete += (entId) =>
            {
                Assert.Equal(entityId, entId);
                Assert.False(mapper.Has(entityId));
            };

            mapper.Put(entityId, component);
            mapper.Delete(entityId);
        }
Beispiel #5
0
        public override void Update(GameTime gameTime)
        {
            var elapsedSeconds = gameTime.GetElapsedSeconds();

            foreach (var entityId in ActiveEntities)
            {
                var transform = _transformMapper.Get(entityId);
                var raindrop  = _raindropMapper.Get(entityId);

                raindrop.Velocity  += new Vector2(0, 500) * elapsedSeconds;
                transform.Position += raindrop.Velocity * elapsedSeconds;

                if (transform.Position.Y >= 480 && !_expiryMapper.Has(entityId))
                {
                    for (var i = 0; i < 3; i++)
                    {
                        var velocity = new Vector2(_random.NextSingle(-100, 100), -raindrop.Velocity.Y * _random.NextSingle(0.1f, 0.2f));
                        var id       = CreateRaindrop(transform.Position.SetY(479), velocity, (i + 1) * 0.5f);
                        _expiryMapper.Put(id, new Expiry(1f));
                    }

                    DestroyEntity(entityId);
                }
            }

            _spawnDelay -= gameTime.GetElapsedSeconds();

            if (_spawnDelay <= 0)
            {
                for (var q = 0; q < 50; q++)
                {
                    var position = new Vector2(_random.NextSingle(0, 800), _random.NextSingle(-240, -480));
                    CreateRaindrop(position);
                }

                _spawnDelay = _random.NextSingle(_minSpawnDelay, _maxSpawnDelay);
            }
        }