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); }
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); }