Example #1
0
        public ChickenSpawnSystem(GameApp gameApp) : base(
                Aspect.All(typeof(ChickenComponent)))
        {
            _gameApp       = gameApp;
            _entityFactory = _gameApp.Services.GetService <EntityFactory>();
            _mapInfo       = _gameApp.Services.GetService <MapInfo>();

            _r = new Random();

            _largeChickenSpawning  = new ChickenSpawnBounds(400, 800);
            _mediumChickenSpawning = new ChickenSpawnBounds(200, 600);
            _smallChickenSpawning  = new ChickenSpawnBounds(200, 500);
        }
Example #2
0
        private Entity SpawnChicken(ChickenType chickenType)
        {
            var chicken = _entityFactory.CreateChicken(chickenType);

            var transform      = chicken.GetComponent <Transform2D>();
            var rigidbody      = chicken.GetComponent <RigidBody2D>();
            var animatedSprite = chicken.GetComponent <AnimatedSprite>();

            Vector2            size     = Vector2.Zero;
            float              depth    = 0f;
            float              speed    = 0f;
            ChickenSpawnBounds spawning = null;
            float              posY;
            float              posX;
            SpriteEffects      effects;
            Vector2            velocity;

            switch (chickenType)
            {
            case ChickenType.LARGE:
            {
                size     = new Vector2(LargeChicken.Width, LargeChicken.Height);
                speed    = LargeChicken.Speed;
                depth    = LargeChicken.Depth;
                spawning = _largeChickenSpawning;
                break;
            }

            case ChickenType.MEDIUM:
            {
                size     = new Vector2(MediumChicken.Width, MediumChicken.Height);
                speed    = MediumChicken.Speed;
                depth    = MediumChicken.Depth;
                spawning = _mediumChickenSpawning;
                break;
            }

            case ChickenType.SMALL:
            {
                size     = new Vector2(SmallChicken.Width, SmallChicken.Height);
                speed    = SmallChicken.Speed;
                depth    = SmallChicken.Depth;
                spawning = _smallChickenSpawning;
                break;
            }
            }

            transform.Size       = size;
            animatedSprite.Depth = depth;
            animatedSprite.Play("fly");

            // Random  Y Position
            posY = _r.Next(spawning.MinY, spawning.MaxY + 1);

            // Random Direction
            if (GetRandomChickenFlyDirection() == ChickenFlyDirection.LEFT)
            {
                //LEFT
                posX     = _mapInfo.Right;
                effects  = SpriteEffects.None;
                velocity = Transform2D.Left;
            }
            else
            {
                // RIGHT
                posX     = _mapInfo.Left - transform.Bounds.Width;
                effects  = SpriteEffects.FlipHorizontally;
                velocity = Transform2D.Right;
            }

            transform.Position     = new Vector2(posX, posY);
            animatedSprite.Effects = effects;
            rigidbody.Velocity     = velocity * speed;

            return(chicken);
        }