Пример #1
0
 /// <summary>
 /// Update graphics.
 /// </summary>
 public new void Update()
 {
     if (moving)
     {
         firstModule.PositionFollow();
         head.SetPosition(firstModule.Position);
         eraser.ScaledHeight += SimpleMath.Abs(lastModule.Direction.Y) * step;
         eraser.ScaledWidth  += SimpleMath.Abs(lastModule.Direction.X) * step;
     }
 }
Пример #2
0
        /// <summary>
        /// Listens to input and applies it to either player or worm.
        /// </summary>
        public override void Update()
        {
            #region Input
            if (!Visible && ((Input.ButtonPressed(5, playerNumber)) || // Join game
                             (playerNumber == 5 && Input.KeyPressed(Key.Space))))
            {
                Visible = true;
                return;
            }
            else
            {
                if (playerNumber == 5) // Keyboard
                {
                    xMovement = 0;
                    yMovement = 0;
                    if (Input.KeyDown(Key.W))
                    {
                        yMovement -= 100;
                    }
                    if (Input.KeyDown(Key.A))
                    {
                        xMovement -= 100;
                    }
                    if (Input.KeyDown(Key.S))
                    {
                        yMovement += 100;
                    }
                    if (Input.KeyDown(Key.D))
                    {
                        xMovement += 100;
                    }
                    if (Input.KeyPressed(Key.Space))
                    {
                        Posess();
                    }
                }
                else // Gamepad
                {
                    xMovement = Input.GetAxis(JoyAxis.X, playerNumber);
                    yMovement = Input.GetAxis(JoyAxis.Y, playerNumber);

                    if (Input.ButtonPressed(5, playerNumber)) // RB
                    {
                        Posess();
                    }
                }
            }
            #endregion

            #region Player
            if (worm != null)
            {
                goto Playerskip;
            }
            float deadZone = 10;
            if (SimpleMath.Abs(xMovement) > deadZone)
            {
                X += xMovement * playerSpeed;
            }
            if (SimpleMath.Abs(yMovement) > deadZone)
            {
                Y += yMovement * playerSpeed;
            }
            Playerskip :;
            #endregion

            #region Worm
            if (worm == null)
            {
                goto Wormskip;
            }
            Position = worm.firstModule.Position;
            deadZone = 90;
            if (yMovement < -deadZone)
            {
                worm.Direction = Colors.directions[0]; // UP
            }
            if (xMovement < -deadZone)
            {
                worm.Direction = Colors.directions[1]; // LEFT
            }
            if (yMovement > deadZone)
            {
                worm.Direction = Colors.directions[2]; // DOWN
            }
            if (xMovement > deadZone)
            {
                worm.Direction = Colors.directions[3]; // RIGHT
            }
            Wormskip :;
            #endregion ;
        }