public void HandleBackground() { for (int i = 0; i < 16; i++) { if (BackgroundImages.Count < i) { Sprite s = new Sprite(Content.GetTexture("background1.png")); s.Position = new Vector2f((float)(s.Texture.Size.X * (i - 1)) - MAPXOFFSET, 225 - MAPYOFFSET); BackgroundImages.Add(s); } } for (int i = 0; i < 16; i++) { if (BackgroundImagesFar.Count < i) { Sprite s = new Sprite(Content.GetTexture("background1Far.png")); s.Position = new Vector2f((float)(s.Texture.Size.X * (i - 1)) - MAPXOFFSET, 300 - MAPYOFFSET); BackgroundImagesFar.Add(s); } } for (int i = 0; i < 150; i++) { if (BackgroundTracks.Count < i) { Sprite s = new Sprite(Content.GetTexture("tracksBlur.png")); s.Position = new Vector2f((float)((s.Texture.Size.X) * (i - 1)) - MAPXOFFSET, 515 - MAPYOFFSET); BackgroundTracks.Add(s); } } for (int i = 0; i < BackgroundImages.Count; i++) //Main Background { BackgroundImages[i].Position -= new Vector2f(1, 0); if (BackgroundImages[i].Position.X < -BackgroundImages[i].Texture.Size.X - MAPXOFFSET) { BackgroundImages.RemoveAt(i); } } for (int i = 0; i < BackgroundImagesFar.Count; i++) //Far Background { BackgroundImagesFar[i].Position -= new Vector2f(.2f, 0); if (BackgroundImagesFar[i].Position.X < -BackgroundImagesFar[i].Texture.Size.X - MAPXOFFSET) { BackgroundImagesFar.RemoveAt(i); } } for (int i = 0; i < BackgroundTracks.Count; i++) //Tracks { BackgroundTracks[i].Position -= new Vector2f(20, 0); if (BackgroundTracks[i].Position.X < -BackgroundTracks[i].Texture.Size.X - MAPXOFFSET) { BackgroundTracks.RemoveAt(i); } } }
public override void Draw() { base.Draw(); //MainGame.Camera.Center = player.Pos - new Vector2f(0,90); Vector2f focus = player.Core + new Vector2f(Input.screenMousePos.X - MainGame.WindowSize.X / 2, Input.screenMousePos.Y - MainGame.WindowSize.Y / 2) * player.CrosshairCameraRatio; if (Helper.Distance(player.Core, focus) > PlayerAimSphereRadius) { focus = player.Core + Helper.PolarToVector2(PlayerAimSphereRadius, player.AimAngle, 1, 1);//player.Core + Helper.normalize(focus) * 100; } Helper.MoveCameraTo(MainGame.Camera, focus, .04f); if (MainGame.Camera.Center.Y > 180 - 90) { focus.Y = player.Pos.Y - 90; MainGame.Camera.Center = new Vector2f(MainGame.Camera.Center.X, 180 - 90); } //Camera2D.returnCamera(player.ActorCenter + // new Vector2(Main.screenMousePos.X - Main.graphics.PreferredBackBufferWidth / 2, // Main.screenMousePos.Y - Main.graphics.PreferredBackBufferHeight / 2) * // Main.graphics.GraphicsDevice.Viewport.AspectRatio / player.currentWeapon.viewDistance); MainGame.window.SetView(MainGame.window.DefaultView); shader.Shader.SetParameter("offsetY", MainGame.Camera.Center.Y); RectangleShape rs = new RectangleShape { Size = new Vector2f(800, 600) }; MainGame.window.Draw(rs, shader); MainGame.window.SetView(MainGame.Camera); //foreach (Sprite s in BackgroundImagesFar) //{ // s.Position = new Vector2f(s.Position.X, 280 - MAPYOFFSET + (player.Pos.Y / 15)); //} BackgroundImagesFar.ForEach(p => { p.Draw(MainGame.window, RenderStates.Default); }); BackgroundImages.ForEach(p => { p.Draw(MainGame.window, RenderStates.Default); }); BackgroundGameObjects.ForEach(p => { p.Draw(); }); BackgroundTracks.ForEach(p => { p.Draw(MainGame.window, RenderStates.Default); }); HandleBackground(); MainGame.window.Draw(new Sprite(Content.GetTexture("mapDecor.png"))); int insideY = 65; if (player.Pos.Y > insideY) { //trainSoundExterior.volume = 1; trainSound = trainSoundExterior; // trainSoundInterior.volume = 0; interiorAlpha += (255f - interiorAlpha) * .1f; } else { //trainSoundInterior.volume = 0; interiorAlpha *= .95f; //trainSound = trainSoundInterior; //trainSoundExterior.volume = 0; } Render.Draw(Content.GetTexture("mapInterior.png"), new Vector2f(0, 0), new Color(255, 255, 255, (byte)interiorAlpha), new Vector2f(0, 0), 1, 0f); // MainGame.window.Draw(new Sprite(Content.GetTexture("mapInterior.png"))); Players.ForEach(p => { p.Draw(); }); Projectiles.ForEach(p => { p.Draw(); }); GameObjects.ForEach(p => { p.Draw(); }); if (player.Pos.Y < insideY) { Render.Draw(Content.GetTexture("mapDecor.png"), new Vector2f(0, 0), new Color(255, 255, 255, (byte)(255 - interiorAlpha)), new Vector2f(0, 0), 1, 0f); } //MainGame.window.Draw(mapSprite); Gui.Draw(); }