public void AddEntity(Entity entity, BackgroundLayer layer, bool isPointGravity = false) { entity.Level = this; this.entities.Add(entity); layer.AddSprite(entity); if (isPointGravity) { gravitycontroller.AddBody(entity.Body); } entity.Body.OnCollision += Body_OnCollision; }
public void InitLayers(Level Level) { ContentManager Content = Level.Content; GraphicsDevice GraphicsDevice = Level.Game.GraphicsDevice; Camera Camera = Level.Game.Camera; Texture2D backgroundSheet = Content.Load <Texture2D>("Sprites/backgrounds2"); if (Name == "Plains") { BackgroundLayer bushes = new BackgroundLayer(GraphicsDevice, Camera, new Point(11 * 16, Level.Height - 48), new Point(48 * 16, 32), new Point(Level.Width, 32), Vector2.One); Sprite singleBush = new Sprite(backgroundSheet, new Rectangle(0, 24, 32, 16)); Sprite doubleBush = new Sprite(backgroundSheet, new Rectangle(32, 24, 48, 16)); Sprite tripleBush = new Sprite(backgroundSheet, new Rectangle(80, 24, 64, 16)); Sprite singleBushFlipped = new Sprite(backgroundSheet, new Rectangle(0, 24, 32, 16)); Sprite doubleBushFlipped = new Sprite(backgroundSheet, new Rectangle(32, 24, 48, 16)); Sprite tripleBushFlipped = new Sprite(backgroundSheet, new Rectangle(80, 24, 64, 16)); singleBushFlipped.SpriteEffects = SpriteEffects.FlipVertically; doubleBushFlipped.SpriteEffects = SpriteEffects.FlipVertically; tripleBushFlipped.SpriteEffects = SpriteEffects.FlipVertically; bushes.AddSprite(tripleBush, 0, 0); bushes.AddSprite(singleBush, 12 * 16, 0); bushes.AddSprite(doubleBush, 30 * 16, 0); bushes.AddSprite(tripleBushFlipped, 0, 16); bushes.AddSprite(singleBushFlipped, 12 * 16, 16); bushes.AddSprite(doubleBushFlipped, 30 * 16, 16); BackgroundLayer hills = new BackgroundLayer(GraphicsDevice, Camera, new Point(0, Level.Height - 67), new Point(48 * 16, 67), new Point(Level.Width, 67), new Vector2(0.7f, 1f)); Sprite bigHill = new Sprite(backgroundSheet, new Rectangle(192, 5, 80, 35)); Sprite bigHillFlipped = new Sprite(backgroundSheet, new Rectangle(192, 5, 80, 35)); bigHillFlipped.SpriteEffects = SpriteEffects.FlipVertically; hills.AddSprite(bigHillFlipped, 0, 35); hills.AddSprite(bigHill, -32, 32); hills.AddSprite(bigHill, 32, 32); hills.AddSprite(bigHill, 0, 0); hills.AddSprite(bigHill, -24, 35); hills.AddSprite(bigHill, 24, 35); //Sprite smallHill = new Sprite(backgroundSheet, new Rectangle(144, 21, 48, 19)); hills.AddSprite(bigHillFlipped, 16 * 16, 35 + 16); hills.AddSprite(bigHill, -32 + 16 * 16, 32 + 16); hills.AddSprite(bigHill, 32 + 16 * 16, 32 + 16); hills.AddSprite(bigHill, 16 * 16, 16); hills.AddSprite(bigHill, -24 + 16 * 16, 35 + 16); hills.AddSprite(bigHill, 24 + 16 * 16, 35 + 16); BackgroundLayer clouds = new BackgroundLayer(GraphicsDevice, Camera, new Point(8 * 16, Level.Height - 12 * 16), new Point(48 * 16, 40), new Point(Level.Width, 40), new Vector2(0.5f, 1f)); Sprite singleCloud = new Sprite(backgroundSheet, new Rectangle(0, 0, 32, 24)); Sprite doubleCloud = new Sprite(backgroundSheet, new Rectangle(32, 0, 48, 24)); Sprite tripleCloud = new Sprite(backgroundSheet, new Rectangle(80, 0, 64, 24)); clouds.AddSprite(singleCloud, 0, 16); clouds.AddSprite(singleCloud, 11 * 16, 0); clouds.AddSprite(tripleCloud, 15 * 16, 16); clouds.AddSprite(doubleCloud, 26 * 16, 0); backgroundLayers = new[] { clouds, hills, bushes }; } else if (Name == "DarkPlains") { BackgroundLayer clouds = new BackgroundLayer(GraphicsDevice, Camera, new Point(8 * 16, Level.Height - 12 * 16), new Point(48 * 16, 40), new Point(Level.Width, 40), new Vector2(0.5f, 1f)); Sprite singleCloud = new Sprite(backgroundSheet, new Rectangle(0, 0, 32, 24)); Sprite doubleCloud = new Sprite(backgroundSheet, new Rectangle(32, 0, 48, 24)); Sprite tripleCloud = new Sprite(backgroundSheet, new Rectangle(80, 0, 64, 24)); clouds.AddSprite(singleCloud, 0, 16); clouds.AddSprite(singleCloud, 11 * 16, 0); clouds.AddSprite(tripleCloud, 15 * 16, 16); clouds.AddSprite(doubleCloud, 26 * 16, 0); backgroundLayers = new[] { clouds }; } else if (Name == "Space") { backgroundSheet = Content.Load <Texture2D>("Sprites/SpaceBackground"); BackgroundLayer space = new BackgroundLayer(GraphicsDevice, Camera, new Point(8 * 16, Level.Height - 12 * 16), new Point(Level.Width, 64), new Point(Level.Width, 64), new Vector2(0.25f, 1f)); BackgroundLayer lowerSpace = new BackgroundLayer(GraphicsDevice, Camera, new Point(8 * 16, Level.Height - 8 * 16), new Point(20 * 16, 64), new Point(Level.Width, 64), new Vector2(0.25f, 1f)); Sprite mushroomPlanet = new Sprite(backgroundSheet, new Rectangle(0, 0, 24, 24)); Sprite bigDipper = new Sprite(backgroundSheet, new Rectangle(32, 0, 31, 32)); Sprite ringPlanet = new Sprite(backgroundSheet, new Rectangle(63, 0, 18, 18)); Sprite orion = new Sprite(backgroundSheet, new Rectangle(82, 0, 30, 32)); Sprite stars = new Sprite(backgroundSheet, new Rectangle(0, 32, 64, 32)); Sprite bigStar = new Sprite(backgroundSheet, new Rectangle(64, 32, 64, 32)); Sprite starCastles = new Sprite(backgroundSheet, new Rectangle(0, 78, 50, 64)); Sprite bowserShip = new Sprite(backgroundSheet, new Rectangle(64, 65, 64, 63)); space.AddSprite(stars, 0, 0); space.AddSprite(mushroomPlanet, 5 * 16, 0); space.AddSprite(bigDipper, 7 * 16, 0); space.AddSprite(stars, 9 * 16, 0); space.AddSprite(ringPlanet, 14 * 16, 0); space.AddSprite(orion, 16 * 16, 0); space.AddSprite(stars, 19 * 16, 0); space.AddSprite(bigStar, 24 * 16, 0); space.AddSprite(stars, 27 * 16, 0); space.AddSprite(starCastles, 32 * 16, 0); space.AddSprite(stars, 37 * 16, 0); space.AddSprite(bowserShip, 42 * 16, 0); lowerSpace.AddSprite(orion, 0, 0); lowerSpace.AddSprite(stars, 3 * 16, 0); lowerSpace.AddSprite(bigDipper, 8 * 16, 0); lowerSpace.AddSprite(orion, 11 * 16, 0); lowerSpace.AddSprite(stars, 14 * 16, 0); backgroundLayers = new[] { space, lowerSpace }; } else { backgroundLayers = new BackgroundLayer[] {}; } foreach (BackgroundLayer layer in backgroundLayers) { layer.Render(); } }