OpenBve.Program.keyDownEvent C# (CSharp) Méthode

keyDownEvent() static private méthode

static private keyDownEvent ( object sender, KeyboardKeyEventArgs e ) : void
sender object
e KeyboardKeyEventArgs
Résultat void
		internal static void keyDownEvent(object sender, KeyboardKeyEventArgs e)
		{
			double speedModified = (ShiftPressed ? 2.0 : 1.0) * (ControlPressed ? 4.0 : 1.0) * (AltPressed ? 8.0 : 1.0);
			switch (e.Key)
			{
				case Key.ShiftLeft:
				case Key.ShiftRight:
					ShiftPressed = true;
					break;
				case Key.ControlLeft:
				case Key.ControlRight:
					ControlPressed = true;
					break;
				case Key.LAlt:
				case Key.RAlt:
					AltPressed = true;
					break;
				case Key.F5:
					if (CurrentRoute != null)
					{
						CurrentlyLoading = true;
						Renderer.OptionInterface = false;
						if (!Interface.CurrentOptions.LoadingBackground)
						{
							Renderer.RenderScene(0.0);
							currentGameWindow.SwapBuffers();
							Bitmap bitmap = new Bitmap(Renderer.ScreenWidth, Renderer.ScreenHeight, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
							BitmapData bData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadWrite, bitmap.PixelFormat);
							GL.ReadPixels(0, 0, Renderer.ScreenWidth, Renderer.ScreenHeight, OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, bData.Scan0);
							bitmap.UnlockBits(bData);
							bitmap.RotateFlip(RotateFlipType.RotateNoneFlipY);
							Renderer.TextureLoadingBkg = TextureManager.RegisterTexture(bitmap, false);
							bitmap.Dispose();
						}
						World.CameraAlignment a = World.CameraCurrentAlignment;
						if (LoadRoute())
						{
							World.CameraCurrentAlignment = a;
							TrackManager.UpdateTrackFollower(ref World.CameraTrackFollower, -1.0, true, false);
							TrackManager.UpdateTrackFollower(ref World.CameraTrackFollower, a.TrackPosition, true, false);
							World.CameraAlignmentDirection = new World.CameraAlignment();
							World.CameraAlignmentSpeed = new World.CameraAlignment();
							ObjectManager.UpdateVisibility(a.TrackPosition, true);
							ObjectManager.UpdateAnimatedWorldObjects(0.0, true);
						}
						
						CurrentlyLoading = false;
						Renderer.OptionInterface = true;
						TextureManager.UnregisterTexture(ref Renderer.TextureLoadingBkg);
					}
					break;
				case Key.F7:
					OpenFileDialog Dialog = new OpenFileDialog();
					Dialog.CheckFileExists = true;
					Dialog.Filter = "CSV/RW files|*.csv;*.rw|All files|*";
					if (Dialog.ShowDialog() == DialogResult.OK)
					{
						Application.DoEvents();
						CurrentlyLoading = true;
						CurrentRoute = Dialog.FileName;
						LoadRoute();
						ObjectManager.UpdateAnimatedWorldObjects(0.0, true);
						CurrentlyLoading = false;
						UpdateCaption();
					}
					break;
				case Key.F8:
					if (Program.CurrentlyLoading == true)
					{
						//Don't allow the user to update the settings during loading, bad idea....
						break;
					}
					if (formOptions.ShowOptions() == DialogResult.OK)
					{
						UpdateGraphicsSettings();
					}
					Application.DoEvents();
					break;
				case Key.F9:
					if (Interface.MessageCount != 0)
					{
						formMessages.ShowMessages();
						Application.DoEvents();
					}
					break;
				case Key.F10:
					Renderer.RenderStatsOverlay = !Renderer.RenderStatsOverlay;
					break;
				case Key.A:
				case Key.Keypad4:
					World.CameraAlignmentDirection.Position.X = -World.CameraExteriorTopSpeed*speedModified;
					CpuReducedMode = false;
					break;
				case Key.D:
				case Key.Keypad6:
					World.CameraAlignmentDirection.Position.X = World.CameraExteriorTopSpeed*speedModified;
					CpuReducedMode = false;
					break;
				case Key.Keypad2:
					World.CameraAlignmentDirection.Position.Y = -World.CameraExteriorTopSpeed*speedModified;
					CpuReducedMode = false;
					break;
				case Key.Keypad8:
					World.CameraAlignmentDirection.Position.Y = World.CameraExteriorTopSpeed*speedModified;
					CpuReducedMode = false;
					break;
				case Key.W:
				case Key.Keypad9:
					World.CameraAlignmentDirection.TrackPosition = World.CameraExteriorTopSpeed*speedModified;
					CpuReducedMode = false;
					break;
				case Key.S:
				case Key.Keypad3:
					World.CameraAlignmentDirection.TrackPosition = -World.CameraExteriorTopSpeed*speedModified;
					CpuReducedMode = false;
					break;
				case Key.Left:
					World.CameraAlignmentDirection.Yaw = -World.CameraExteriorTopAngularSpeed*speedModified;
					CpuReducedMode = false;
					break;
				case Key.Right:
					World.CameraAlignmentDirection.Yaw = World.CameraExteriorTopAngularSpeed*speedModified;
					CpuReducedMode = false;
					break;
				case Key.Up:
					World.CameraAlignmentDirection.Pitch = World.CameraExteriorTopAngularSpeed*speedModified;
					CpuReducedMode = false;
					break;
				case Key.Down:
					World.CameraAlignmentDirection.Pitch = -World.CameraExteriorTopAngularSpeed*speedModified;
					CpuReducedMode = false;
					break;
				case Key.KeypadDivide:
					World.CameraAlignmentDirection.Roll = -World.CameraExteriorTopAngularSpeed*speedModified;
					CpuReducedMode = false;
					break;
				case Key.KeypadMultiply:
					World.CameraAlignmentDirection.Roll = World.CameraExteriorTopAngularSpeed*speedModified;
					CpuReducedMode = false;
					break;
				case Key.Keypad0:
					World.CameraAlignmentDirection.Zoom = World.CameraZoomTopSpeed*speedModified;
					CpuReducedMode = false;
					break;
				case Key.KeypadPeriod:
					World.CameraAlignmentDirection.Zoom = -World.CameraZoomTopSpeed*speedModified;
					CpuReducedMode = false;
					break;
				case Key.Keypad1:
					Game.ApplyPointOfInterest(-1, true);
					CpuReducedMode = false;
					break;
				case Key.Keypad7:
					Game.ApplyPointOfInterest(1, true);
					CpuReducedMode = false;
					break;
				case Key.PageUp:
					JumpToStation(1);
					CpuReducedMode = false;
					break;
				case Key.PageDown:
					JumpToStation(-1);
					CpuReducedMode = false;
					break;
				case Key.Keypad5:
					World.CameraCurrentAlignment.Yaw = 0.0;
					World.CameraCurrentAlignment.Pitch = 0.0;
					World.CameraCurrentAlignment.Roll = 0.0;
					World.CameraCurrentAlignment.Position = new World.Vector3D(0.0, 2.5, 0.0);
					World.CameraCurrentAlignment.Zoom = 0.0;
					World.CameraAlignmentDirection = new World.CameraAlignment();
					World.CameraAlignmentSpeed = new World.CameraAlignment();
					World.VerticalViewingAngle = World.OriginalVerticalViewingAngle;
					UpdateViewport();
					World.UpdateAbsoluteCamera(0.0);
					World.UpdateViewingDistances();
					CpuReducedMode = false;
					break;
				case Key.F:
					Renderer.OptionWireframe = !Renderer.OptionWireframe;
					CpuReducedMode = false;
					if (Renderer.OptionWireframe)
					{
						GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Line);
					}
					else
					{
						GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill);
					}
					break;
				case Key.N:
					Renderer.OptionNormals = !Renderer.OptionNormals;
					CpuReducedMode = false;
					break;
				case Key.E:
					Renderer.OptionEvents = !Renderer.OptionEvents;
					CpuReducedMode = false;
					break;
				case Key.C:
					CpuAutomaticMode = !CpuAutomaticMode;
					CpuReducedMode = false;
					break;
				case Key.I:
					Renderer.OptionInterface = !Renderer.OptionInterface;
					CpuReducedMode = false;
					break;
				case Key.M:
					SoundManager.Mute = !SoundManager.Mute;
					break;
				case Key.Plus:
				case Key.KeypadPlus:
					if (!JumpToPositionEnabled)
					{
						JumpToPositionEnabled = true;
						JumpToPositionValue = "+";
						CpuReducedMode = false;
					}
					break;
				case Key.Minus:
				case Key.KeypadMinus:
					if (!JumpToPositionEnabled)
					{
						JumpToPositionEnabled = true;
						JumpToPositionValue = "-";
						CpuReducedMode = false;
					}
					break;
				case Key.Number0:
				case Key.Number1:
				case Key.Number2:
				case Key.Number3:
				case Key.Number4:
				case Key.Number5:
				case Key.Number6:
				case Key.Number7:
				case Key.Number8:
				case Key.Number9:
					if (!JumpToPositionEnabled)
					{
						JumpToPositionEnabled = true;
						JumpToPositionValue = string.Empty;
					}
					JumpToPositionValue += char.ConvertFromUtf32(48 + e.Key - Key.Number0);
					CpuReducedMode = false;
					break;
				case Key.Period:
					if (!JumpToPositionEnabled)
					{
						JumpToPositionEnabled = true;
						JumpToPositionValue = "0.";
					}
					else if (JumpToPositionValue.IndexOf('.') == -1)
					{
						JumpToPositionValue += ".";
					}
					CpuReducedMode = false;
					break;
				case Key.BackSpace:
					if (JumpToPositionEnabled && JumpToPositionValue.Length != 0)
					{
						JumpToPositionValue = JumpToPositionValue.Substring(0, JumpToPositionValue.Length - 1);
						CpuReducedMode = false;
					}
					break;
				case Key.Enter:
					if (JumpToPositionEnabled)
					{
						if (JumpToPositionValue.Length != 0)
						{
							int direction;
							if (JumpToPositionValue[0] == '-')
							{
								JumpToPositionValue = JumpToPositionValue.Substring(1);
								direction = -1;
							}
							else if (JumpToPositionValue[0] == '+')
							{
								JumpToPositionValue = JumpToPositionValue.Substring(1);
								direction = 1;
							}
							else
							{
								direction = 0;
							}
							double value;
							if (double.TryParse(JumpToPositionValue, NumberStyles.Float, CultureInfo.InvariantCulture,
								out value))
								if (value < TrackManager.CurrentTrack.Elements[TrackManager.CurrentTrack.Elements.Length - 1].StartingTrackPosition + 100 && value > MinimumJumpToPositionValue - 100)
							{
								if (direction != 0)
								{
									value = World.CameraTrackFollower.TrackPosition + (double) direction*value;
								}
								TrackManager.UpdateTrackFollower(ref World.CameraTrackFollower, value, true, false);
								World.CameraCurrentAlignment.TrackPosition = value;
								World.UpdateAbsoluteCamera(0.0);
								World.UpdateViewingDistances();
		                        }
							}
						}
						JumpToPositionEnabled = false;
						CpuReducedMode = false;
					break;
				case Key.Escape:
					JumpToPositionEnabled = false;
					CpuReducedMode = false;
					break;

			}
		}