Read analoge stick positions
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
#pragma once
|
||||
#include "../GPU/gpu_types.hpp"
|
||||
#include "raw_controller.hpp"
|
||||
|
||||
namespace JabyEngine {
|
||||
@@ -55,6 +56,48 @@ namespace JabyEngine {
|
||||
}
|
||||
};
|
||||
|
||||
class AnalogeController : public GenericController {
|
||||
public:
|
||||
enum struct Button : uint16_t {
|
||||
L2 = static_cast<uint16_t>(GenericButton::D0),
|
||||
R2 = static_cast<uint16_t>(GenericButton::D1),
|
||||
L1 = static_cast<uint16_t>(GenericButton::D2),
|
||||
R1 = static_cast<uint16_t>(GenericButton::D3),
|
||||
Triangle = static_cast<uint16_t>(GenericButton::D4),
|
||||
Circle = static_cast<uint16_t>(GenericButton::D5),
|
||||
Cross = static_cast<uint16_t>(GenericButton::D6),
|
||||
Square = static_cast<uint16_t>(GenericButton::D7),
|
||||
SEL = static_cast<uint16_t>(GenericButton::D8),
|
||||
L3 = static_cast<uint16_t>(GenericButton::D9),
|
||||
R3 = static_cast<uint16_t>(GenericButton::D10),
|
||||
ST = static_cast<uint16_t>(GenericButton::D11),
|
||||
Up = static_cast<uint16_t>(GenericButton::D12),
|
||||
Right = static_cast<uint16_t>(GenericButton::D13),
|
||||
Down = static_cast<uint16_t>(GenericButton::D14),
|
||||
Left = static_cast<uint16_t>(GenericButton::D15)
|
||||
};
|
||||
|
||||
private:
|
||||
uint8_t read_special_byte(size_t idx) const {
|
||||
return reinterpret_cast<const uint8_t(&)[4]>(this->special)[idx];
|
||||
}
|
||||
|
||||
public:
|
||||
GPU::PositionI16 get_right_stick_pos() const {
|
||||
const uint8_t joy_x = AnalogeController::read_special_byte(0);
|
||||
const uint8_t joy_y = AnalogeController::read_special_byte(1);
|
||||
|
||||
return GPU::PositionI16::create(joy_x - 0x80, joy_y - 0x80);
|
||||
}
|
||||
|
||||
GPU::PositionI16 get_left_stick_pos() const {
|
||||
const uint8_t joy_x = AnalogeController::read_special_byte(2);
|
||||
const uint8_t joy_y = AnalogeController::read_special_byte(3);
|
||||
|
||||
return GPU::PositionI16::create(joy_x - 0x80, joy_y - 0x80);
|
||||
}
|
||||
};
|
||||
|
||||
using GenericButtonState = GenericController::ButtonState;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user