//public void SaveToXML(string filename) { // using (var stream = new FileStream(filename, FileMode.Create)) { // var XML = new XmlSerializer(typeof(Zone),new Type[] { typeof(Rectangle),}); // XML.Serialize(stream, this); // } //} /// <summary> /// Moves the zone and character when using WASD ingame /// </summary> /// <param name="state">An updating KeyboardState</param> /// <param name="ui">The main user interface</param> public void Move(KeyboardState state, UI ui) { if (Game1.currentGameState == Game1.GameState.InGame) { if (!Game1.notAllowedKeys.Contains(Keys.D) && vector.X - pc.MoveSpeed >= graphics.resX - graphics.texture.Width && state.IsKeyDown(Keys.D) && pc.getX() >= graphics.resX / 2 - pc.Graphics.texture.Width / 2) { vector.X -= pc.MoveSpeed; grid.vectorDelta.X -= pc.MoveSpeed; if (hasBackground) { background.vector.X -= background.Speed; } } else if (!Game1.notAllowedKeys.Contains(Keys.D) && pc.getX() + pc.MoveSpeed <= graphics.resX - pc.Graphics.texture.Width && state.IsKeyDown(Keys.D)) { pc.setX(pc.getX() + pc.MoveSpeed); } if (!Game1.notAllowedKeys.Contains(Keys.A) && vector.X + pc.MoveSpeed <= 0 && state.IsKeyDown(Keys.A) && pc.getX() <= graphics.resX / 2 - pc.Graphics.texture.Width / 2) { vector.X += pc.MoveSpeed; grid.vectorDelta.X += pc.MoveSpeed; if (hasBackground) { background.vector.X += background.Speed; } } else if (!Game1.notAllowedKeys.Contains(Keys.A) && pc.getX() >= 0 && state.IsKeyDown(Keys.A)) { pc.setX(pc.getX() - pc.MoveSpeed); } if (!Game1.notAllowedKeys.Contains(Keys.S) && vector.Y - pc.MoveSpeed >= graphics.resY - graphics.texture.Height && state.IsKeyDown(Keys.S) && pc.getY() >= graphics.resY / 2 - pc.Graphics.texture.Height) { vector.Y -= pc.MoveSpeed; grid.vectorDelta.Y -= pc.MoveSpeed; if (hasBackground) { background.vector.Y -= background.Speed; } } else if (!Game1.notAllowedKeys.Contains(Keys.S) && pc.getY() + pc.MoveSpeed <= (graphics.resY - pc.Graphics.texture.Height) && state.IsKeyDown(Keys.S)) { pc.setY(pc.getY() + pc.MoveSpeed); } if (!Game1.notAllowedKeys.Contains(Keys.W) && vector.Y + pc.MoveSpeed <= 0 && state.IsKeyDown(Keys.W) && pc.getY() <= graphics.resY / 2 - pc.Graphics.texture.Height / 2) { vector.Y += pc.MoveSpeed; grid.vectorDelta.Y += pc.MoveSpeed; if (hasBackground) { background.vector.Y += background.Speed; } } else if (!Game1.notAllowedKeys.Contains(Keys.W) && pc.getY() - pc.MoveSpeed >= 0 && state.IsKeyDown(Keys.W)) { pc.setY(pc.getY() - pc.MoveSpeed); } } }