コード例 #1
0
 private void HandleMouseInput(InputState input) {
     // Press left button down: start drag
     if (input.LastMouseState.LeftButton == ButtonState.Released &&
         input.CurrentMouseState.LeftButton == ButtonState.Pressed) {                
         if (input.LastKeyboardState.IsKeyDown(Keys.LeftShift) && _selectedMenuObstacle != null && _selectedColorObstacle != null) {
             _obstacles.Add(_selectedMenuObstacle.Clone(CoarsePosition(MouseWorldPos), _selectedColorObstacle.Color, _world));
         } else {
             if (ObstacleAt(MouseWorldPos, _obstacles) != null) {
                 _draggedObstacle = ObstacleAt(MouseWorldPos, _obstacles);
             } else if (ObstacleAt(MouseScreenPos, _menuObstacles) != null) {
                 _selectedMenuObstacle = ObstacleAt(MouseScreenPos, _menuObstacles);
             } else if (ObstacleAt(MouseScreenPos, _colorObstacles) != null) {
                 _selectedColorObstacle = ObstacleAt(MouseScreenPos, _colorObstacles);
             }
         }
     }
     // Lift left button up: end drag
     else if (_input.LastMouseState.LeftButton == ButtonState.Pressed &&
              _input.CurrentMouseState.LeftButton == ButtonState.Released) {
         _draggedObstacle = null;
     } else if (_input.LastMouseState.RightButton == ButtonState.Released &&
              _input.CurrentMouseState.RightButton == ButtonState.Pressed) {
         RemoveObstacle(ObstacleAt(MouseWorldPos, _obstacles));
     }
     // Move picked obstacle
     if (_draggedObstacle != null) {
         _draggedObstacle.Position = CoarsePosition(MouseWorldPos);
     }
 }
コード例 #2
0
 private void HandleKeyboardInput(InputState input) {
     if (input.IsNewKeyPress(Keys.S)) {
         SaveTrack();
     } else if (input.IsNewKeyPress(Keys.L)) {
         var openDialog = new CommonOpenFileDialog("Load Track");
         openDialog.Title = "Load Track";
         openDialog.InitialDirectory = TrackDir;
         openDialog.Filters.Add(new CommonFileDialogFilter("Track XML Files", "xml"));
         var result = openDialog.ShowDialog();
         if (!result.Canceled && openDialog.FileNames.Count > 0) {
             LoadTrack(openDialog.FileNames.First());
         }
     } 
 }