

FTCLib cung cấp các tính năng Gamepad được nâng cao. Các lớp này về bản chất là các phần mở rộng của các tính năng Gamepad tiêu chuẩn trong FTC SDK, nhưng với các phương thức triển khai dễ sử dụng hơn.
GamepadKeys
Cung cấp các biểu diễn enum cho nút bấm, D-Pad, bumper, và trigger. Các nút bấm, D-Pad và bumper được lưu trong GamepadKeys.Button, còn trigger được lưu trong GamepadKeys.Trigger.
Buttons
Y
X
A
B
LEFT_BUMPER
RIGHT_BUMPER
BACK
START
DPAD_UP
DPAD_DOWN
DPAD_LEFT
DPAD_RIGHT
LEFT_STICK_BUTTON
RIGHT_STICK_BUTTON
Trigger
LEFT_TRIGGER
RIGHT_TRIGGER
GamepadEx
Là một phần mở rộng của lớp Gamepad tiêu chuẩn trong FTC SDK. Được khởi tạo đơn giản từ một đối tượng Gamepad. Cung cấp sáu phương thức lấy giá trị trực quan:
getButton()
Với một GamepadKeys.Button, phương thức này sẽ kiểm tra xem nút đó có đang được nhấn hay không, trả về giá trị boolean cho biết nút có được nhấn hay không.
getTrigger()
Với một GamepadKeys.Trigger, phương thức này sẽ trả về giá trị của trigger
(0 nếu không nhấn, 1 nếu nhấn hoàn toàn).
getLeftY()
Trả về giá trị trục y của joystick bên trái
(lưu ý rằng giá trị trả về là ngược dấu so với giá trị trả về từ đối tượng gamepad tiêu chuẩn).
getRightY()
Trả về giá trị trục y của joystick bên phải.
getLeftX()
Trả về giá trị trục x của joystick bên trái.
getRightX()
Trả về giá trị trục x của joystick bên phải.
KeyReader
Interface KeyReader là nền tảng cho các đối tượng theo dõi một nút hoặc trigger riêng lẻ trên gamepad.
Tất cả các lớp Reader phải triển khai các hàm sau:
readValue(): Đọc giá trị hiện tại của phím (true hoặc false) và cập nhật các giá trị được sử dụng bởi reader. Không trả về giá trị. Phương thức này phải được gọi một lần trong mỗi vòng lặp.
isDown(): Kiểm tra xem phím hiện tại có đang được nhấn hay không. Trả về giá trị boolean cho biết phím có đang được nhấn.
wasJustPressed(): Trả về boolean cho biết phím đang được nhấn, nhưng chỉ khi trước đó phím chưa được nhấn.
wasJustReleased(): Trả về boolean cho biết phím không còn được nhấn, nhưng chỉ khi trước đó phím đang được nhấn.
stateJustChanged: Trả về boolean cho biết giá trị của phím vừa mới thay đổi.
TriggerReader
Lớp TriggerReader triển khai interface KeyReader.
Do trigger trong GamepadEx trả về một giá trị kiểu double, lớp TriggerReader diễn giải một giá trị lớn hơn 0.5 là trigger đang được nhấn.
Đoạn sau tạo một TriggerReader mới với một GamepadEx và một GamepadKeys.Trigger.
Dưới đây là các phương thức khác nhau có thể sử dụng với trigger reader.
ButtonReader
Lớp ButtonReader triển khai interface KeyReader. Nó kiểm tra xem một nút đang được nhấn, vừa được nhấn, vừa được thả hay đang được giữ.
ButtonReader(GamepadEx gamepad, GamepadKeys.Button button):
Tạo một ButtonReader mới với một GamepadEx và một GamepadKeys.Button.ButtonReader(BooleanSupplier supplier):
Tạo một ButtonReader mới sử dụng giá trị từ một BooleanSupplier thay vì gamepad, cho phép đọc trạng thái giá trị một cách dễ dàng mà không cần gamepad.
Các đối tượng GamepadEx thực chất đã chứa sẵn các ButtonReader.
Với mỗi GamepadKeys.Button, có một ButtonReader tương ứng được lưu trong một map.
Nó được lưu nội bộ dưới dạng Map<GamepadKeys.Button, ButtonReader>.
Điều này cho phép bạn sử dụng các tính năng này chỉ với lớp GamepadEx.
ToggleButtonReader
Lớp ToggleButtonReader mở rộng ButtonReader và bổ sung khả năng lấy trạng thái toggle.
Phương thức readValue() cần được chạy trong vòng lặp để lấy trạng thái của toggle.
getState(): Lấy giá trị toggle của một nút hoặc một boolean supplier.

