/// <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; } }
/// <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 ; }