コード例 #1
0
        protected bool grabThing()
        {
            bool collision = true;
            foreach (EnemyFormation ef in _enemyFormations)
            {
                collision = true;
                if (_pointerPos.X < ef.getScreenPosition().X)
                    collision = false;
                else if (_pointerPos.X > ef.getScreenPosition().X + ef.getTotalRows() * Soldier.WIDTH)
                    collision = false;
                else if (_pointerPos.Y < ef.getScreenPosition().Y)
                    collision = false;
                else if (_pointerPos.Y > ef.getScreenPosition().Y + ef.getTotalRows() * Soldier.HEIGHT)
                    collision = false;

                if (collision)
                {
                    _grabbedThing = ef;
                    _grabbedThing.selected = true;
                    return true;
                }
            }
            foreach (Terrain t in _terrain)
            {
                collision = true;
                if (_pointerPos.X < t.getPosition().X - getMapOffset().X)
                    collision = false;
                else if (_pointerPos.X > t.getPosition().X - getMapOffset().X + t.getWidth())
                    collision = false;
                else if (_pointerPos.Y < t.getPosition().Y - getMapOffset().Y)
                    collision = false;
                else if (_pointerPos.Y > t.getPosition().Y - getMapOffset().Y + t.getHeight())
                    collision = false;

                if (collision)
                {
                    _grabbedThing = t;
                    _grabbedThing.selected = true;
                    return true;
                }
            }

            return false;
        }
コード例 #2
0
 public LevelEditorScreen(PikeAndShotGame game, LevelConstructorForm form)
     : base(game)
 {
     _levelData = form.getCurrLevel();
     _pointerSprite = new Sprite(PikeAndShotGame.SWORD_POINTER, new Rectangle(0, 0, 18, 18), 18, 18);
     prevMouseState = Mouse.GetState();
     _grabbedThing = null;
     _grabbedThings = new ArrayList(30);
     _listener = form;
     _oldMousePosition = new Vector2(0f, 0f);
     _boxSelecting = false;
     _boxMoving = false;
 }
コード例 #3
0
        protected override void getInput(TimeSpan timeSpan)
        {
            keyboardState = Keyboard.GetState();
            gamePadState = GamePad.GetState(PlayerIndex.One);
            mouseState = Mouse.GetState();

            _pointerPos = new Vector2(mouseState.X, mouseState.Y) / PikeAndShotGame.ZOOM;

            if (_game.IsActive)
            {
                // [dsl] Zoom stuff
                if (mouseState.ScrollWheelValue > prevMouseState.ScrollWheelValue)
                    _currentZoom = Math.Max(_currentZoom - 1, 0);
                else if (mouseState.ScrollWheelValue < prevMouseState.ScrollWheelValue)
                    _currentZoom = Math.Min(_currentZoom + 1, _zoomLevels.Count() - 1);
                PikeAndShotGame.ZOOM = _zoomLevels[_currentZoom];
                if (mouseState.X > 0 && mouseState.X < PikeAndShotGame.SCREENWIDTH && mouseState.Y > 0 && mouseState.Y < PikeAndShotGame.SCREENHEIGHT)
                {
                    if (mouseState.LeftButton == Microsoft.Xna.Framework.Input.ButtonState.Pressed && prevMouseState.LeftButton == Microsoft.Xna.Framework.Input.ButtonState.Released)
                    {
                        if (_boxSelecting)
                            moveFormations();
                        else if (!grabThing())
                            startSelectorBox();
                    }
                    else if (mouseState.LeftButton == Microsoft.Xna.Framework.Input.ButtonState.Pressed && prevMouseState.LeftButton == Microsoft.Xna.Framework.Input.ButtonState.Pressed)
                    {
                        //When we aren't grabbing a formation we are grabbing the map
                        if (getGrabbedThing() == null)
                        {
                            if (_boxSelecting && !_boxMoving)
                            {
                                _endingMousePosition = new Vector2(_mapOffset.X + _pointerPos.X, _mapOffset.Y + _pointerPos.Y);
                            }
                        }
                    }
                    else if (mouseState.LeftButton == Microsoft.Xna.Framework.Input.ButtonState.Released && prevMouseState.LeftButton == Microsoft.Xna.Framework.Input.ButtonState.Pressed)
                    {
                        //release the formation you are holding
                        if (_grabbedThing != null)
                        {
                            if (_grabbedThing is EnemyFormation)
                                _listener.updateLevelFromScreen(_grabbedThing.index, _grabbedThing.getPosition().X, _grabbedThing.getPosition().Y);
                            else
                                _listener.updateLevelFromScreenTerrain(_grabbedThing.index, _grabbedThing.getPosition().X, _grabbedThing.getPosition().Y);

                            _grabbedThing = null;
                        }
                        else if (_boxSelecting && !_boxMoving)
                        {
                            grabThings();
                        }
                        if (_boxMoving)
                        {
                            dropFormations();
                        }
                    }
                }
                if (keyboardState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.C) && previousKeyboardState.IsKeyUp(Microsoft.Xna.Framework.Input.Keys.C))
                {
                    if (_boxMoving)
                    {
                        copyFormations();
                    }
                    else if (_grabbedThing != null)
                    {
                        Vector2 position = _grabbedThing.getPosition();
                        int index = _grabbedThing.index;
                        if (_grabbedThing is EnemyFormation)
                        {
                            _listener.copyFormation(_grabbedThing.index);
                            _listener.updateLevelFromScreen(index, position.X, position.Y);
                        }
                        else
                        {
                            _listener.copyTerrain(_grabbedThing.index);
                            _listener.updateLevelFromScreenTerrain(index, position.X, position.Y);
                        }

                        _grabbedThing = null;
                    }
                }
                else if (keyboardState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.E) && previousKeyboardState.IsKeyUp(Microsoft.Xna.Framework.Input.Keys.E))
                {
                    if (_boxMoving)
                    {
                        deleteFormations();
                    }
                    else if (_grabbedThing != null)
                    {
                        if (_grabbedThing is EnemyFormation)
                            _listener.deleteFormation(_grabbedThing.index);
                        else
                            _listener.deleteTerrain(_grabbedThing.index);
                        _grabbedThing = null;
                    }
                }
                else if (keyboardState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Left))
                {
                    _mapOffset.X -= (float)timeSpan.TotalMilliseconds;
                }
                else if (keyboardState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Right))
                {
                    _mapOffset.X += (float)timeSpan.TotalMilliseconds;
                }
                else if (keyboardState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Up))
                {
                    _mapOffset.Y -= (float)timeSpan.TotalMilliseconds;
                }
                else if (keyboardState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Down))
                {
                    _mapOffset.Y += (float)timeSpan.TotalMilliseconds;
                }

                if (keyboardState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.D) && previousKeyboardState.IsKeyUp(Microsoft.Xna.Framework.Input.Keys.D))
                    toggleDrawDots();
            }

            base.getInput(timeSpan);

            previousKeyboardState = keyboardState;
            previousGamePadState = gamePadState;
            prevMouseState = mouseState;
        }