protected override void OnUpdateFrame(FrameEventArgs e) { base.OnUpdateFrame(e); //float[] lightPos = l.getPosition(); //if (Keyboard[Key.Plus]) //{ // l.setPosition(lightPos[0], lightPos[1]+0.1f, lightPos[2], lightPos[3]); //} //else if (Keyboard[Key.Minus]) //{ // l.setPosition(lightPos[0], lightPos[1] - 0.1f, lightPos[2], lightPos[3]); //} if (map.isEnemyDefeated() || map.isFriendlyDefeated()) { string statement = map.isEnemyDefeated() ? "YOU WON! Replay a new game? (Y/N)" : "YOU LOST! Replay a new game?"; if (this.WindowState == WindowState.Fullscreen) { Console.WriteLine(statement); string answer = ""; while (!(string.Compare(answer, "Y") == 0) || !(string.Compare(answer, "N") == 0) || !(string.Compare(answer, "y") == 0) || !(string.Compare(answer, "n") == 0)) { answer = Console.ReadLine(); if (string.Compare(answer, "Y") == 0 || string.Compare(answer, "y") == 0) { instance.LoadMap(mapFile); break; } else if (string.Compare(answer, "N") == 0 || string.Compare(answer, "n") == 0) { Exit(); Console.WriteLine("GAME OVER!"); break; } } } else { gameOver = true; } } if (Keyboard[Key.Escape]) { Exit(); } if (Keyboard[Key.F4]) { ReferencePlane.setVisibleAxis(ReferencePlane.XYZ); } else if (Keyboard[Key.F5]) { ReferencePlane.setVisibleAxis(ReferencePlane.XZ); } else if (Keyboard[Key.F6]) { ReferencePlane.setVisibleAxis(ReferencePlane.XY); } else if (Keyboard[Key.F7]) { ReferencePlane.setVisibleAxis(ReferencePlane.NONE); } else if (Keyboard[Key.F11]) { cameraEnabled = false; } else if (Keyboard[Key.F12]) { cameraEnabled = true; } mousePosition = new Point(Mouse.X, Mouse.Y); mouseDelta = new Point(mousePosition.X - PointToClient(WindowCenter).X, mousePosition.Y - PointToClient(WindowCenter).Y); if (!mouseDelta.Equals(nullDelta)) { if (camera.MouseDeltaMotion(mouseDelta.X, mouseDelta.Y)) { mouseDelta.X = mouseDelta.Y = 0; System.Windows.Forms.Cursor.Position = WindowCenter; } } if (cameraEnabled && (camera != rmcUnitCamera)) { Camera.Action action = Camera.Action.NONE; if (Keyboard[Key.Up]) { action |= Camera.Action.MOVE_UP; } if (Keyboard[Key.Down]) { action |= Camera.Action.MOVE_DOWN; } if (Keyboard[Key.Left]) { action |= Camera.Action.MOVE_LEFT; } if (Keyboard[Key.Right]) { action |= Camera.Action.MOVE_RIGHT; } if (Keyboard[Key.W]) { action |= Camera.Action.ROTATE_UP; } if (Keyboard[Key.S]) { action |= Camera.Action.ROTATE_DOWN; } if (Keyboard[Key.D]) { action |= Camera.Action.ROTATE_RIGHT; } if (Keyboard[Key.A]) { action |= Camera.Action.ROTATE_LEFT; } if (Keyboard[Key.Q]) { action |= Camera.Action.ROLL_LEFT; } if (Keyboard[Key.E]) { action |= Camera.Action.ROLL_RIGHT; } if (action != Camera.Action.NONE) { camera.PerformActions(action); } else { camera.IdleAction(); } } else if (camera == rmcUnitCamera) { if (Keyboard[Key.Space]) { map.HoverRemoteControlUnit(); } if (Keyboard[Key.Left]) { map.MoveRemoteControlUnitLeft(); } if (Keyboard[Key.Right]) { map.MoveRemoteControlUnitRight(); } if (Keyboard[Key.Up]) { map.MoveRemoteControlUnitUp(); } if (Keyboard[Key.Down]) { map.MoveRemoteControlUnitDown(); } if (Keyboard[Key.ShiftLeft]) { map.GrabRobot(); } if (Keyboard[Key.AltLeft]) { map.FireProjectileFromRobot(); } float[] rmcUnitPos = map.GetRemoteControlUnitPosition(); rmcUnitCamera.LookAt(rmcUnitPos[0], 6.0f, 8.0f - rmcUnitPos[1], rmcUnitPos[0], 3.0f, 4.0f - rmcUnitPos[1], 0.0f, 1.0f, 0.0f); } }