Pong/Scripts/Objects/Paddle.cs
Fries 65ef70f583 the enemy can now see when the screen is adjusted.
the scaling manager now controls when the various objects are active so stuff won't be null because of stuff running too fast or slow.
2023-06-02 17:15:44 -07:00

51 lines
1.1 KiB
C#

using Pong.Scripts.Data;
using Pong.Scripts.Managers;
namespace Pong.Scripts.Objects;
public partial class Paddle : BasePaddle
{
private double _verticalInput;
private readonly StringName _paddleUp = "paddle_up";
private readonly StringName _paddleDown = "paddle_down";
private bool _canMove = true;
private Vector2 _originalPosition;
public override void _Process(double delta)
{
_verticalInput = GetVerticalInput();
}
public override void _IntegrateForces(PhysicsDirectBodyState2D state)
{
if (!Running) return;
if (NewPosition.HasValue)
{
state.Transform = new Transform2D(0, NewPosition.Value);
NewPosition = null;
}
state.LinearVelocity = Vector2.Up * MoveSpeed.ByMeter() * _verticalInput;
}
/// <summary>
/// a method that returns a number that represents input on the vertical axis.
/// </summary>
/// <returns>1 for up, -1 for down, 0 for nothing.</returns>
private double GetVerticalInput()
{
if (Input.IsActionPressed(_paddleUp))
{
return 1;
}
if (Input.IsActionPressed(_paddleDown))
{
return -1;
}
return 0;
}
}